diff --git a/__init__.py b/__init__.py
new file mode 100644
index 00000000..46468510
--- /dev/null
+++ b/__init__.py
@@ -0,0 +1,3 @@
+import sys
+
+sys.path.append("..")
diff --git a/poetry.lock b/poetry.lock
index 238b977c..e999d3af 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -19,14 +19,14 @@ python-versions = "*"
[[package]]
name = "argcomplete"
-version = "1.12.2"
+version = "1.12.3"
description = "Bash tab completion for argparse"
category = "dev"
optional = false
python-versions = "*"
[package.dependencies]
-importlib-metadata = {version = ">=0.23,<4", markers = "python_version == \"3.7\""}
+importlib-metadata = {version = ">=0.23,<5", markers = "python_version == \"3.7\""}
[package.extras]
test = ["coverage", "flake8", "pexpect", "wheel"]
@@ -49,17 +49,17 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "attrs"
-version = "20.3.0"
+version = "21.2.0"
description = "Classes Without Boilerplate"
category = "dev"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[package.extras]
-dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"]
-docs = ["furo", "sphinx", "zope.interface"]
-tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"]
-tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"]
+dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"]
+docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
+tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"]
+tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"]
[[package]]
name = "behave"
@@ -80,7 +80,7 @@ docs = ["sphinx (>=1.6)", "sphinx-bootstrap-theme (>=0.6)"]
[[package]]
name = "black"
-version = "21.5b2"
+version = "21.6b0"
description = "The uncompromising code formatter."
category = "dev"
optional = false
@@ -104,7 +104,7 @@ uvloop = ["uvloop (>=0.15.2)"]
[[package]]
name = "cffi"
-version = "1.14.4"
+version = "1.14.5"
description = "Foreign Function Interface for Python calling C code."
category = "main"
optional = false
@@ -115,11 +115,15 @@ pycparser = "*"
[[package]]
name = "click"
-version = "7.1.2"
+version = "8.0.1"
description = "Composable command line interface toolkit"
category = "dev"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+python-versions = ">=3.6"
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
[[package]]
name = "colorama"
@@ -149,16 +153,30 @@ ssh = ["bcrypt (>=3.1.5)"]
test = ["pytest (>=6.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"]
[[package]]
-name = "future"
-version = "0.18.2"
-description = "Clean single-source support for Python 3 and 2"
+name = "ghp-import"
+version = "2.0.1"
+description = "Copy your docs directly to the gh-pages branch."
category = "dev"
optional = false
-python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
+python-versions = "*"
+
+[package.dependencies]
+python-dateutil = ">=2.8.1"
+
+[package.extras]
+dev = ["twine", "markdown", "flake8"]
+
+[[package]]
+name = "glob2"
+version = "0.7"
+description = "Version of the glob module that can capture patterns and supports recursive wildcards"
+category = "dev"
+optional = false
+python-versions = "*"
[[package]]
name = "importlib-metadata"
-version = "3.7.2"
+version = "4.5.0"
description = "Read metadata from Python packages"
category = "main"
optional = false
@@ -170,7 +188,7 @@ zipp = ">=0.5"
[package.extras]
docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
-testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "pytest-enabler", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"]
+testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"]
[[package]]
name = "iniconfig"
@@ -193,25 +211,17 @@ test = ["pytest", "pytest-trio", "pytest-asyncio", "testpath", "trio"]
[[package]]
name = "jinja2"
-version = "2.11.2"
+version = "3.0.1"
description = "A very fast and expressive template engine."
category = "dev"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+python-versions = ">=3.6"
[package.dependencies]
-MarkupSafe = ">=0.23"
+MarkupSafe = ">=2.0"
[package.extras]
-i18n = ["Babel (>=0.8)"]
-
-[[package]]
-name = "joblib"
-version = "0.17.0"
-description = "Lightweight pipelining: using Python functions as pipeline jobs."
-category = "dev"
-optional = false
-python-versions = ">=3.6"
+i18n = ["Babel (>=2.7)"]
[[package]]
name = "keyring"
@@ -232,36 +242,23 @@ docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy"]
[[package]]
-name = "livereload"
-version = "2.6.3"
-description = "Python LiveReload is an awesome tool for web developers"
+name = "mako"
+version = "1.1.4"
+description = "A super-fast templating language that borrows the best ideas from the existing templating languages."
category = "dev"
optional = false
-python-versions = "*"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[package.dependencies]
-six = "*"
-tornado = {version = "*", markers = "python_version > \"2.7\""}
-
-[[package]]
-name = "lunr"
-version = "0.5.8"
-description = "A Python implementation of Lunr.js"
-category = "dev"
-optional = false
-python-versions = "*"
-
-[package.dependencies]
-future = ">=0.16.0"
-nltk = {version = ">=3.2.5", optional = true, markers = "python_version > \"2.7\" and extra == \"languages\""}
-six = ">=1.11.0"
+MarkupSafe = ">=0.9.2"
[package.extras]
-languages = ["nltk (>=3.2.5,<3.5)", "nltk (>=3.2.5)"]
+babel = ["babel"]
+lingua = ["lingua"]
[[package]]
name = "markdown"
-version = "3.3.3"
+version = "3.3.4"
description = "Python implementation of Markdown."
category = "dev"
optional = false
@@ -275,28 +272,42 @@ testing = ["coverage", "pyyaml"]
[[package]]
name = "markupsafe"
-version = "1.1.1"
+version = "2.0.1"
description = "Safely add untrusted strings to HTML/XML markup."
category = "dev"
optional = false
-python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
+python-versions = ">=3.6"
+
+[[package]]
+name = "mergedeep"
+version = "1.3.4"
+description = "A deep merge function for 🐍."
+category = "dev"
+optional = false
+python-versions = ">=3.6"
[[package]]
name = "mkdocs"
-version = "1.1.2"
+version = "1.2.1"
description = "Project documentation with Markdown."
category = "dev"
optional = false
-python-versions = ">=3.5"
+python-versions = ">=3.6"
[package.dependencies]
click = ">=3.3"
+ghp-import = ">=1.0"
+importlib-metadata = ">=3.10"
Jinja2 = ">=2.10.1"
-livereload = ">=2.5.1"
-lunr = {version = "0.5.8", extras = ["languages"]}
Markdown = ">=3.2.1"
+mergedeep = ">=1.3.4"
+packaging = ">=20.5"
PyYAML = ">=3.10"
-tornado = ">=5.0"
+pyyaml-env-tag = ">=0.1"
+watchdog = ">=2.0"
+
+[package.extras]
+i18n = ["babel (>=2.9.0)"]
[[package]]
name = "mypy-extensions"
@@ -306,31 +317,9 @@ category = "dev"
optional = false
python-versions = "*"
-[[package]]
-name = "nltk"
-version = "3.5"
-description = "Natural Language Toolkit"
-category = "dev"
-optional = false
-python-versions = "*"
-
-[package.dependencies]
-click = "*"
-joblib = "*"
-regex = "*"
-tqdm = "*"
-
-[package.extras]
-all = ["requests", "numpy", "python-crfsuite", "scikit-learn", "twython", "pyparsing", "scipy", "matplotlib", "gensim"]
-corenlp = ["requests"]
-machine_learning = ["gensim", "numpy", "python-crfsuite", "scikit-learn", "scipy"]
-plot = ["matplotlib"]
-tgrep = ["pyparsing"]
-twitter = ["twython"]
-
[[package]]
name = "packaging"
-version = "20.8"
+version = "20.9"
description = "Core utilities for Python packages"
category = "dev"
optional = false
@@ -341,7 +330,7 @@ pyparsing = ">=2.0.2"
[[package]]
name = "parse"
-version = "1.18.0"
+version = "1.19.0"
description = "parse() is the opposite of format()"
category = "dev"
optional = false
@@ -447,6 +436,23 @@ toml = "*"
[package.extras]
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
+[[package]]
+name = "pytest-bdd"
+version = "4.0.2"
+description = "BDD for pytest"
+category = "dev"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+glob2 = "*"
+Mako = "*"
+parse = "*"
+parse-type = "*"
+py = "*"
+pytest = ">=4.3"
+six = ">=1.9.0"
+
[[package]]
name = "python-dateutil"
version = "2.8.1"
@@ -490,9 +496,20 @@ category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
+[[package]]
+name = "pyyaml-env-tag"
+version = "0.1"
+description = "A custom YAML tag for referencing environment variables in YAML files. "
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyyaml = "*"
+
[[package]]
name = "regex"
-version = "2020.11.13"
+version = "2021.4.4"
description = "Alternative regular expression module, to replace re."
category = "dev"
optional = false
@@ -500,7 +517,7 @@ python-versions = "*"
[[package]]
name = "secretstorage"
-version = "3.3.0"
+version = "3.3.1"
description = "Python bindings to FreeDesktop.org Secret Service API"
category = "main"
optional = false
@@ -512,7 +529,7 @@ jeepney = ">=0.6"
[[package]]
name = "six"
-version = "1.15.0"
+version = "1.16.0"
description = "Python 2 and 3 compatibility utilities"
category = "main"
optional = false
@@ -534,25 +551,6 @@ category = "dev"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
-[[package]]
-name = "tornado"
-version = "6.1"
-description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
-category = "dev"
-optional = false
-python-versions = ">= 3.5"
-
-[[package]]
-name = "tqdm"
-version = "4.54.1"
-description = "Fast, Extensible Progress Meter"
-category = "dev"
-optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
-
-[package.extras]
-dev = ["py-make (>=0.1.0)", "twine", "argopt", "pydoc-markdown", "wheel"]
-
[[package]]
name = "typed-ast"
version = "1.4.3"
@@ -563,7 +561,7 @@ python-versions = "*"
[[package]]
name = "typing-extensions"
-version = "3.7.4.3"
+version = "3.10.0.0"
description = "Backported and Experimental Type Hints for Python 3.5+"
category = "main"
optional = false
@@ -580,6 +578,17 @@ python-versions = "*"
[package.dependencies]
pytz = "*"
+[[package]]
+name = "watchdog"
+version = "2.1.2"
+description = "Filesystem events monitoring"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.extras]
+watchmedo = ["PyYAML (>=3.10)", "argh (>=0.24.1)"]
+
[[package]]
name = "xmltodict"
version = "0.12.0"
@@ -590,7 +599,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "yq"
-version = "2.12.0"
+version = "2.12.2"
description = "Command-line YAML/XML processor - jq wrapper for YAML/XML documents"
category = "dev"
optional = false
@@ -607,20 +616,20 @@ test = ["coverage", "flake8", "wheel"]
[[package]]
name = "zipp"
-version = "3.4.0"
+version = "3.4.1"
description = "Backport of pathlib-compatible object wrapper for zip files"
category = "main"
optional = false
python-versions = ">=3.6"
[package.extras]
-docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
-testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
+docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
+testing = ["pytest (>=4.6)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "pytest-enabler", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
[metadata]
lock-version = "1.1"
python-versions = ">=3.7.0, <3.10"
-content-hash = "4d9054a240b279da990b8038623d8b2025487ef37162f7f7ef4a4ff8cbae872b"
+content-hash = "4bb72b50e012bd9b58e47835e1fd5d767ce68ac869505f77bb6ad9d564dbf139"
[metadata.files]
ansiwrap = [
@@ -632,8 +641,8 @@ appdirs = [
{file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"},
]
argcomplete = [
- {file = "argcomplete-1.12.2-py2.py3-none-any.whl", hash = "sha256:17f01a9b9b9ece3e6b07058eae737ad6e10de8b4e149105f84614783913aba71"},
- {file = "argcomplete-1.12.2.tar.gz", hash = "sha256:de0e1282330940d52ea92a80fea2e4b9e0da1932aaa570f84d268939d1897b04"},
+ {file = "argcomplete-1.12.3-py2.py3-none-any.whl", hash = "sha256:291f0beca7fd49ce285d2f10e4c1c77e9460cf823eef2de54df0c0fec88b0d81"},
+ {file = "argcomplete-1.12.3.tar.gz", hash = "sha256:2c7dbffd8c045ea534921e63b0be6fe65e88599990d8dc408ac8c542b72a5445"},
]
asteval = [
{file = "asteval-0.9.23.tar.gz", hash = "sha256:f5096a924b1d2f147e70327245d95fc8f534dbe94277b6828ce2a8c049d3a438"},
@@ -643,59 +652,59 @@ atomicwrites = [
{file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
]
attrs = [
- {file = "attrs-20.3.0-py2.py3-none-any.whl", hash = "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6"},
- {file = "attrs-20.3.0.tar.gz", hash = "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"},
+ {file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"},
+ {file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"},
]
behave = [
{file = "behave-1.2.6-py2.py3-none-any.whl", hash = "sha256:ebda1a6c9e5bfe95c5f9f0a2794e01c7098b3dde86c10a95d8621c5907ff6f1c"},
{file = "behave-1.2.6.tar.gz", hash = "sha256:b9662327aa53294c1351b0a9c369093ccec1d21026f050c3bd9b3e5cccf81a86"},
]
black = [
- {file = "black-21.5b2-py3-none-any.whl", hash = "sha256:e5cf21ebdffc7a9b29d73912b6a6a9a4df4ce70220d523c21647da2eae0751ef"},
- {file = "black-21.5b2.tar.gz", hash = "sha256:1fc0e0a2c8ae7d269dfcf0c60a89afa299664f3e811395d40b1922dff8f854b5"},
+ {file = "black-21.6b0-py3-none-any.whl", hash = "sha256:dfb8c5a069012b2ab1e972e7b908f5fb42b6bbabcba0a788b86dc05067c7d9c7"},
+ {file = "black-21.6b0.tar.gz", hash = "sha256:dc132348a88d103016726fe360cb9ede02cecf99b76e3660ce6c596be132ce04"},
]
cffi = [
- {file = "cffi-1.14.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ebb253464a5d0482b191274f1c8bf00e33f7e0b9c66405fbffc61ed2c839c775"},
- {file = "cffi-1.14.4-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2c24d61263f511551f740d1a065eb0212db1dbbbbd241db758f5244281590c06"},
- {file = "cffi-1.14.4-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9f7a31251289b2ab6d4012f6e83e58bc3b96bd151f5b5262467f4bb6b34a7c26"},
- {file = "cffi-1.14.4-cp27-cp27m-win32.whl", hash = "sha256:5cf4be6c304ad0b6602f5c4e90e2f59b47653ac1ed9c662ed379fe48a8f26b0c"},
- {file = "cffi-1.14.4-cp27-cp27m-win_amd64.whl", hash = "sha256:f60567825f791c6f8a592f3c6e3bd93dd2934e3f9dac189308426bd76b00ef3b"},
- {file = "cffi-1.14.4-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:c6332685306b6417a91b1ff9fae889b3ba65c2292d64bd9245c093b1b284809d"},
- {file = "cffi-1.14.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d9efd8b7a3ef378dd61a1e77367f1924375befc2eba06168b6ebfa903a5e59ca"},
- {file = "cffi-1.14.4-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:51a8b381b16ddd370178a65360ebe15fbc1c71cf6f584613a7ea08bfad946698"},
- {file = "cffi-1.14.4-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:1d2c4994f515e5b485fd6d3a73d05526aa0fcf248eb135996b088d25dfa1865b"},
- {file = "cffi-1.14.4-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:af5c59122a011049aad5dd87424b8e65a80e4a6477419c0c1015f73fb5ea0293"},
- {file = "cffi-1.14.4-cp35-cp35m-win32.whl", hash = "sha256:594234691ac0e9b770aee9fcdb8fa02c22e43e5c619456efd0d6c2bf276f3eb2"},
- {file = "cffi-1.14.4-cp35-cp35m-win_amd64.whl", hash = "sha256:64081b3f8f6f3c3de6191ec89d7dc6c86a8a43911f7ecb422c60e90c70be41c7"},
- {file = "cffi-1.14.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f803eaa94c2fcda012c047e62bc7a51b0bdabda1cad7a92a522694ea2d76e49f"},
- {file = "cffi-1.14.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:105abaf8a6075dc96c1fe5ae7aae073f4696f2905fde6aeada4c9d2926752362"},
- {file = "cffi-1.14.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0638c3ae1a0edfb77c6765d487fee624d2b1ee1bdfeffc1f0b58c64d149e7eec"},
- {file = "cffi-1.14.4-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:7c6b1dece89874d9541fc974917b631406233ea0440d0bdfbb8e03bf39a49b3b"},
- {file = "cffi-1.14.4-cp36-cp36m-win32.whl", hash = "sha256:155136b51fd733fa94e1c2ea5211dcd4c8879869008fc811648f16541bf99668"},
- {file = "cffi-1.14.4-cp36-cp36m-win_amd64.whl", hash = "sha256:6bc25fc545a6b3d57b5f8618e59fc13d3a3a68431e8ca5fd4c13241cd70d0009"},
- {file = "cffi-1.14.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a7711edca4dcef1a75257b50a2fbfe92a65187c47dab5a0f1b9b332c5919a3fb"},
- {file = "cffi-1.14.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:00e28066507bfc3fe865a31f325c8391a1ac2916219340f87dfad602c3e48e5d"},
- {file = "cffi-1.14.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:798caa2a2384b1cbe8a2a139d80734c9db54f9cc155c99d7cc92441a23871c03"},
- {file = "cffi-1.14.4-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:a5ed8c05548b54b998b9498753fb9cadbfd92ee88e884641377d8a8b291bcc01"},
- {file = "cffi-1.14.4-cp37-cp37m-win32.whl", hash = "sha256:00a1ba5e2e95684448de9b89888ccd02c98d512064b4cb987d48f4b40aa0421e"},
- {file = "cffi-1.14.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9cc46bc107224ff5b6d04369e7c595acb700c3613ad7bcf2e2012f62ece80c35"},
- {file = "cffi-1.14.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:df5169c4396adc04f9b0a05f13c074df878b6052430e03f50e68adf3a57aa28d"},
- {file = "cffi-1.14.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:9ffb888f19d54a4d4dfd4b3f29bc2c16aa4972f1c2ab9c4ab09b8ab8685b9c2b"},
- {file = "cffi-1.14.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8d6603078baf4e11edc4168a514c5ce5b3ba6e3e9c374298cb88437957960a53"},
- {file = "cffi-1.14.4-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:d5ff0621c88ce83a28a10d2ce719b2ee85635e85c515f12bac99a95306da4b2e"},
- {file = "cffi-1.14.4-cp38-cp38-win32.whl", hash = "sha256:b4e248d1087abf9f4c10f3c398896c87ce82a9856494a7155823eb45a892395d"},
- {file = "cffi-1.14.4-cp38-cp38-win_amd64.whl", hash = "sha256:ec80dc47f54e6e9a78181ce05feb71a0353854cc26999db963695f950b5fb375"},
- {file = "cffi-1.14.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:840793c68105fe031f34d6a086eaea153a0cd5c491cde82a74b420edd0a2b909"},
- {file = "cffi-1.14.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:b18e0a9ef57d2b41f5c68beefa32317d286c3d6ac0484efd10d6e07491bb95dd"},
- {file = "cffi-1.14.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:045d792900a75e8b1e1b0ab6787dd733a8190ffcf80e8c8ceb2fb10a29ff238a"},
- {file = "cffi-1.14.4-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:7ef7d4ced6b325e92eb4d3502946c78c5367bc416398d387b39591532536734e"},
- {file = "cffi-1.14.4-cp39-cp39-win32.whl", hash = "sha256:ba4e9e0ae13fc41c6b23299545e5ef73055213e466bd107953e4a013a5ddd7e3"},
- {file = "cffi-1.14.4-cp39-cp39-win_amd64.whl", hash = "sha256:f032b34669220030f905152045dfa27741ce1a6db3324a5bc0b96b6c7420c87b"},
- {file = "cffi-1.14.4.tar.gz", hash = "sha256:1a465cbe98a7fd391d47dce4b8f7e5b921e6cd805ef421d04f5f66ba8f06086c"},
+ {file = "cffi-1.14.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:bb89f306e5da99f4d922728ddcd6f7fcebb3241fc40edebcb7284d7514741991"},
+ {file = "cffi-1.14.5-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:34eff4b97f3d982fb93e2831e6750127d1355a923ebaeeb565407b3d2f8d41a1"},
+ {file = "cffi-1.14.5-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:99cd03ae7988a93dd00bcd9d0b75e1f6c426063d6f03d2f90b89e29b25b82dfa"},
+ {file = "cffi-1.14.5-cp27-cp27m-win32.whl", hash = "sha256:65fa59693c62cf06e45ddbb822165394a288edce9e276647f0046e1ec26920f3"},
+ {file = "cffi-1.14.5-cp27-cp27m-win_amd64.whl", hash = "sha256:51182f8927c5af975fece87b1b369f722c570fe169f9880764b1ee3bca8347b5"},
+ {file = "cffi-1.14.5-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:43e0b9d9e2c9e5d152946b9c5fe062c151614b262fda2e7b201204de0b99e482"},
+ {file = "cffi-1.14.5-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:cbde590d4faaa07c72bf979734738f328d239913ba3e043b1e98fe9a39f8b2b6"},
+ {file = "cffi-1.14.5-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:5de7970188bb46b7bf9858eb6890aad302577a5f6f75091fd7cdd3ef13ef3045"},
+ {file = "cffi-1.14.5-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:a465da611f6fa124963b91bf432d960a555563efe4ed1cc403ba5077b15370aa"},
+ {file = "cffi-1.14.5-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:d42b11d692e11b6634f7613ad8df5d6d5f8875f5d48939520d351007b3c13406"},
+ {file = "cffi-1.14.5-cp35-cp35m-win32.whl", hash = "sha256:72d8d3ef52c208ee1c7b2e341f7d71c6fd3157138abf1a95166e6165dd5d4369"},
+ {file = "cffi-1.14.5-cp35-cp35m-win_amd64.whl", hash = "sha256:29314480e958fd8aab22e4a58b355b629c59bf5f2ac2492b61e3dc06d8c7a315"},
+ {file = "cffi-1.14.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3d3dd4c9e559eb172ecf00a2a7517e97d1e96de2a5e610bd9b68cea3925b4892"},
+ {file = "cffi-1.14.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:48e1c69bbacfc3d932221851b39d49e81567a4d4aac3b21258d9c24578280058"},
+ {file = "cffi-1.14.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:69e395c24fc60aad6bb4fa7e583698ea6cc684648e1ffb7fe85e3c1ca131a7d5"},
+ {file = "cffi-1.14.5-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:9e93e79c2551ff263400e1e4be085a1210e12073a31c2011dbbda14bda0c6132"},
+ {file = "cffi-1.14.5-cp36-cp36m-win32.whl", hash = "sha256:58e3f59d583d413809d60779492342801d6e82fefb89c86a38e040c16883be53"},
+ {file = "cffi-1.14.5-cp36-cp36m-win_amd64.whl", hash = "sha256:005a36f41773e148deac64b08f233873a4d0c18b053d37da83f6af4d9087b813"},
+ {file = "cffi-1.14.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2894f2df484ff56d717bead0a5c2abb6b9d2bf26d6960c4604d5c48bbc30ee73"},
+ {file = "cffi-1.14.5-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:0857f0ae312d855239a55c81ef453ee8fd24136eaba8e87a2eceba644c0d4c06"},
+ {file = "cffi-1.14.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:cd2868886d547469123fadc46eac7ea5253ea7fcb139f12e1dfc2bbd406427d1"},
+ {file = "cffi-1.14.5-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:35f27e6eb43380fa080dccf676dece30bef72e4a67617ffda586641cd4508d49"},
+ {file = "cffi-1.14.5-cp37-cp37m-win32.whl", hash = "sha256:9ff227395193126d82e60319a673a037d5de84633f11279e336f9c0f189ecc62"},
+ {file = "cffi-1.14.5-cp37-cp37m-win_amd64.whl", hash = "sha256:9cf8022fb8d07a97c178b02327b284521c7708d7c71a9c9c355c178ac4bbd3d4"},
+ {file = "cffi-1.14.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8b198cec6c72df5289c05b05b8b0969819783f9418e0409865dac47288d2a053"},
+ {file = "cffi-1.14.5-cp38-cp38-manylinux1_i686.whl", hash = "sha256:ad17025d226ee5beec591b52800c11680fca3df50b8b29fe51d882576e039ee0"},
+ {file = "cffi-1.14.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:6c97d7350133666fbb5cf4abdc1178c812cb205dc6f41d174a7b0f18fb93337e"},
+ {file = "cffi-1.14.5-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8ae6299f6c68de06f136f1f9e69458eae58f1dacf10af5c17353eae03aa0d827"},
+ {file = "cffi-1.14.5-cp38-cp38-win32.whl", hash = "sha256:b85eb46a81787c50650f2392b9b4ef23e1f126313b9e0e9013b35c15e4288e2e"},
+ {file = "cffi-1.14.5-cp38-cp38-win_amd64.whl", hash = "sha256:1f436816fc868b098b0d63b8920de7d208c90a67212546d02f84fe78a9c26396"},
+ {file = "cffi-1.14.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1071534bbbf8cbb31b498d5d9db0f274f2f7a865adca4ae429e147ba40f73dea"},
+ {file = "cffi-1.14.5-cp39-cp39-manylinux1_i686.whl", hash = "sha256:9de2e279153a443c656f2defd67769e6d1e4163952b3c622dcea5b08a6405322"},
+ {file = "cffi-1.14.5-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:6e4714cc64f474e4d6e37cfff31a814b509a35cb17de4fb1999907575684479c"},
+ {file = "cffi-1.14.5-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:158d0d15119b4b7ff6b926536763dc0714313aa59e320ddf787502c70c4d4bee"},
+ {file = "cffi-1.14.5-cp39-cp39-win32.whl", hash = "sha256:afb29c1ba2e5a3736f1c301d9d0abe3ec8b86957d04ddfa9d7a6a42b9367e396"},
+ {file = "cffi-1.14.5-cp39-cp39-win_amd64.whl", hash = "sha256:f2d45f97ab6bb54753eab54fffe75aaf3de4ff2341c9daee1987ee1837636f1d"},
+ {file = "cffi-1.14.5.tar.gz", hash = "sha256:fd78e5fee591709f32ef6edb9a015b4aa1a5022598e36227500c8f4e02328d9c"},
]
click = [
- {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"},
- {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"},
+ {file = "click-8.0.1-py3-none-any.whl", hash = "sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6"},
+ {file = "click-8.0.1.tar.gz", hash = "sha256:8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a"},
]
colorama = [
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
@@ -715,12 +724,15 @@ cryptography = [
{file = "cryptography-3.4.7-pp37-pypy37_pp73-manylinux2014_x86_64.whl", hash = "sha256:ee77aa129f481be46f8d92a1a7db57269a2f23052d5f2433b4621bb457081cc9"},
{file = "cryptography-3.4.7.tar.gz", hash = "sha256:3d10de8116d25649631977cb37da6cbdd2d6fa0e0281d014a5b7d337255ca713"},
]
-future = [
- {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"},
+ghp-import = [
+ {file = "ghp-import-2.0.1.tar.gz", hash = "sha256:753de2eace6e0f7d4edfb3cce5e3c3b98cd52aadb80163303d1d036bda7b4483"},
+]
+glob2 = [
+ {file = "glob2-0.7.tar.gz", hash = "sha256:85c3dbd07c8aa26d63d7aacee34fa86e9a91a3873bc30bf62ec46e531f92ab8c"},
]
importlib-metadata = [
- {file = "importlib_metadata-3.7.2-py3-none-any.whl", hash = "sha256:407d13f55dc6f2a844e62325d18ad7019a436c4bfcaee34cda35f2be6e7c3e34"},
- {file = "importlib_metadata-3.7.2.tar.gz", hash = "sha256:18d5ff601069f98d5d605b6a4b50c18a34811d655c55548adc833e687289acde"},
+ {file = "importlib_metadata-4.5.0-py3-none-any.whl", hash = "sha256:833b26fb89d5de469b24a390e9df088d4e52e4ba33b01dc5e0e4f41b81a16c00"},
+ {file = "importlib_metadata-4.5.0.tar.gz", hash = "sha256:b142cc1dd1342f31ff04bb7d022492b09920cb64fed867cd3ea6f80fe3ebd139"},
]
iniconfig = [
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
@@ -731,99 +743,74 @@ jeepney = [
{file = "jeepney-0.6.0.tar.gz", hash = "sha256:7d59b6622675ca9e993a6bd38de845051d315f8b0c72cca3aef733a20b648657"},
]
jinja2 = [
- {file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"},
- {file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"},
-]
-joblib = [
- {file = "joblib-0.17.0-py3-none-any.whl", hash = "sha256:698c311779f347cf6b7e6b8a39bb682277b8ee4aba8cf9507bc0cf4cd4737b72"},
- {file = "joblib-0.17.0.tar.gz", hash = "sha256:9e284edd6be6b71883a63c9b7f124738a3c16195513ad940eae7e3438de885d5"},
+ {file = "Jinja2-3.0.1-py3-none-any.whl", hash = "sha256:1f06f2da51e7b56b8f238affdd6b4e2c61e39598a378cc49345bc1bd42a978a4"},
+ {file = "Jinja2-3.0.1.tar.gz", hash = "sha256:703f484b47a6af502e743c9122595cc812b0271f661722403114f71a79d0f5a4"},
]
keyring = [
{file = "keyring-23.0.1-py3-none-any.whl", hash = "sha256:8f607d7d1cc502c43a932a275a56fe47db50271904513a379d39df1af277ac48"},
{file = "keyring-23.0.1.tar.gz", hash = "sha256:045703609dd3fccfcdb27da201684278823b72af515aedec1a8515719a038cb8"},
]
-livereload = [
- {file = "livereload-2.6.3.tar.gz", hash = "sha256:776f2f865e59fde56490a56bcc6773b6917366bce0c267c60ee8aaf1a0959869"},
-]
-lunr = [
- {file = "lunr-0.5.8-py2.py3-none-any.whl", hash = "sha256:aab3f489c4d4fab4c1294a257a30fec397db56f0a50273218ccc3efdbf01d6ca"},
- {file = "lunr-0.5.8.tar.gz", hash = "sha256:c4fb063b98eff775dd638b3df380008ae85e6cb1d1a24d1cd81a10ef6391c26e"},
+mako = [
+ {file = "Mako-1.1.4.tar.gz", hash = "sha256:17831f0b7087c313c0ffae2bcbbd3c1d5ba9eeac9c38f2eb7b50e8c99fe9d5ab"},
]
markdown = [
- {file = "Markdown-3.3.3-py3-none-any.whl", hash = "sha256:c109c15b7dc20a9ac454c9e6025927d44460b85bd039da028d85e2b6d0bcc328"},
- {file = "Markdown-3.3.3.tar.gz", hash = "sha256:5d9f2b5ca24bc4c7a390d22323ca4bad200368612b5aaa7796babf971d2b2f18"},
+ {file = "Markdown-3.3.4-py3-none-any.whl", hash = "sha256:96c3ba1261de2f7547b46a00ea8463832c921d3f9d6aba3f255a6f71386db20c"},
+ {file = "Markdown-3.3.4.tar.gz", hash = "sha256:31b5b491868dcc87d6c24b7e3d19a0d730d59d3e46f4eea6430a321bed387a49"},
]
markupsafe = [
- {file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"},
- {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"},
- {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183"},
- {file = "MarkupSafe-1.1.1-cp27-cp27m-win32.whl", hash = "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b"},
- {file = "MarkupSafe-1.1.1-cp27-cp27m-win_amd64.whl", hash = "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e"},
- {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f"},
- {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1"},
- {file = "MarkupSafe-1.1.1-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5"},
- {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1"},
- {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735"},
- {file = "MarkupSafe-1.1.1-cp34-cp34m-win32.whl", hash = "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21"},
- {file = "MarkupSafe-1.1.1-cp34-cp34m-win_amd64.whl", hash = "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235"},
- {file = "MarkupSafe-1.1.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b"},
- {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f"},
- {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905"},
- {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"},
- {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d53bc011414228441014aa71dbec320c66468c1030aae3a6e29778a3382d96e5"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:3b8a6499709d29c2e2399569d96719a1b21dcd94410a586a18526b143ec8470f"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:84dee80c15f1b560d55bcfe6d47b27d070b4681c699c572af2e3c7cc90a3b8e0"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:b1dba4527182c95a0db8b6060cc98ac49b9e2f5e64320e2b56e47cb2831978c7"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"},
- {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bf5aa3cbcfdf57fa2ee9cd1822c862ef23037f5c832ad09cfea57fa846dec193"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:6fffc775d90dcc9aed1b89219549b329a9250d918fd0b8fa8d93d154918422e1"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:a6a744282b7718a2a62d2ed9d993cad6f5f585605ad352c11de459f4108df0a1"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:195d7d2c4fbb0ee8139a6cf67194f3973a6b3042d742ebe0a9ed36d8b6f0c07f"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"},
- {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:acf08ac40292838b3cbbb06cfe9b2cb9ec78fce8baca31ddb87aaac2e2dc3bc2"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d9be0ba6c527163cbed5e0857c451fcd092ce83947944d6c14bc95441203f032"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:caabedc8323f1e93231b52fc32bdcde6db817623d33e100708d9a68e1f53b26b"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"},
- {file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d73a845f227b0bfe8a7455ee623525ee656a9e2e749e4742706d80a6065d5e2c"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:98bae9582248d6cf62321dcb52aaf5d9adf0bad3b40582925ef7c7f0ed85fceb"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:2beec1e0de6924ea551859edb9e7679da6e4870d32cb766240ce17e0a0ba2014"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:7fed13866cf14bba33e7176717346713881f56d9d2bcebab207f7a036f41b850"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:6f1e273a344928347c1290119b493a1f0303c52f5a5eae5f16d74f48c15d4a85"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:feb7b34d6325451ef96bc0e36e1a6c0c1c64bc1fbec4b854f4529e51887b1621"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-win32.whl", hash = "sha256:22c178a091fc6630d0d045bdb5992d2dfe14e3259760e713c490da5323866c39"},
- {file = "MarkupSafe-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7d644ddb4dbd407d31ffb699f1d140bc35478da613b441c582aeb7c43838dd8"},
- {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"},
+ {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
+]
+mergedeep = [
+ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"},
+ {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"},
]
mkdocs = [
- {file = "mkdocs-1.1.2-py3-none-any.whl", hash = "sha256:096f52ff52c02c7e90332d2e53da862fde5c062086e1b5356a6e392d5d60f5e9"},
- {file = "mkdocs-1.1.2.tar.gz", hash = "sha256:f0b61e5402b99d7789efa032c7a74c90a20220a9c81749da06dbfbcbd52ffb39"},
+ {file = "mkdocs-1.2.1-py3-none-any.whl", hash = "sha256:11141126e5896dd9d279b3e4814eb488e409a0990fb638856255020406a8e2e7"},
+ {file = "mkdocs-1.2.1.tar.gz", hash = "sha256:6e0ea175366e3a50d334597b0bc042b8cebd512398cdd3f6f34842d0ef524905"},
]
mypy-extensions = [
{file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
{file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
]
-nltk = [
- {file = "nltk-3.5.zip", hash = "sha256:845365449cd8c5f9731f7cb9f8bd6fd0767553b9d53af9eb1b3abf7700936b35"},
-]
packaging = [
- {file = "packaging-20.8-py2.py3-none-any.whl", hash = "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858"},
- {file = "packaging-20.8.tar.gz", hash = "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093"},
+ {file = "packaging-20.9-py2.py3-none-any.whl", hash = "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a"},
+ {file = "packaging-20.9.tar.gz", hash = "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5"},
]
parse = [
- {file = "parse-1.18.0.tar.gz", hash = "sha256:91666032d6723dc5905248417ef0dc9e4c51df9526aaeef271eacad6491f06a4"},
+ {file = "parse-1.19.0.tar.gz", hash = "sha256:9ff82852bcb65d139813e2a5197627a94966245c897796760a3a2a8eb66f020b"},
]
parse-type = [
{file = "parse_type-0.5.2-py2.py3-none-any.whl", hash = "sha256:089a471b06327103865dfec2dd844230c3c658a4a1b5b4c8b6c16c8f77577f9e"},
@@ -861,6 +848,10 @@ pytest = [
{file = "pytest-6.2.4-py3-none-any.whl", hash = "sha256:91ef2131a9bd6be8f76f1f08eac5c5317221d6ad1e143ae03894b862e8976890"},
{file = "pytest-6.2.4.tar.gz", hash = "sha256:50bcad0a0b9c5a72c8e4e7c9855a3ad496ca6a881a3641b4260605450772c54b"},
]
+pytest-bdd = [
+ {file = "pytest-bdd-4.0.2.tar.gz", hash = "sha256:982489f2f036c7561affe4eeb5b392a37e1ace2a9f260cad747b1c8119e63cfd"},
+ {file = "pytest_bdd-4.0.2-py2.py3-none-any.whl", hash = "sha256:74ea5a147ea558c99ae83d838e6acbe5c9e6843884a958f8231615d96838733d"},
+]
python-dateutil = [
{file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"},
{file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"},
@@ -884,80 +875,76 @@ pyyaml = [
{file = "PyYAML-5.4.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185"},
{file = "PyYAML-5.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253"},
{file = "PyYAML-5.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc"},
- {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347"},
- {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541"},
{file = "PyYAML-5.4.1-cp36-cp36m-win32.whl", hash = "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5"},
{file = "PyYAML-5.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df"},
{file = "PyYAML-5.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018"},
{file = "PyYAML-5.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63"},
- {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa"},
- {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0"},
{file = "PyYAML-5.4.1-cp37-cp37m-win32.whl", hash = "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b"},
{file = "PyYAML-5.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf"},
{file = "PyYAML-5.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46"},
{file = "PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb"},
- {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247"},
- {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc"},
{file = "PyYAML-5.4.1-cp38-cp38-win32.whl", hash = "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc"},
{file = "PyYAML-5.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696"},
{file = "PyYAML-5.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77"},
{file = "PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183"},
- {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122"},
- {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6"},
{file = "PyYAML-5.4.1-cp39-cp39-win32.whl", hash = "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10"},
{file = "PyYAML-5.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db"},
{file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"},
]
+pyyaml-env-tag = [
+ {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"},
+ {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"},
+]
regex = [
- {file = "regex-2020.11.13-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85"},
- {file = "regex-2020.11.13-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70"},
- {file = "regex-2020.11.13-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee"},
- {file = "regex-2020.11.13-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5"},
- {file = "regex-2020.11.13-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7"},
- {file = "regex-2020.11.13-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31"},
- {file = "regex-2020.11.13-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa"},
- {file = "regex-2020.11.13-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6"},
- {file = "regex-2020.11.13-cp36-cp36m-win32.whl", hash = "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e"},
- {file = "regex-2020.11.13-cp36-cp36m-win_amd64.whl", hash = "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884"},
- {file = "regex-2020.11.13-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b"},
- {file = "regex-2020.11.13-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88"},
- {file = "regex-2020.11.13-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0"},
- {file = "regex-2020.11.13-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1"},
- {file = "regex-2020.11.13-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0"},
- {file = "regex-2020.11.13-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512"},
- {file = "regex-2020.11.13-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba"},
- {file = "regex-2020.11.13-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538"},
- {file = "regex-2020.11.13-cp37-cp37m-win32.whl", hash = "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4"},
- {file = "regex-2020.11.13-cp37-cp37m-win_amd64.whl", hash = "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444"},
- {file = "regex-2020.11.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f"},
- {file = "regex-2020.11.13-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d"},
- {file = "regex-2020.11.13-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af"},
- {file = "regex-2020.11.13-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f"},
- {file = "regex-2020.11.13-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b"},
- {file = "regex-2020.11.13-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8"},
- {file = "regex-2020.11.13-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5"},
- {file = "regex-2020.11.13-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b"},
- {file = "regex-2020.11.13-cp38-cp38-win32.whl", hash = "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c"},
- {file = "regex-2020.11.13-cp38-cp38-win_amd64.whl", hash = "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683"},
- {file = "regex-2020.11.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc"},
- {file = "regex-2020.11.13-cp39-cp39-manylinux1_i686.whl", hash = "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364"},
- {file = "regex-2020.11.13-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e"},
- {file = "regex-2020.11.13-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e"},
- {file = "regex-2020.11.13-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917"},
- {file = "regex-2020.11.13-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b"},
- {file = "regex-2020.11.13-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9"},
- {file = "regex-2020.11.13-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c"},
- {file = "regex-2020.11.13-cp39-cp39-win32.whl", hash = "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f"},
- {file = "regex-2020.11.13-cp39-cp39-win_amd64.whl", hash = "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d"},
- {file = "regex-2020.11.13.tar.gz", hash = "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562"},
+ {file = "regex-2021.4.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:619d71c59a78b84d7f18891fe914446d07edd48dc8328c8e149cbe0929b4e000"},
+ {file = "regex-2021.4.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:47bf5bf60cf04d72bf6055ae5927a0bd9016096bf3d742fa50d9bf9f45aa0711"},
+ {file = "regex-2021.4.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:281d2fd05555079448537fe108d79eb031b403dac622621c78944c235f3fcf11"},
+ {file = "regex-2021.4.4-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:bd28bc2e3a772acbb07787c6308e00d9626ff89e3bfcdebe87fa5afbfdedf968"},
+ {file = "regex-2021.4.4-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:7c2a1af393fcc09e898beba5dd59196edaa3116191cc7257f9224beaed3e1aa0"},
+ {file = "regex-2021.4.4-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:c38c71df845e2aabb7fb0b920d11a1b5ac8526005e533a8920aea97efb8ec6a4"},
+ {file = "regex-2021.4.4-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:96fcd1888ab4d03adfc9303a7b3c0bd78c5412b2bfbe76db5b56d9eae004907a"},
+ {file = "regex-2021.4.4-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:ade17eb5d643b7fead300a1641e9f45401c98eee23763e9ed66a43f92f20b4a7"},
+ {file = "regex-2021.4.4-cp36-cp36m-win32.whl", hash = "sha256:e8e5b509d5c2ff12f8418006d5a90e9436766133b564db0abaec92fd27fcee29"},
+ {file = "regex-2021.4.4-cp36-cp36m-win_amd64.whl", hash = "sha256:11d773d75fa650cd36f68d7ca936e3c7afaae41b863b8c387a22aaa78d3c5c79"},
+ {file = "regex-2021.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d3029c340cfbb3ac0a71798100ccc13b97dddf373a4ae56b6a72cf70dfd53bc8"},
+ {file = "regex-2021.4.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:18c071c3eb09c30a264879f0d310d37fe5d3a3111662438889ae2eb6fc570c31"},
+ {file = "regex-2021.4.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:4c557a7b470908b1712fe27fb1ef20772b78079808c87d20a90d051660b1d69a"},
+ {file = "regex-2021.4.4-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:01afaf2ec48e196ba91b37451aa353cb7eda77efe518e481707e0515025f0cd5"},
+ {file = "regex-2021.4.4-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:3a9cd17e6e5c7eb328517969e0cb0c3d31fd329298dd0c04af99ebf42e904f82"},
+ {file = "regex-2021.4.4-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:90f11ff637fe8798933fb29f5ae1148c978cccb0452005bf4c69e13db951e765"},
+ {file = "regex-2021.4.4-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:919859aa909429fb5aa9cf8807f6045592c85ef56fdd30a9a3747e513db2536e"},
+ {file = "regex-2021.4.4-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:339456e7d8c06dd36a22e451d58ef72cef293112b559010db3d054d5560ef439"},
+ {file = "regex-2021.4.4-cp37-cp37m-win32.whl", hash = "sha256:67bdb9702427ceddc6ef3dc382455e90f785af4c13d495f9626861763ee13f9d"},
+ {file = "regex-2021.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:32e65442138b7b76dd8173ffa2cf67356b7bc1768851dded39a7a13bf9223da3"},
+ {file = "regex-2021.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1e1c20e29358165242928c2de1482fb2cf4ea54a6a6dea2bd7a0e0d8ee321500"},
+ {file = "regex-2021.4.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:314d66636c494ed9c148a42731b3834496cc9a2c4251b1661e40936814542b14"},
+ {file = "regex-2021.4.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:6d1b01031dedf2503631d0903cb563743f397ccaf6607a5e3b19a3d76fc10480"},
+ {file = "regex-2021.4.4-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:741a9647fcf2e45f3a1cf0e24f5e17febf3efe8d4ba1281dcc3aa0459ef424dc"},
+ {file = "regex-2021.4.4-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:4c46e22a0933dd783467cf32b3516299fb98cfebd895817d685130cc50cd1093"},
+ {file = "regex-2021.4.4-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:e512d8ef5ad7b898cdb2d8ee1cb09a8339e4f8be706d27eaa180c2f177248a10"},
+ {file = "regex-2021.4.4-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:980d7be47c84979d9136328d882f67ec5e50008681d94ecc8afa8a65ed1f4a6f"},
+ {file = "regex-2021.4.4-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:ce15b6d103daff8e9fee13cf7f0add05245a05d866e73926c358e871221eae87"},
+ {file = "regex-2021.4.4-cp38-cp38-win32.whl", hash = "sha256:a91aa8619b23b79bcbeb37abe286f2f408d2f2d6f29a17237afda55bb54e7aac"},
+ {file = "regex-2021.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:c0502c0fadef0d23b128605d69b58edb2c681c25d44574fc673b0e52dce71ee2"},
+ {file = "regex-2021.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:598585c9f0af8374c28edd609eb291b5726d7cbce16be6a8b95aa074d252ee17"},
+ {file = "regex-2021.4.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:ee54ff27bf0afaf4c3b3a62bcd016c12c3fdb4ec4f413391a90bd38bc3624605"},
+ {file = "regex-2021.4.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7d9884d86dd4dd489e981d94a65cd30d6f07203d90e98f6f657f05170f6324c9"},
+ {file = "regex-2021.4.4-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:bf5824bfac591ddb2c1f0a5f4ab72da28994548c708d2191e3b87dd207eb3ad7"},
+ {file = "regex-2021.4.4-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:563085e55b0d4fb8f746f6a335893bda5c2cef43b2f0258fe1020ab1dd874df8"},
+ {file = "regex-2021.4.4-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:b9c3db21af35e3b3c05764461b262d6f05bbca08a71a7849fd79d47ba7bc33ed"},
+ {file = "regex-2021.4.4-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:3916d08be28a1149fb97f7728fca1f7c15d309a9f9682d89d79db75d5e52091c"},
+ {file = "regex-2021.4.4-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:fd45ff9293d9274c5008a2054ecef86a9bfe819a67c7be1afb65e69b405b3042"},
+ {file = "regex-2021.4.4-cp39-cp39-win32.whl", hash = "sha256:fa4537fb4a98fe8fde99626e4681cc644bdcf2a795038533f9f711513a862ae6"},
+ {file = "regex-2021.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:97f29f57d5b84e73fbaf99ab3e26134e6687348e95ef6b48cfd2c06807005a07"},
+ {file = "regex-2021.4.4.tar.gz", hash = "sha256:52ba3d3f9b942c49d7e4bc105bb28551c44065f139a65062ab7912bef10c9afb"},
]
secretstorage = [
- {file = "SecretStorage-3.3.0-py3-none-any.whl", hash = "sha256:5c36f6537a523ec5f969ef9fad61c98eb9e017bc601d811e53aa25bece64892f"},
- {file = "SecretStorage-3.3.0.tar.gz", hash = "sha256:30cfdef28829dad64d6ea1ed08f8eff6aa115a77068926bcc9f5225d5a3246aa"},
+ {file = "SecretStorage-3.3.1-py3-none-any.whl", hash = "sha256:422d82c36172d88d6a0ed5afdec956514b189ddbfb72fefab0c8a1cee4eaf71f"},
+ {file = "SecretStorage-3.3.1.tar.gz", hash = "sha256:fd666c51a6bf200643495a04abb261f83229dcb6fd8472ec393df7ffc8b6f195"},
]
six = [
- {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"},
- {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"},
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
]
textwrap3 = [
{file = "textwrap3-0.9.2-py2.py3-none-any.whl", hash = "sha256:bf5f4c40faf2a9ff00a9e0791fed5da7415481054cef45bb4a3cfb1f69044ae0"},
@@ -967,53 +954,6 @@ toml = [
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
]
-tornado = [
- {file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"},
- {file = "tornado-6.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c"},
- {file = "tornado-6.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9de9e5188a782be6b1ce866e8a51bc76a0fbaa0e16613823fc38e4fc2556ad05"},
- {file = "tornado-6.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:61b32d06ae8a036a6607805e6720ef00a3c98207038444ba7fd3d169cd998910"},
- {file = "tornado-6.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3e63498f680547ed24d2c71e6497f24bca791aca2fe116dbc2bd0ac7f191691b"},
- {file = "tornado-6.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:6c77c9937962577a6a76917845d06af6ab9197702a42e1346d8ae2e76b5e3675"},
- {file = "tornado-6.1-cp35-cp35m-win32.whl", hash = "sha256:6286efab1ed6e74b7028327365cf7346b1d777d63ab30e21a0f4d5b275fc17d5"},
- {file = "tornado-6.1-cp35-cp35m-win_amd64.whl", hash = "sha256:fa2ba70284fa42c2a5ecb35e322e68823288a4251f9ba9cc77be04ae15eada68"},
- {file = "tornado-6.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a00ff4561e2929a2c37ce706cb8233b7907e0cdc22eab98888aca5dd3775feb"},
- {file = "tornado-6.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:748290bf9112b581c525e6e6d3820621ff020ed95af6f17fedef416b27ed564c"},
- {file = "tornado-6.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e385b637ac3acaae8022e7e47dfa7b83d3620e432e3ecb9a3f7f58f150e50921"},
- {file = "tornado-6.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:25ad220258349a12ae87ede08a7b04aca51237721f63b1808d39bdb4b2164558"},
- {file = "tornado-6.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:65d98939f1a2e74b58839f8c4dab3b6b3c1ce84972ae712be02845e65391ac7c"},
- {file = "tornado-6.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:e519d64089b0876c7b467274468709dadf11e41d65f63bba207e04217f47c085"},
- {file = "tornado-6.1-cp36-cp36m-win32.whl", hash = "sha256:b87936fd2c317b6ee08a5741ea06b9d11a6074ef4cc42e031bc6403f82a32575"},
- {file = "tornado-6.1-cp36-cp36m-win_amd64.whl", hash = "sha256:cc0ee35043162abbf717b7df924597ade8e5395e7b66d18270116f8745ceb795"},
- {file = "tornado-6.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7250a3fa399f08ec9cb3f7b1b987955d17e044f1ade821b32e5f435130250d7f"},
- {file = "tornado-6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ed3ad863b1b40cd1d4bd21e7498329ccaece75db5a5bf58cd3c9f130843e7102"},
- {file = "tornado-6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:dcef026f608f678c118779cd6591c8af6e9b4155c44e0d1bc0c87c036fb8c8c4"},
- {file = "tornado-6.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:70dec29e8ac485dbf57481baee40781c63e381bebea080991893cd297742b8fd"},
- {file = "tornado-6.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:d3f7594930c423fd9f5d1a76bee85a2c36fd8b4b16921cae7e965f22575e9c01"},
- {file = "tornado-6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3447475585bae2e77ecb832fc0300c3695516a47d46cefa0528181a34c5b9d3d"},
- {file = "tornado-6.1-cp37-cp37m-win32.whl", hash = "sha256:e7229e60ac41a1202444497ddde70a48d33909e484f96eb0da9baf8dc68541df"},
- {file = "tornado-6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:cb5ec8eead331e3bb4ce8066cf06d2dfef1bfb1b2a73082dfe8a161301b76e37"},
- {file = "tornado-6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:20241b3cb4f425e971cb0a8e4ffc9b0a861530ae3c52f2b0434e6c1b57e9fd95"},
- {file = "tornado-6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c77da1263aa361938476f04c4b6c8916001b90b2c2fdd92d8d535e1af48fba5a"},
- {file = "tornado-6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:fba85b6cd9c39be262fcd23865652920832b61583de2a2ca907dbd8e8a8c81e5"},
- {file = "tornado-6.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:1e8225a1070cd8eec59a996c43229fe8f95689cb16e552d130b9793cb570a288"},
- {file = "tornado-6.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d14d30e7f46a0476efb0deb5b61343b1526f73ebb5ed84f23dc794bdb88f9d9f"},
- {file = "tornado-6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8f959b26f2634a091bb42241c3ed8d3cedb506e7c27b8dd5c7b9f745318ddbb6"},
- {file = "tornado-6.1-cp38-cp38-win32.whl", hash = "sha256:34ca2dac9e4d7afb0bed4677512e36a52f09caa6fded70b4e3e1c89dbd92c326"},
- {file = "tornado-6.1-cp38-cp38-win_amd64.whl", hash = "sha256:6196a5c39286cc37c024cd78834fb9345e464525d8991c21e908cc046d1cc02c"},
- {file = "tornado-6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0ba29bafd8e7e22920567ce0d232c26d4d47c8b5cf4ed7b562b5db39fa199c5"},
- {file = "tornado-6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:33892118b165401f291070100d6d09359ca74addda679b60390b09f8ef325ffe"},
- {file = "tornado-6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7da13da6f985aab7f6f28debab00c67ff9cbacd588e8477034c0652ac141feea"},
- {file = "tornado-6.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:e0791ac58d91ac58f694d8d2957884df8e4e2f6687cdf367ef7eb7497f79eaa2"},
- {file = "tornado-6.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:66324e4e1beede9ac79e60f88de548da58b1f8ab4b2f1354d8375774f997e6c0"},
- {file = "tornado-6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:a48900ecea1cbb71b8c71c620dee15b62f85f7c14189bdeee54966fbd9a0c5bd"},
- {file = "tornado-6.1-cp39-cp39-win32.whl", hash = "sha256:d3d20ea5782ba63ed13bc2b8c291a053c8d807a8fa927d941bd718468f7b950c"},
- {file = "tornado-6.1-cp39-cp39-win_amd64.whl", hash = "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4"},
- {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"},
-]
-tqdm = [
- {file = "tqdm-4.54.1-py2.py3-none-any.whl", hash = "sha256:d4f413aecb61c9779888c64ddf0c62910ad56dcbe857d8922bb505d4dbff0df1"},
- {file = "tqdm-4.54.1.tar.gz", hash = "sha256:38b658a3e4ecf9b4f6f8ff75ca16221ae3378b2e175d846b6b33ea3a20852cf5"},
-]
typed-ast = [
{file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6"},
{file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:c907f561b1e83e93fad565bac5ba9c22d96a54e7ea0267c708bffe863cbe4075"},
@@ -1047,23 +987,42 @@ typed-ast = [
{file = "typed_ast-1.4.3.tar.gz", hash = "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65"},
]
typing-extensions = [
- {file = "typing_extensions-3.7.4.3-py2-none-any.whl", hash = "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f"},
- {file = "typing_extensions-3.7.4.3-py3-none-any.whl", hash = "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918"},
- {file = "typing_extensions-3.7.4.3.tar.gz", hash = "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c"},
+ {file = "typing_extensions-3.10.0.0-py2-none-any.whl", hash = "sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497"},
+ {file = "typing_extensions-3.10.0.0-py3-none-any.whl", hash = "sha256:779383f6086d90c99ae41cf0ff39aac8a7937a9283ce0a414e5dd782f4c94a84"},
+ {file = "typing_extensions-3.10.0.0.tar.gz", hash = "sha256:50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342"},
]
tzlocal = [
{file = "tzlocal-2.1-py2.py3-none-any.whl", hash = "sha256:e2cb6c6b5b604af38597403e9852872d7f534962ae2954c7f35efcb1ccacf4a4"},
{file = "tzlocal-2.1.tar.gz", hash = "sha256:643c97c5294aedc737780a49d9df30889321cbe1204eac2c2ec6134035a92e44"},
]
+watchdog = [
+ {file = "watchdog-2.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:581e3548159fe7d2a9f377a1fbcb41bdcee46849cca8ab803c7ac2e5e04ec77c"},
+ {file = "watchdog-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:edcd9ef3fd460bb8a98eb1fcf99941e9fd9f275f45f1a82cb1359ec92975d647"},
+ {file = "watchdog-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d34ce2261f118ecd57eedeef95fc2a495fc4a40b3ed7b3bf0bd7a8ccc1ab4f8f"},
+ {file = "watchdog-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:668391e6c32742d76e5be5db6bf95c455fa4b3d11e76a77c13b39bccb3a47a72"},
+ {file = "watchdog-2.1.2-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6ef9fe57162c4c361692620e1d9167574ba1975ee468b24051ca11c9bba6438e"},
+ {file = "watchdog-2.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:58ebb1095ee493008a7789d47dd62e4999505d82be89fc884d473086fccc6ebd"},
+ {file = "watchdog-2.1.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:91387ee2421f30b75f7ff632c9d48f76648e56bf346a7c805c0a34187a93aab4"},
+ {file = "watchdog-2.1.2-py3-none-manylinux2014_armv7l.whl", hash = "sha256:a6471517315a8541a943c00b45f1d252e36898a3ae963d2d52509b89a50cb2b9"},
+ {file = "watchdog-2.1.2-py3-none-manylinux2014_i686.whl", hash = "sha256:a42e6d652f820b2b94cd03156c62559a2ea68d476476dfcd77d931e7f1012d4a"},
+ {file = "watchdog-2.1.2-py3-none-manylinux2014_ppc64.whl", hash = "sha256:3d6405681471ebe0beb3aa083998c4870e48b57f8afdb45ea1b5957cc5cf1014"},
+ {file = "watchdog-2.1.2-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:598d772beeaf9c98d0df946fbabf0c8365dd95ea46a250c224c725fe0c4730bc"},
+ {file = "watchdog-2.1.2-py3-none-manylinux2014_s390x.whl", hash = "sha256:4b219d46d89cfa49af1d73175487c14a318a74cb8c5442603fd13c6a5b418c86"},
+ {file = "watchdog-2.1.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:188145185c08c73c56f1478ccf1f0f0f85101191439679b35b6b100886ce0b39"},
+ {file = "watchdog-2.1.2-py3-none-win32.whl", hash = "sha256:255a32d44bbbe62e52874ff755e2eefe271b150e0ec240ad7718a62a7a7a73c4"},
+ {file = "watchdog-2.1.2-py3-none-win_amd64.whl", hash = "sha256:1a62a4671796dc93d1a7262286217d9e75823c63d4c42782912d39a506d30046"},
+ {file = "watchdog-2.1.2-py3-none-win_ia64.whl", hash = "sha256:104266a778906ae0e971368d368a65c4cd032a490a9fca5ba0b78c6c7ae11720"},
+ {file = "watchdog-2.1.2.tar.gz", hash = "sha256:0237db4d9024859bea27d0efb59fe75eef290833fd988b8ead7a879b0308c2db"},
+]
xmltodict = [
{file = "xmltodict-0.12.0-py2.py3-none-any.whl", hash = "sha256:8bbcb45cc982f48b2ca8fe7e7827c5d792f217ecf1792626f808bf41c3b86051"},
{file = "xmltodict-0.12.0.tar.gz", hash = "sha256:50d8c638ed7ecb88d90561beedbf720c9b4e851a9fa6c47ebd64e99d166d8a21"},
]
yq = [
- {file = "yq-2.12.0-py2.py3-none-any.whl", hash = "sha256:1f124f48dee77ad5e0be8607777fed183e96c8d31fa577de14201c7a614e4819"},
- {file = "yq-2.12.0.tar.gz", hash = "sha256:1d2ad403504d306b5258b86c698f9856d7ad58b7bb17a2b875691a6a7b8c4c20"},
+ {file = "yq-2.12.2-py2.py3-none-any.whl", hash = "sha256:9fdf4487a6dbf985ca1d357ec93f926d982813e8e896e8892bae95162b6defe3"},
+ {file = "yq-2.12.2.tar.gz", hash = "sha256:2f156d0724b61487ac8752ed4eaa702a5737b804d5afa46fa55866951cd106d2"},
]
zipp = [
- {file = "zipp-3.4.0-py3-none-any.whl", hash = "sha256:102c24ef8f171fd729d46599845e95c7ab894a4cf45f5de11a44cc7444fb1108"},
- {file = "zipp-3.4.0.tar.gz", hash = "sha256:ed5eee1974372595f9e416cc7bbeeb12335201d8081ca8a0743c954d4446e5cb"},
+ {file = "zipp-3.4.1-py3-none-any.whl", hash = "sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098"},
+ {file = "zipp-3.4.1.tar.gz", hash = "sha256:3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76"},
]
diff --git a/pyproject.toml b/pyproject.toml
index 8a46fe34..b8c4731e 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -50,6 +50,7 @@ black = {version = "^21.5b2",allow-prereleases = true}
toml = ">=0.10"
pyflakes = ">=2.2.0"
pytest = ">=6.2"
+pytest-bdd = "^4.0.1"
yq = ">=2.11"
[tool.poetry.scripts]
@@ -62,6 +63,9 @@ line_length = 88
known_first_party = ["jrnl"]
force_sort_within_sections = true
+[tool.pytest.ini_options]
+minversion = "6.0"
+
[build-system]
requires = ["poetry>=1.1"]
build-backend = "poetry.masonry.api"
diff --git a/tests/features/build.feature b/tests/features/build.feature
new file mode 100644
index 00000000..4725ea85
--- /dev/null
+++ b/tests/features/build.feature
@@ -0,0 +1,8 @@
+Feature: Build process
+
+ @deployment_tests
+ Scenario: Version numbers should stay in sync
+ Given we use the config "simple.yaml"
+ When we run "jrnl --version"
+ Then we should get no error
+ And the output should contain pyproject.toml version
diff --git a/tests/features/configs/basic_dayone.yaml b/tests/features/configs/basic_dayone.yaml
new file mode 100644
index 00000000..0209f2f7
--- /dev/null
+++ b/tests/features/configs/basic_dayone.yaml
@@ -0,0 +1,17 @@
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
+default_hour: 9
+default_minute: 0
+editor: noop
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/basic_dayone.dayone
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/configs/basic_encrypted.yaml b/tests/features/configs/basic_encrypted.yaml
new file mode 100644
index 00000000..77f4e48d
--- /dev/null
+++ b/tests/features/configs/basic_encrypted.yaml
@@ -0,0 +1,17 @@
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
+default_hour: 9
+default_minute: 0
+editor: noop
+encrypt: true
+highlight: true
+journals:
+ default: features/journals/basic_encrypted.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/configs/basic_folder.yaml b/tests/features/configs/basic_folder.yaml
new file mode 100644
index 00000000..ba0de638
--- /dev/null
+++ b/tests/features/configs/basic_folder.yaml
@@ -0,0 +1,17 @@
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
+default_hour: 9
+default_minute: 0
+editor: noop
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/basic_folder
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/configs/basic_onefile.yaml b/tests/features/configs/basic_onefile.yaml
new file mode 100644
index 00000000..fb48c6f8
--- /dev/null
+++ b/tests/features/configs/basic_onefile.yaml
@@ -0,0 +1,17 @@
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
+default_hour: 9
+default_minute: 0
+editor: noop
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/basic_onefile.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/configs/brackets.yaml b/tests/features/configs/brackets.yaml
new file mode 100644
index 00000000..e658947c
--- /dev/null
+++ b/tests/features/configs/brackets.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/brackets.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/configs/bug153.yaml b/tests/features/configs/bug153.yaml
new file mode 100644
index 00000000..ff645ab6
--- /dev/null
+++ b/tests/features/configs/bug153.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/bug153.dayone
+linewrap: 80
+tagsymbols: '@'
+template: false
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/configs/bug343.yaml b/tests/features/configs/bug343.yaml
new file mode 100644
index 00000000..a4e25d8a
--- /dev/null
+++ b/tests/features/configs/bug343.yaml
@@ -0,0 +1,13 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+template: false
+encrypt: false
+highlight: true
+journals:
+ simple: features/journals/simple.journal
+ work: features/journals/work.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/configs/bug780.yaml b/tests/features/configs/bug780.yaml
new file mode 100644
index 00000000..e1d830c2
--- /dev/null
+++ b/tests/features/configs/bug780.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/bug780.dayone
+linewrap: 80
+tagsymbols: '@'
+template: false
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/configs/dayone.yaml b/tests/features/configs/dayone.yaml
new file mode 100644
index 00000000..894cb911
--- /dev/null
+++ b/tests/features/configs/dayone.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: noop
+template: false
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/dayone.dayone
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/configs/dayone_empty.yaml b/tests/features/configs/dayone_empty.yaml
new file mode 100644
index 00000000..7750d389
--- /dev/null
+++ b/tests/features/configs/dayone_empty.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: noop
+template: false
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/dayone_empty.dayone
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/configs/deletion.yaml b/tests/features/configs/deletion.yaml
new file mode 100644
index 00000000..d4155260
--- /dev/null
+++ b/tests/features/configs/deletion.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/deletion.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/configs/deletion_filters.yaml b/tests/features/configs/deletion_filters.yaml
new file mode 100644
index 00000000..73a88e4d
--- /dev/null
+++ b/tests/features/configs/deletion_filters.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/deletion_filters.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/configs/editor-args.yaml b/tests/features/configs/editor-args.yaml
new file mode 100644
index 00000000..12c5bd9c
--- /dev/null
+++ b/tests/features/configs/editor-args.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: vim -f -c 'setf markdown'
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/simple.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/configs/editor.yaml b/tests/features/configs/editor.yaml
new file mode 100644
index 00000000..8a06f916
--- /dev/null
+++ b/tests/features/configs/editor.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: "vim"
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/simple.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/configs/editor_empty_folder.yaml b/tests/features/configs/editor_empty_folder.yaml
new file mode 100644
index 00000000..1724bbfb
--- /dev/null
+++ b/tests/features/configs/editor_empty_folder.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: 'vim'
+template: false
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/empty_folder
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/configs/editor_encrypted.yaml b/tests/features/configs/editor_encrypted.yaml
new file mode 100644
index 00000000..75273c96
--- /dev/null
+++ b/tests/features/configs/editor_encrypted.yaml
@@ -0,0 +1,17 @@
+colors:
+ body: green
+ date: blue
+ tags: none
+ title: yellow
+default_hour: 9
+default_minute: 0
+editor: "vim"
+encrypt: true
+template: false
+highlight: true
+journals:
+ default: features/journals/encrypted.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/configs/editor_markdown_extension.yaml b/tests/features/configs/editor_markdown_extension.yaml
new file mode 100644
index 00000000..bf3b8d8e
--- /dev/null
+++ b/tests/features/configs/editor_markdown_extension.yaml
@@ -0,0 +1,18 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+editor: "vim"
+journals:
+ default: features/journals/editor_markdown_extension.journal
+linewrap: 80
+tagsymbols: "@"
+template: features/templates/extension.md
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/configs/empty_folder.yaml b/tests/features/configs/empty_folder.yaml
new file mode 100644
index 00000000..52a21854
--- /dev/null
+++ b/tests/features/configs/empty_folder.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+template: false
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/empty_folder
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/configs/encrypted.yaml b/tests/features/configs/encrypted.yaml
new file mode 100644
index 00000000..4d50b607
--- /dev/null
+++ b/tests/features/configs/encrypted.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: true
+template: false
+highlight: true
+journals:
+ default: features/journals/encrypted.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/configs/encrypted_old.json b/tests/features/configs/encrypted_old.json
new file mode 100644
index 00000000..e69d9b79
--- /dev/null
+++ b/tests/features/configs/encrypted_old.json
@@ -0,0 +1,13 @@
+{
+ "default_hour": 9,
+ "default_minute": 0,
+ "editor": "",
+ "encrypt": true,
+ "highlight": true,
+ "journals": {
+ "default": "features/journals/encrypted_jrnl-1-9-5.journal"
+ },
+ "linewrap": 80,
+ "tagsymbols": "@",
+ "timeformat": "%Y-%m-%d %H:%M"
+}
diff --git a/tests/features/configs/encrypted_old.yaml b/tests/features/configs/encrypted_old.yaml
new file mode 100644
index 00000000..bc7b1440
--- /dev/null
+++ b/tests/features/configs/encrypted_old.yaml
@@ -0,0 +1,11 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: true
+highlight: true
+journals:
+ default: features/journals/encrypted_jrnl1-9-5.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/configs/format_md.yaml b/tests/features/configs/format_md.yaml
new file mode 100644
index 00000000..0b9f1c3b
--- /dev/null
+++ b/tests/features/configs/format_md.yaml
@@ -0,0 +1,19 @@
+colors:
+ body: none
+ date: none
+ tags: none
+ title: none
+default_hour: 9
+default_minute: 0
+display_format: markdown
+editor: ''
+encrypt: false
+highlight: true
+indent_character: '|'
+journals:
+ default: features/journals/simple.journal
+linewrap: 80
+tagsymbols: '@'
+template: false
+timeformat: '%Y-%m-%d %H:%M'
+version: v2.4.5
diff --git a/tests/features/configs/format_text.yaml b/tests/features/configs/format_text.yaml
new file mode 100644
index 00000000..c82ff7a7
--- /dev/null
+++ b/tests/features/configs/format_text.yaml
@@ -0,0 +1,19 @@
+colors:
+ body: none
+ date: none
+ tags: none
+ title: none
+default_hour: 9
+default_minute: 0
+display_format: text
+editor: ''
+encrypt: false
+highlight: true
+indent_character: '|'
+journals:
+ default: features/journals/simple.journal
+linewrap: 80
+tagsymbols: '@'
+template: false
+timeformat: '%Y-%m-%d %H:%M'
+version: v2.4.5
diff --git a/tests/features/configs/invalid_color.yaml b/tests/features/configs/invalid_color.yaml
new file mode 100644
index 00000000..25c0e58d
--- /dev/null
+++ b/tests/features/configs/invalid_color.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/simple.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: not-a-color
+ title: also-not-a-color
+ body: still-no-color
+ tags: me-too
diff --git a/tests/features/configs/little_endian_dates.yaml b/tests/features/configs/little_endian_dates.yaml
new file mode 100644
index 00000000..223c820d
--- /dev/null
+++ b/tests/features/configs/little_endian_dates.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/little_endian_dates.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%d.%m.%Y %H:%M"
+indent_character: "|"
diff --git a/tests/features/configs/markdown-headings-335.yaml b/tests/features/configs/markdown-headings-335.yaml
new file mode 100644
index 00000000..4368f641
--- /dev/null
+++ b/tests/features/configs/markdown-headings-335.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: false
+highlight: true
+template: false
+journals:
+ default: features/journals/markdown-headings-335.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/configs/missing_directory.yaml b/tests/features/configs/missing_directory.yaml
new file mode 100644
index 00000000..d600404c
--- /dev/null
+++ b/tests/features/configs/missing_directory.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/missing_directory/simple.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/configs/missing_journal.yaml b/tests/features/configs/missing_journal.yaml
new file mode 100644
index 00000000..a1f6f8cf
--- /dev/null
+++ b/tests/features/configs/missing_journal.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/missing.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/configs/mostlyreadabledates.yaml b/tests/features/configs/mostlyreadabledates.yaml
new file mode 100644
index 00000000..5e3e1a15
--- /dev/null
+++ b/tests/features/configs/mostlyreadabledates.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/mostlyreadabledates.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/configs/multiline-tags.yaml b/tests/features/configs/multiline-tags.yaml
new file mode 100644
index 00000000..033aaa27
--- /dev/null
+++ b/tests/features/configs/multiline-tags.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/multiline-tags.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/configs/multiline.yaml b/tests/features/configs/multiline.yaml
new file mode 100644
index 00000000..aa35b3f5
--- /dev/null
+++ b/tests/features/configs/multiline.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/multiline.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/configs/multiple.yaml b/tests/features/configs/multiple.yaml
new file mode 100644
index 00000000..65f2c256
--- /dev/null
+++ b/tests/features/configs/multiple.yaml
@@ -0,0 +1,18 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: false
+highlight: true
+template: false
+journals:
+ default: features/journals/simple.journal
+ ideas: features/journals/nothing.journal
+ simple: features/journals/simple.journal
+ work: features/journals/work.journal
+ new_encrypted:
+ encrypt: true
+ journal: features/journals/new_encrypted.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/configs/no_colors.yaml b/tests/features/configs/no_colors.yaml
new file mode 100644
index 00000000..9111b561
--- /dev/null
+++ b/tests/features/configs/no_colors.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/simple.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/configs/simple.yaml b/tests/features/configs/simple.yaml
new file mode 100644
index 00000000..f8739142
--- /dev/null
+++ b/tests/features/configs/simple.yaml
@@ -0,0 +1,18 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/simple.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
+version: v2.5
\ No newline at end of file
diff --git a/tests/features/configs/tags-216.yaml b/tests/features/configs/tags-216.yaml
new file mode 100644
index 00000000..81b3865f
--- /dev/null
+++ b/tests/features/configs/tags-216.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: false
+highlight: true
+template: false
+journals:
+ default: features/journals/tags-216.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/configs/tags-237.yaml b/tests/features/configs/tags-237.yaml
new file mode 100644
index 00000000..5aecd61e
--- /dev/null
+++ b/tests/features/configs/tags-237.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: false
+highlight: true
+template: false
+journals:
+ default: features/journals/tags-237.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/configs/tags.yaml b/tests/features/configs/tags.yaml
new file mode 100644
index 00000000..4b55952c
--- /dev/null
+++ b/tests/features/configs/tags.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: false
+highlight: true
+template: false
+journals:
+ default: features/journals/tags.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/configs/unreadabledates.yaml b/tests/features/configs/unreadabledates.yaml
new file mode 100644
index 00000000..99304e5a
--- /dev/null
+++ b/tests/features/configs/unreadabledates.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/unreadabledates.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/configs/upgrade_from_195.json b/tests/features/configs/upgrade_from_195.json
new file mode 100644
index 00000000..ec380372
--- /dev/null
+++ b/tests/features/configs/upgrade_from_195.json
@@ -0,0 +1,11 @@
+{
+"default_hour": 9,
+"timeformat": "%Y-%m-%d %H:%M",
+"linewrap": 80,
+"encrypt": false,
+"editor": "",
+"default_minute": 0,
+"highlight": true,
+"journals": {"default": "features/journals/simple_jrnl-1-9-5.journal"},
+"tagsymbols": "@"
+}
diff --git a/tests/features/configs/upgrade_from_195_little_endian_dates.json b/tests/features/configs/upgrade_from_195_little_endian_dates.json
new file mode 100644
index 00000000..7d3c470c
--- /dev/null
+++ b/tests/features/configs/upgrade_from_195_little_endian_dates.json
@@ -0,0 +1,11 @@
+{
+"default_hour": 9,
+"timeformat": "%d.%m.%Y %H:%M",
+"linewrap": 80,
+"encrypt": false,
+"editor": "",
+"default_minute": 0,
+"highlight": true,
+"journals": {"default": "features/journals/simple_jrnl-1-9-5_little_endian_dates.journal"},
+"tagsymbols": "@"
+}
diff --git a/tests/features/configs/upgrade_from_195_with_missing_encrypted_journal.json b/tests/features/configs/upgrade_from_195_with_missing_encrypted_journal.json
new file mode 100644
index 00000000..5bbfb5b1
--- /dev/null
+++ b/tests/features/configs/upgrade_from_195_with_missing_encrypted_journal.json
@@ -0,0 +1,11 @@
+{
+"default_hour": 9,
+"timeformat": "%Y-%m-%d %H:%M",
+"linewrap": 80,
+"encrypt": true,
+"editor": "",
+"default_minute": 0,
+"highlight": true,
+"journals": {"default": "features/journals/encrypted_jrnl-1-9-5.journal", "missing": "features/journals/missing.journal"},
+"tagsymbols": "@"
+}
diff --git a/tests/features/configs/upgrade_from_195_with_missing_journal.json b/tests/features/configs/upgrade_from_195_with_missing_journal.json
new file mode 100644
index 00000000..8d456159
--- /dev/null
+++ b/tests/features/configs/upgrade_from_195_with_missing_journal.json
@@ -0,0 +1,11 @@
+{
+"default_hour": 9,
+"timeformat": "%Y-%m-%d %H:%M",
+"linewrap": 80,
+"encrypt": false,
+"editor": "",
+"default_minute": 0,
+"highlight": true,
+"journals": {"default": "features/journals/simple_jrnl-1-9-5.journal", "missing": "features/journals/missing.journal"},
+"tagsymbols": "@"
+}
diff --git a/tests/features/core.feature b/tests/features/core.feature
new file mode 100644
index 00000000..3115fd57
--- /dev/null
+++ b/tests/features/core.feature
@@ -0,0 +1,7 @@
+Feature: Functionality of jrnl outside of actually handling journals
+
+ Scenario: Displaying the version number
+ Given we use the config "simple.yaml"
+ When we run "jrnl --version"
+ Then we should get no error
+ Then the output should match "^jrnl version v\d+\.\d+(\.\d+)?(-(alpha|beta)\d*)?"
diff --git a/tests/features/data/configs/basic_dayone.yaml b/tests/features/data/configs/basic_dayone.yaml
new file mode 100644
index 00000000..0209f2f7
--- /dev/null
+++ b/tests/features/data/configs/basic_dayone.yaml
@@ -0,0 +1,17 @@
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
+default_hour: 9
+default_minute: 0
+editor: noop
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/basic_dayone.dayone
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/data/configs/basic_encrypted.yaml b/tests/features/data/configs/basic_encrypted.yaml
new file mode 100644
index 00000000..77f4e48d
--- /dev/null
+++ b/tests/features/data/configs/basic_encrypted.yaml
@@ -0,0 +1,17 @@
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
+default_hour: 9
+default_minute: 0
+editor: noop
+encrypt: true
+highlight: true
+journals:
+ default: features/journals/basic_encrypted.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/data/configs/basic_folder.yaml b/tests/features/data/configs/basic_folder.yaml
new file mode 100644
index 00000000..ba0de638
--- /dev/null
+++ b/tests/features/data/configs/basic_folder.yaml
@@ -0,0 +1,17 @@
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
+default_hour: 9
+default_minute: 0
+editor: noop
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/basic_folder
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/data/configs/basic_onefile.yaml b/tests/features/data/configs/basic_onefile.yaml
new file mode 100644
index 00000000..fb48c6f8
--- /dev/null
+++ b/tests/features/data/configs/basic_onefile.yaml
@@ -0,0 +1,17 @@
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
+default_hour: 9
+default_minute: 0
+editor: noop
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/basic_onefile.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/data/configs/brackets.yaml b/tests/features/data/configs/brackets.yaml
new file mode 100644
index 00000000..e658947c
--- /dev/null
+++ b/tests/features/data/configs/brackets.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/brackets.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/data/configs/bug153.yaml b/tests/features/data/configs/bug153.yaml
new file mode 100644
index 00000000..ff645ab6
--- /dev/null
+++ b/tests/features/data/configs/bug153.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/bug153.dayone
+linewrap: 80
+tagsymbols: '@'
+template: false
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/data/configs/bug343.yaml b/tests/features/data/configs/bug343.yaml
new file mode 100644
index 00000000..a4e25d8a
--- /dev/null
+++ b/tests/features/data/configs/bug343.yaml
@@ -0,0 +1,13 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+template: false
+encrypt: false
+highlight: true
+journals:
+ simple: features/journals/simple.journal
+ work: features/journals/work.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/data/configs/bug780.yaml b/tests/features/data/configs/bug780.yaml
new file mode 100644
index 00000000..e1d830c2
--- /dev/null
+++ b/tests/features/data/configs/bug780.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/bug780.dayone
+linewrap: 80
+tagsymbols: '@'
+template: false
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/data/configs/dayone.yaml b/tests/features/data/configs/dayone.yaml
new file mode 100644
index 00000000..894cb911
--- /dev/null
+++ b/tests/features/data/configs/dayone.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: noop
+template: false
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/dayone.dayone
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/data/configs/dayone_empty.yaml b/tests/features/data/configs/dayone_empty.yaml
new file mode 100644
index 00000000..7750d389
--- /dev/null
+++ b/tests/features/data/configs/dayone_empty.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: noop
+template: false
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/dayone_empty.dayone
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/data/configs/deletion.yaml b/tests/features/data/configs/deletion.yaml
new file mode 100644
index 00000000..d4155260
--- /dev/null
+++ b/tests/features/data/configs/deletion.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/deletion.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/data/configs/deletion_filters.yaml b/tests/features/data/configs/deletion_filters.yaml
new file mode 100644
index 00000000..73a88e4d
--- /dev/null
+++ b/tests/features/data/configs/deletion_filters.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/deletion_filters.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/data/configs/editor-args.yaml b/tests/features/data/configs/editor-args.yaml
new file mode 100644
index 00000000..12c5bd9c
--- /dev/null
+++ b/tests/features/data/configs/editor-args.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: vim -f -c 'setf markdown'
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/simple.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/data/configs/editor.yaml b/tests/features/data/configs/editor.yaml
new file mode 100644
index 00000000..8a06f916
--- /dev/null
+++ b/tests/features/data/configs/editor.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: "vim"
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/simple.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/data/configs/editor_empty_folder.yaml b/tests/features/data/configs/editor_empty_folder.yaml
new file mode 100644
index 00000000..1724bbfb
--- /dev/null
+++ b/tests/features/data/configs/editor_empty_folder.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: 'vim'
+template: false
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/empty_folder
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/data/configs/editor_encrypted.yaml b/tests/features/data/configs/editor_encrypted.yaml
new file mode 100644
index 00000000..75273c96
--- /dev/null
+++ b/tests/features/data/configs/editor_encrypted.yaml
@@ -0,0 +1,17 @@
+colors:
+ body: green
+ date: blue
+ tags: none
+ title: yellow
+default_hour: 9
+default_minute: 0
+editor: "vim"
+encrypt: true
+template: false
+highlight: true
+journals:
+ default: features/journals/encrypted.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/data/configs/empty_folder.yaml b/tests/features/data/configs/empty_folder.yaml
new file mode 100644
index 00000000..52a21854
--- /dev/null
+++ b/tests/features/data/configs/empty_folder.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+template: false
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/empty_folder
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/data/configs/encrypted.yaml b/tests/features/data/configs/encrypted.yaml
new file mode 100644
index 00000000..4d50b607
--- /dev/null
+++ b/tests/features/data/configs/encrypted.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: true
+template: false
+highlight: true
+journals:
+ default: features/journals/encrypted.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/data/configs/encrypted_old.json b/tests/features/data/configs/encrypted_old.json
new file mode 100644
index 00000000..e69d9b79
--- /dev/null
+++ b/tests/features/data/configs/encrypted_old.json
@@ -0,0 +1,13 @@
+{
+ "default_hour": 9,
+ "default_minute": 0,
+ "editor": "",
+ "encrypt": true,
+ "highlight": true,
+ "journals": {
+ "default": "features/journals/encrypted_jrnl-1-9-5.journal"
+ },
+ "linewrap": 80,
+ "tagsymbols": "@",
+ "timeformat": "%Y-%m-%d %H:%M"
+}
diff --git a/tests/features/data/configs/encrypted_old.yaml b/tests/features/data/configs/encrypted_old.yaml
new file mode 100644
index 00000000..bc7b1440
--- /dev/null
+++ b/tests/features/data/configs/encrypted_old.yaml
@@ -0,0 +1,11 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: true
+highlight: true
+journals:
+ default: features/journals/encrypted_jrnl1-9-5.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/data/configs/format_md.yaml b/tests/features/data/configs/format_md.yaml
new file mode 100644
index 00000000..0b9f1c3b
--- /dev/null
+++ b/tests/features/data/configs/format_md.yaml
@@ -0,0 +1,19 @@
+colors:
+ body: none
+ date: none
+ tags: none
+ title: none
+default_hour: 9
+default_minute: 0
+display_format: markdown
+editor: ''
+encrypt: false
+highlight: true
+indent_character: '|'
+journals:
+ default: features/journals/simple.journal
+linewrap: 80
+tagsymbols: '@'
+template: false
+timeformat: '%Y-%m-%d %H:%M'
+version: v2.4.5
diff --git a/tests/features/data/configs/format_text.yaml b/tests/features/data/configs/format_text.yaml
new file mode 100644
index 00000000..c82ff7a7
--- /dev/null
+++ b/tests/features/data/configs/format_text.yaml
@@ -0,0 +1,19 @@
+colors:
+ body: none
+ date: none
+ tags: none
+ title: none
+default_hour: 9
+default_minute: 0
+display_format: text
+editor: ''
+encrypt: false
+highlight: true
+indent_character: '|'
+journals:
+ default: features/journals/simple.journal
+linewrap: 80
+tagsymbols: '@'
+template: false
+timeformat: '%Y-%m-%d %H:%M'
+version: v2.4.5
diff --git a/tests/features/data/configs/invalid_color.yaml b/tests/features/data/configs/invalid_color.yaml
new file mode 100644
index 00000000..25c0e58d
--- /dev/null
+++ b/tests/features/data/configs/invalid_color.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/simple.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: not-a-color
+ title: also-not-a-color
+ body: still-no-color
+ tags: me-too
diff --git a/tests/features/data/configs/little_endian_dates.yaml b/tests/features/data/configs/little_endian_dates.yaml
new file mode 100644
index 00000000..223c820d
--- /dev/null
+++ b/tests/features/data/configs/little_endian_dates.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/little_endian_dates.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%d.%m.%Y %H:%M"
+indent_character: "|"
diff --git a/tests/features/data/configs/markdown-headings-335.yaml b/tests/features/data/configs/markdown-headings-335.yaml
new file mode 100644
index 00000000..4368f641
--- /dev/null
+++ b/tests/features/data/configs/markdown-headings-335.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: false
+highlight: true
+template: false
+journals:
+ default: features/journals/markdown-headings-335.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/data/configs/missing_directory.yaml b/tests/features/data/configs/missing_directory.yaml
new file mode 100644
index 00000000..d600404c
--- /dev/null
+++ b/tests/features/data/configs/missing_directory.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/missing_directory/simple.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/data/configs/missing_journal.yaml b/tests/features/data/configs/missing_journal.yaml
new file mode 100644
index 00000000..a1f6f8cf
--- /dev/null
+++ b/tests/features/data/configs/missing_journal.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/missing.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/data/configs/mostlyreadabledates.yaml b/tests/features/data/configs/mostlyreadabledates.yaml
new file mode 100644
index 00000000..5e3e1a15
--- /dev/null
+++ b/tests/features/data/configs/mostlyreadabledates.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/mostlyreadabledates.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/data/configs/multiline-tags.yaml b/tests/features/data/configs/multiline-tags.yaml
new file mode 100644
index 00000000..033aaa27
--- /dev/null
+++ b/tests/features/data/configs/multiline-tags.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/multiline-tags.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/data/configs/multiline.yaml b/tests/features/data/configs/multiline.yaml
new file mode 100644
index 00000000..aa35b3f5
--- /dev/null
+++ b/tests/features/data/configs/multiline.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/multiline.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/data/configs/multiple.yaml b/tests/features/data/configs/multiple.yaml
new file mode 100644
index 00000000..65f2c256
--- /dev/null
+++ b/tests/features/data/configs/multiple.yaml
@@ -0,0 +1,18 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: false
+highlight: true
+template: false
+journals:
+ default: features/journals/simple.journal
+ ideas: features/journals/nothing.journal
+ simple: features/journals/simple.journal
+ work: features/journals/work.journal
+ new_encrypted:
+ encrypt: true
+ journal: features/journals/new_encrypted.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/tests/features/data/configs/no_colors.yaml b/tests/features/data/configs/no_colors.yaml
new file mode 100644
index 00000000..9111b561
--- /dev/null
+++ b/tests/features/data/configs/no_colors.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/simple.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/tests/features/data/configs/simple.yaml b/tests/features/data/configs/simple.yaml
new file mode 100644
index 00000000..020bab18
--- /dev/null
+++ b/tests/features/data/configs/simple.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/simple.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/data/configs/tags-216.yaml b/tests/features/data/configs/tags-216.yaml
new file mode 100644
index 00000000..81b3865f
--- /dev/null
+++ b/tests/features/data/configs/tags-216.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: false
+highlight: true
+template: false
+journals:
+ default: features/journals/tags-216.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/data/configs/tags-237.yaml b/tests/features/data/configs/tags-237.yaml
new file mode 100644
index 00000000..5aecd61e
--- /dev/null
+++ b/tests/features/data/configs/tags-237.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: false
+highlight: true
+template: false
+journals:
+ default: features/journals/tags-237.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/data/configs/tags.yaml b/tests/features/data/configs/tags.yaml
new file mode 100644
index 00000000..4b55952c
--- /dev/null
+++ b/tests/features/data/configs/tags.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ''
+encrypt: false
+highlight: true
+template: false
+journals:
+ default: features/journals/tags.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/data/configs/unreadabledates.yaml b/tests/features/data/configs/unreadabledates.yaml
new file mode 100644
index 00000000..99304e5a
--- /dev/null
+++ b/tests/features/data/configs/unreadabledates.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/unreadabledates.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/tests/features/data/configs/upgrade_from_195.json b/tests/features/data/configs/upgrade_from_195.json
new file mode 100644
index 00000000..ec380372
--- /dev/null
+++ b/tests/features/data/configs/upgrade_from_195.json
@@ -0,0 +1,11 @@
+{
+"default_hour": 9,
+"timeformat": "%Y-%m-%d %H:%M",
+"linewrap": 80,
+"encrypt": false,
+"editor": "",
+"default_minute": 0,
+"highlight": true,
+"journals": {"default": "features/journals/simple_jrnl-1-9-5.journal"},
+"tagsymbols": "@"
+}
diff --git a/tests/features/data/configs/upgrade_from_195_little_endian_dates.json b/tests/features/data/configs/upgrade_from_195_little_endian_dates.json
new file mode 100644
index 00000000..7d3c470c
--- /dev/null
+++ b/tests/features/data/configs/upgrade_from_195_little_endian_dates.json
@@ -0,0 +1,11 @@
+{
+"default_hour": 9,
+"timeformat": "%d.%m.%Y %H:%M",
+"linewrap": 80,
+"encrypt": false,
+"editor": "",
+"default_minute": 0,
+"highlight": true,
+"journals": {"default": "features/journals/simple_jrnl-1-9-5_little_endian_dates.journal"},
+"tagsymbols": "@"
+}
diff --git a/tests/features/data/configs/upgrade_from_195_with_missing_encrypted_journal.json b/tests/features/data/configs/upgrade_from_195_with_missing_encrypted_journal.json
new file mode 100644
index 00000000..5bbfb5b1
--- /dev/null
+++ b/tests/features/data/configs/upgrade_from_195_with_missing_encrypted_journal.json
@@ -0,0 +1,11 @@
+{
+"default_hour": 9,
+"timeformat": "%Y-%m-%d %H:%M",
+"linewrap": 80,
+"encrypt": true,
+"editor": "",
+"default_minute": 0,
+"highlight": true,
+"journals": {"default": "features/journals/encrypted_jrnl-1-9-5.journal", "missing": "features/journals/missing.journal"},
+"tagsymbols": "@"
+}
diff --git a/tests/features/data/configs/upgrade_from_195_with_missing_journal.json b/tests/features/data/configs/upgrade_from_195_with_missing_journal.json
new file mode 100644
index 00000000..8d456159
--- /dev/null
+++ b/tests/features/data/configs/upgrade_from_195_with_missing_journal.json
@@ -0,0 +1,11 @@
+{
+"default_hour": 9,
+"timeformat": "%Y-%m-%d %H:%M",
+"linewrap": 80,
+"encrypt": false,
+"editor": "",
+"default_minute": 0,
+"highlight": true,
+"journals": {"default": "features/journals/simple_jrnl-1-9-5.journal", "missing": "features/journals/missing.journal"},
+"tagsymbols": "@"
+}
diff --git a/tests/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry b/tests/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry
new file mode 100644
index 00000000..9721dd55
--- /dev/null
+++ b/tests/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry
@@ -0,0 +1,53 @@
+
+
+
+
+ Creation Date
+ 2020-08-29T18:11:00Z
+ Starred
+
+ Entry Text
+ Entry the first.
+Lorem @ipsum dolor sit amet, consectetur adipiscing elit. Praesent malesuada
+quis est ac dignissim. Aliquam dignissim rutrum pretium. Phasellus pellentesque
+augue et venenatis facilisis. Suspendisse potenti. Sed dignissim sed nisl eu
+consequat. Aenean ante ex, elementum ut interdum et, mattis eget lacus. In
+commodo nulla nec tellus placerat, sed ultricies metus bibendum. Duis eget
+venenatis erat. In at dolor dui. @tagone and maybe also @tagtwo.
+
+Curabitur accumsan nunc ac neque tristique, eleifend faucibus justo
+ullamcorper. Suspendisse at mattis nunc. Nullam eget lacinia urna. Suspendisse
+potenti. Ut urna est, venenatis sed ante in, ultrices congue mi. Maecenas eget
+molestie metus. Mauris porttitor dui ornare gravida porta. Quisque sed lectus
+hendrerit, lacinia ante eget, vulputate ante. Aliquam vitae erat non felis
+feugiat sagittis. Phasellus quis arcu fringilla, mattis ligula id, vestibulum
+urna. Vivamus facilisis leo a mi tincidunt condimentum. Donec eu euismod enim.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam eu ligula eget
+velit scelerisque fringilla. Phasellus pharetra justo et nulla fringilla, ac
+porta sapien accumsan. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos.
+ Time Zone
+ America/Los_Angeles
+ UUID
+ D04D335AFED711EABA18FAFFC2100C3D
+ Tags
+
+ ipsum
+ tagone
+ tagtwo
+
+ Creator
+
+ Device Agent
+
+ Generation Date
+ 2020-09-25T02:35:45Z
+ Host Name
+ iris.lan
+ OS Agent
+ Darwin/19.3.0
+ Software Agent
+ jrnl/v2.4.5
+
+
+
diff --git a/tests/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry b/tests/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry
new file mode 100644
index 00000000..8c2f3c52
--- /dev/null
+++ b/tests/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry
@@ -0,0 +1,55 @@
+
+
+
+
+ Creation Date
+ 2020-08-31T21:32:00Z
+ Starred
+
+ Entry Text
+ A second entry in what I hope to be a long series.
+Sed sit amet metus et sapien feugiat elementum. Aliquam bibendum lobortis leo
+vitae tempus. Donec eleifend nec mi non volutpat. Lorem ipsum dolor sit amet,
+consectetur adipiscing elit. Praesent ut sodales libero. Maecenas nisl lorem,
+vestibulum in tempus sit amet, fermentum ut arcu. Donec vel vestibulum lectus,
+eget pretium enim. Maecenas diam nunc, imperdiet vitae pharetra sed, pretium id
+lectus. Donec eu metus et turpis tempor tristique ac non ex. In tellus arcu,
+egestas at efficitur et, ultrices vel est. Sed commodo et nibh non elementum.
+Mauris tempus vitae neque vel viverra. @tagtwo all by its lonesome.
+
+Nulla mattis elementum magna, viverra pretium dui fermentum et. Cras vel
+vestibulum odio. Quisque sit amet turpis et urna finibus maximus. Interdum et
+malesuada fames ac ante ipsum primis in faucibus. Fusce porttitor iaculis sem,
+non dictum ipsum varius nec. Nulla eu erat at risus gravida blandit non vel
+ante. Nam egestas ipsum leo, eu ultricies ipsum tincidunt vel. Morbi a commodo
+eros.
+
+Nullam dictum, nisl ac varius tempus, ex tortor fermentum nisl, non
+tempus dolor neque a lorem. Suspendisse a faucibus ex, vel ornare tortor.
+Maecenas tincidunt id felis quis semper. Pellentesque enim libero, fermentum
+quis metus id, rhoncus euismod magna. Nulla finibus velit eu purus bibendum
+interdum. Integer id justo dui. Integer eu tellus in turpis bibendum blandit.
+Quisque auctor lacinia consectetur.
+ Time Zone
+ America/Los_Angeles
+ UUID
+ FC8A86CAFED711EA8892FAFFC2100C3D
+ Tags
+
+ tagtwo
+
+ Creator
+
+ Device Agent
+
+ Generation Date
+ 2020-09-25T02:36:59Z
+ Host Name
+ iris.lan
+ OS Agent
+ Darwin/19.3.0
+ Software Agent
+ jrnl/v2.4.5
+
+
+
diff --git a/tests/features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry b/tests/features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry
new file mode 100644
index 00000000..d998c36b
--- /dev/null
+++ b/tests/features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry
@@ -0,0 +1,44 @@
+
+
+
+
+ Creation Date
+ 2020-09-24T16:14:00Z
+ Starred
+
+ Entry Text
+ The third entry finally after weeks without writing.
+I'm so excited about emojis. 💯 🎶 💩
+
+Donec semper pellentesque iaculis. Nullam cursus et justo sit amet venenatis.
+Vivamus tempus ex dictum metus vehicula gravida. Aliquam sed sem dolor. Nulla
+eget ultrices purus. Quisque at nunc at quam pharetra consectetur vitae quis
+dolor. Fusce ultricies purus eu est feugiat, quis scelerisque nibh malesuada.
+Quisque egestas semper nibh in hendrerit. Nam finibus ex in mi mattis
+vulputate. Sed mauris urna, consectetur in justo eu, volutpat accumsan justo.
+Phasellus aliquam lacus placerat convallis vestibulum. Curabitur maximus at
+ante eget fringilla. @tagthree and also @tagone
+ Time Zone
+ America/Los_Angeles
+ UUID
+ FD8ABC8EFED711EABC35FAFFC2100C3D
+ Tags
+
+ tagthree
+ tagone
+
+ Creator
+
+ Device Agent
+
+ Generation Date
+ 2020-09-25T02:37:01Z
+ Host Name
+ iris.lan
+ OS Agent
+ Darwin/19.3.0
+ Software Agent
+ jrnl/v2.4.5
+
+
+
diff --git a/tests/features/data/journals/basic_encrypted.journal b/tests/features/data/journals/basic_encrypted.journal
new file mode 100644
index 00000000..ffc122df
--- /dev/null
+++ b/tests/features/data/journals/basic_encrypted.journal
@@ -0,0 +1 @@
+gAAAAABfb4gQBMqqGn_W8v_s7qCi14bX7inuCOKbsBqIUf7_ch14vTUp7lrysPFvhBp5vGijTwDIbk4LKoIISj8NwM31I8L0zEbMx9y6iyF_zseGGNxBvNN0wzAXa67bs-ohiQhhebcdIc_52sltxL2ELh8JAKUaXRwyapgnMgJ7z6deJppLK-B7RE7BiT0eKjWTDMd2x6cZDswvHs9opDp5yjuKWV5m7x6ggCKYgHT3savT9Tg7V0Fq6K3LGWaE59lCrqlAB0u6dnrDX3qcF4SKyckaniXzRShZGebdkUKDcLFun2V2syZwYQN772xjznIsJ16iXicox2uYKg8CnTefsyCwaOZyBvySGEy3CrlBiuIRIcxCtjKbYJ2B-Aq7LZitnBR7Ny_6_Wm8HsBf3N-cFCp4GShiCKrxuXKcOZ7vszG5EKb78JS85bb0mswU5CSdgp6UAHjIZqfJq00qQsViBCbXq3oklCPZXdQkOf5U0KpG2MVUiD-Zcn5Qj3gnUhSEr-5wKU9tWrE63MGPyE6KjZlArZX2W2LeGnW2CEYw9eREGon06AzLJ4mj3BgtjVWLIdGcCwORXvHRjUqazWgbEmXNVTbtp_cKnkW-rFzRBrUoVme9v-1Y3sH0VvHBq7QIj915VzBklzWs1qzIyTPZG5Db9LvdQ7SiV8slf1Jo7l-ayUUdVj6igvKZcgfB4RUHolJoMps5p4lZ5sPqv59KtSa8DCpuoRczIj71OCpuRVARZgy1m5sUD9xSMxOBdy46u1Jnry6iMtzXWI3mEZe5m7UhmW_L4Zcv4bbk8XjkBeHjPdgm2B69jkLmCBFecD5ztoGesCGt_pNo_sWSKqLHV1-coKFB2Nn__a4utU9NJNdeNRkr8_ahU6tn3jmaFjfQ7cKfrXG_NCcYBRX9fja8EQIeBEp_3TCoXQqhuV_bGsNPA2qL63Pt6YiRaUf1g9FNBqJRlKCSOYNixSXQZN_rTePzx0SQ0aIQhADWls62WX-LG5-byJcB6W2P_cH21hDOXkoNEIyLnCz9HQ6Yd6Fbv7298ps3F6jiUDdWES23zv8sDgBuKUN94qSN34j6MDYGFnGI9zsJ-Y-I2frdlLfWPx3pUL7afcKh1nRgXdjctsTSxU2BDrsu03eBz2IoZjoOR0U51IrNMOD1NNT3kctXxHLuOHSEkwAzS3doncQbdRLi5Gc1dQuOUa4sC-p8gVjUKXO-oi_49kp9Km2Ay9wFg0epBbXx2QMzyMsN2dXeSbHF-BDXD6sULaq5syC0fOHqaMLycTCMk2wLfNyXgEt05WvAiDn-LDsRdylMRW2hXp5HWq3Poaul-7VNg6UEMlwVfgJ-7hNreuO6IRtwmx6YdqMscw0ms6mU_MQZU_dTIPg3JU4KL0YyMqPBPSGNCx3gMp41O05Ubir45FoJSnT5Dkj4v3N0S87Ys3HuFLverASsGt9bkcSzd2uMKCJjkspemPPi9VhrY4IOO03DWSWbHmxYzFc1SJ-24WM8Ch404QKpe1qy5LNzFgLvDwQhSIHjluezHXqrD-DVh1lWNNY3WmHI2ubOZfaorvLKqzBPZ6AhpIa60rKjm0OZIQOmJwWXwkdnzut6m8PtoiLzRN897YMgeztf1nmDwp0xE-EhknVZ3WV3TeqgZJ5ykfHQ5BU8x0Db57-UtKSuesKbqPPdBe91OdsPpkGlyl6psHj1_gPm4nLvzXQePwiPaEemR_gYCWGPvl9l1ANJufgCV9qQTmZGof3fb9mjv-9lS-9l_m8KirPPRpSBToNeDtk50ceYUsOlDGzIyusppG9pOcIGyiln1IO5aZ8d4_1E83qjcHTSaKGizICZU7a-pt5STBPMesy3JgBm23A2jO4m68ayBRMcLnw_RirHvvBaj0C6UR2tac45F0Ob3PpXcvFuK0g54ziIAhzGqwF9I-LZ6asXQWMW4y4EBOak8JJBorkfztzfkMaIgGu-4ZoRKOkVfdr4uzcghk3r6KUxD4-nv1ioX69-G5RwhMHppYk7z8RXS1cq5FkvzXbfEQ-Uv6M-sx32DcUy9dH-ZYhc7UWm75JJfiNXLaXT_bsc6VqQ7KPkg2-RA7CywUFCW9S0S-XdO03VdwqlUVo7fp1SKywEfhZv_9bhDCdMJBwZmigv2KP9Iz7fF6LrpLwZkzHuQGFPcyTHFpsVIFrFyJjNYCXpET9y0Q5Vt4fnea5fy-9ZiCt3S8aS0YOFJ35_kM5i3ss8eFPL0v7fIQS3ZilzdGB3bWL0J7kppHN_ekHu-wVk3UZxauoFh7hXLjPcipua-FYUIklLjcK6DG1bYP7_q6OnkC8Jl650FNezeWPomHEv7l_DO3y0tjI6SGdWvL3ZJns7Xp3ew8KsCREAUO7ffqumD03uF9N-9uWbDDjM7rk0vcg0ggfOs9Ni725mxqYpu4R285XCOVWHDvw7iU6eAvE6ry8TDXQBbNgGjTuTYFYYli7GuOqMxFIe1op2s7sRnoJE8O0J76S6APhjhjcnZRSuONWkVG_5o83uFMPSF8DtqLwuRA5E8AGfIwAUcj324sw-DA0ixBGUqomb-osUIisv3x0b044xn-FvD-8R3PZDnPbPsao8XYNxfQWStrNcZSrX2Ua-WAcv9qbQ73_57RKW4pao4ajOu7K5800D231WGiIa6aJzDnFUlzXEzYxFQyx7qegkm_9rrEp_v8TC9mfAcjWX5DMrCkxUskx9YKDfpFYq4NuxO_414gReKzd-lmorfigvttgS10N1XD74SwFluXJv-bqTbI5-SuYAhDGMv1dqrn38i3rOMQqqnQomvaUJRprqxUsKz14sSE1Y-cNqq1FXzZ6vIJq-K3YTfFWPRLeqi6gHzqS_R2YBXXUduKuYgmakiVdP3bWc-Ca8WKh5sVi6P51MO-cS7i9AZWOaOz7F8PsB4JZxAJjSOr3NBmv3EEve9auTFCudRjfC6668I_NMHaTP5CCV4cuhuAxUuKUGgd6WFjDcvoYPyn_lu3bQiqD9MEag4CaJYI9PlraRv5mbqptwxv3pca7usd0GmXN_2No_nwxB4gVb48LsBBkH35njCa5iv2EKXUSOf0k3swaTSEahqbyI4EDzPXtU5uBO39iQzNpgfV_sUpnGdysjqueUVcdWGI_s5CnrNJ-_yDAY06AoXfLrjP8_3NXB2058xZ2rfmTNJNCULz9634dICJReXNnmplxIg3i6GbzFvjfNtqjrWr_iqBShyIwuOUJRbXzdJNggx2BDNG-PEWDXl89SaudFICkDvyZKEcATIss6ZXfULIMfCrqmWmFwgXfNEd9TuvjqoxFlLSaY4UfDMiYa_arUMblFfoo5nV07GANhUoQd-6HRe7LjYeX5VRodOx6ZmZjIAUq-DYr-hatJJFR2tjT_qZht2MJeYT3GZ3o54m8zBBt0JTN7HVpKaOaM3A2hEM_Ah0QZ-DkLDxtCzMuv987GDiLT2-Riya97a47yHIJhZFzFpflW2FcuC8RFWXlfUKTQfZkFmxh3MUekUuS4yu4Z121xojVswk_4P7-FqLaSnGT2epI69I_cvalRx3wjds9-5TFYqf4GridlFBRx6Fv2fpNB9Zvp9k7NQ9oYcPuXGLoXH5kmWBagPhEGKHA_pjFUZmCuwUIoeP4nP8lhFrX8OGezsbSBG773CRJzEdfcgAc5G-p6M_24WZLZHDrsVBAvgrNt6R9eQbEviWU28t_417QCp-or9qqt4OTKv1dp_4MlZh8YBg2-dtpvzSc1l5e4kQFJu7oWlpbgsjB6pl1oRRKp1maedX-gOAf559zC4l85gfEpPln9Cnl6xvERQzfO0Ey4q91SdsgK7i7FBrKKmi2wGiemFvnaQsrjZ_IFujLo8-2c8g9zTiyH1knyoVOAAnQxqGpsz6z6PNfSxr3_G8tOlNFTV-yqN_LdVHMgXtXjn3U9koGsfMulyUcBDdR3d_0Yn6iEjBt77tbxKi2ry-0gQrB1fdGsgKjyE_tMrW8D_lQz0IXsVOzd2ixsFVXMFzD6OOD8JldV0FbA-VDAS-Tp_ezIZVp6lRq54XBgvsjzDyOmOgDbSOQN6SQmvxPnIsml1wgmtm80z-9gHBqmimHBtLKB6L7CtLmmPICMS2pX3eWOmakxscxqs8AVjijJdz_NYNfcdBeDj_fhm6dqD6iwk3EBZZfsrmMGdXtAMqf1r9ng9tsz-FriXwQiJ3IM3loBsk5DKr9CcaJtKSPuwDDlRynD2vwcD-XyF6YTQdSJa9fEcq-qXya2Scj4mqQ4RDemJgErdradRfwJfII3fWHh18XxmYVqi9Bwn3YRgwEadyo0-HjbNq6vJXi12igmP99ciRAfMVQLjfUfTwoOHj44Y2Ru_hPjJcvB6FIn6KLrrCSrZnrshFdFn4L36z1CrS8fbtdvrG3kdZQxsUJnMqttuwKRpLnDWTWkIwj_GRBFrzCFgbwGp1XYhemxggyKVuhZPfyyTIM9rhlPth6eGyrpYfap24Av_mGPRBLnzcjtpGbACGdKQL034kVmI7yENGvmY40KSrWsVG_BE9bSJhx0EptFsT2IxnxbuFD4hGb4fFag9V0BDiKpUoOZqIVqVO8cAp-5w4twvWZKkrhu16JNlLoXWMoFANrw-tp5LKSin1CUeRa4LWVI1GR8tRkIad_GnCHRv9JEMswlNy9wi2sDNsSxWT7WNasUW5-glgK9pR7d2pXGGOWfHj1U6CKIqmAiO3iw8igzhvyx_dAxMxPo
\ No newline at end of file
diff --git a/tests/features/data/journals/basic_folder/2020/08/29.txt b/tests/features/data/journals/basic_folder/2020/08/29.txt
new file mode 100644
index 00000000..c8af54ca
--- /dev/null
+++ b/tests/features/data/journals/basic_folder/2020/08/29.txt
@@ -0,0 +1,19 @@
+[2020-08-29 11:11:00 AM] Entry the first.
+Lorem @ipsum dolor sit amet, consectetur adipiscing elit. Praesent malesuada
+quis est ac dignissim. Aliquam dignissim rutrum pretium. Phasellus pellentesque
+augue et venenatis facilisis. Suspendisse potenti. Sed dignissim sed nisl eu
+consequat. Aenean ante ex, elementum ut interdum et, mattis eget lacus. In
+commodo nulla nec tellus placerat, sed ultricies metus bibendum. Duis eget
+venenatis erat. In at dolor dui. @tagone and maybe also @tagtwo.
+
+Curabitur accumsan nunc ac neque tristique, eleifend faucibus justo
+ullamcorper. Suspendisse at mattis nunc. Nullam eget lacinia urna. Suspendisse
+potenti. Ut urna est, venenatis sed ante in, ultrices congue mi. Maecenas eget
+molestie metus. Mauris porttitor dui ornare gravida porta. Quisque sed lectus
+hendrerit, lacinia ante eget, vulputate ante. Aliquam vitae erat non felis
+feugiat sagittis. Phasellus quis arcu fringilla, mattis ligula id, vestibulum
+urna. Vivamus facilisis leo a mi tincidunt condimentum. Donec eu euismod enim.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam eu ligula eget
+velit scelerisque fringilla. Phasellus pharetra justo et nulla fringilla, ac
+porta sapien accumsan. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos.
diff --git a/tests/features/data/journals/basic_folder/2020/08/31.txt b/tests/features/data/journals/basic_folder/2020/08/31.txt
new file mode 100644
index 00000000..826e7cdb
--- /dev/null
+++ b/tests/features/data/journals/basic_folder/2020/08/31.txt
@@ -0,0 +1,23 @@
+[2020-08-31 02:32:00 PM] A second entry in what I hope to be a long series. *
+Sed sit amet metus et sapien feugiat elementum. Aliquam bibendum lobortis leo
+vitae tempus. Donec eleifend nec mi non volutpat. Lorem ipsum dolor sit amet,
+consectetur adipiscing elit. Praesent ut sodales libero. Maecenas nisl lorem,
+vestibulum in tempus sit amet, fermentum ut arcu. Donec vel vestibulum lectus,
+eget pretium enim. Maecenas diam nunc, imperdiet vitae pharetra sed, pretium id
+lectus. Donec eu metus et turpis tempor tristique ac non ex. In tellus arcu,
+egestas at efficitur et, ultrices vel est. Sed commodo et nibh non elementum.
+Mauris tempus vitae neque vel viverra. @tagtwo all by its lonesome.
+
+Nulla mattis elementum magna, viverra pretium dui fermentum et. Cras vel
+vestibulum odio. Quisque sit amet turpis et urna finibus maximus. Interdum et
+malesuada fames ac ante ipsum primis in faucibus. Fusce porttitor iaculis sem,
+non dictum ipsum varius nec. Nulla eu erat at risus gravida blandit non vel
+ante. Nam egestas ipsum leo, eu ultricies ipsum tincidunt vel. Morbi a commodo
+eros.
+
+Nullam dictum, nisl ac varius tempus, ex tortor fermentum nisl, non
+tempus dolor neque a lorem. Suspendisse a faucibus ex, vel ornare tortor.
+Maecenas tincidunt id felis quis semper. Pellentesque enim libero, fermentum
+quis metus id, rhoncus euismod magna. Nulla finibus velit eu purus bibendum
+interdum. Integer id justo dui. Integer eu tellus in turpis bibendum blandit.
+Quisque auctor lacinia consectetur.
diff --git a/tests/features/data/journals/basic_folder/2020/09/24.txt b/tests/features/data/journals/basic_folder/2020/09/24.txt
new file mode 100644
index 00000000..2bd885ce
--- /dev/null
+++ b/tests/features/data/journals/basic_folder/2020/09/24.txt
@@ -0,0 +1,11 @@
+[2020-09-24 09:14:00 AM] The third entry finally after weeks without writing.
+I'm so excited about emojis. 💯 🎶 💩
+
+Donec semper pellentesque iaculis. Nullam cursus et justo sit amet venenatis.
+Vivamus tempus ex dictum metus vehicula gravida. Aliquam sed sem dolor. Nulla
+eget ultrices purus. Quisque at nunc at quam pharetra consectetur vitae quis
+dolor. Fusce ultricies purus eu est feugiat, quis scelerisque nibh malesuada.
+Quisque egestas semper nibh in hendrerit. Nam finibus ex in mi mattis
+vulputate. Sed mauris urna, consectetur in justo eu, volutpat accumsan justo.
+Phasellus aliquam lacus placerat convallis vestibulum. Curabitur maximus at
+ante eget fringilla. @tagthree and also @tagone
diff --git a/tests/features/data/journals/basic_onefile.journal b/tests/features/data/journals/basic_onefile.journal
new file mode 100644
index 00000000..0d988049
--- /dev/null
+++ b/tests/features/data/journals/basic_onefile.journal
@@ -0,0 +1,58 @@
+[2020-08-29 11:11] Entry the first.
+
+Lorem @ipsum dolor sit amet, consectetur adipiscing elit. Praesent malesuada
+quis est ac dignissim. Aliquam dignissim rutrum pretium. Phasellus pellentesque
+augue et venenatis facilisis. Suspendisse potenti. Sed dignissim sed nisl eu
+consequat. Aenean ante ex, elementum ut interdum et, mattis eget lacus. In
+commodo nulla nec tellus placerat, sed ultricies metus bibendum. Duis eget
+venenatis erat. In at dolor dui. @tagone and maybe also @tagtwo.
+
+Curabitur accumsan nunc ac neque tristique, eleifend faucibus justo
+ullamcorper. Suspendisse at mattis nunc. Nullam eget lacinia urna. Suspendisse
+potenti. Ut urna est, venenatis sed ante in, ultrices congue mi. Maecenas eget
+molestie metus. Mauris porttitor dui ornare gravida porta. Quisque sed lectus
+hendrerit, lacinia ante eget, vulputate ante. Aliquam vitae erat non felis
+feugiat sagittis. Phasellus quis arcu fringilla, mattis ligula id, vestibulum
+urna. Vivamus facilisis leo a mi tincidunt condimentum. Donec eu euismod enim.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam eu ligula eget
+velit scelerisque fringilla. Phasellus pharetra justo et nulla fringilla, ac
+porta sapien accumsan. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos.
+
+[2020-08-31 14:32] A second entry in what I hope to be a long series. *
+
+Sed sit amet metus et sapien feugiat elementum. Aliquam bibendum lobortis leo
+vitae tempus. Donec eleifend nec mi non volutpat. Lorem ipsum dolor sit amet,
+consectetur adipiscing elit. Praesent ut sodales libero. Maecenas nisl lorem,
+vestibulum in tempus sit amet, fermentum ut arcu. Donec vel vestibulum lectus,
+eget pretium enim. Maecenas diam nunc, imperdiet vitae pharetra sed, pretium id
+lectus. Donec eu metus et turpis tempor tristique ac non ex. In tellus arcu,
+egestas at efficitur et, ultrices vel est. Sed commodo et nibh non elementum.
+Mauris tempus vitae neque vel viverra. @tagtwo all by its lonesome.
+
+Nulla mattis elementum magna, viverra pretium dui fermentum et. Cras vel
+vestibulum odio. Quisque sit amet turpis et urna finibus maximus. Interdum et
+malesuada fames ac ante ipsum primis in faucibus. Fusce porttitor iaculis sem,
+non dictum ipsum varius nec. Nulla eu erat at risus gravida blandit non vel
+ante. Nam egestas ipsum leo, eu ultricies ipsum tincidunt vel. Morbi a commodo
+eros.
+
+Nullam dictum, nisl ac varius tempus, ex tortor fermentum nisl, non
+tempus dolor neque a lorem. Suspendisse a faucibus ex, vel ornare tortor.
+Maecenas tincidunt id felis quis semper. Pellentesque enim libero, fermentum
+quis metus id, rhoncus euismod magna. Nulla finibus velit eu purus bibendum
+interdum. Integer id justo dui. Integer eu tellus in turpis bibendum blandit.
+Quisque auctor lacinia consectetur.
+
+[2020-09-24 09:14] The third entry finally after weeks without writing.
+
+I'm so excited about emojis. 💯 🎶 💩
+
+Donec semper pellentesque iaculis. Nullam cursus et justo sit amet venenatis.
+Vivamus tempus ex dictum metus vehicula gravida. Aliquam sed sem dolor. Nulla
+eget ultrices purus. Quisque at nunc at quam pharetra consectetur vitae quis
+dolor. Fusce ultricies purus eu est feugiat, quis scelerisque nibh malesuada.
+Quisque egestas semper nibh in hendrerit. Nam finibus ex in mi mattis
+vulputate. Sed mauris urna, consectetur in justo eu, volutpat accumsan justo.
+Phasellus aliquam lacus placerat convallis vestibulum. Curabitur maximus at
+ante eget fringilla. @tagthree and also @tagone
diff --git a/tests/features/data/journals/brackets.journal b/tests/features/data/journals/brackets.journal
new file mode 100644
index 00000000..4649ea3e
--- /dev/null
+++ b/tests/features/data/journals/brackets.journal
@@ -0,0 +1,2 @@
+[2019-07-08 05:42] Entry subject
+[1] line starting with 1
diff --git a/tests/features/data/journals/bug153.dayone/entries/B40EE704E15846DE8D45C44118A4D511.doentry b/tests/features/data/journals/bug153.dayone/entries/B40EE704E15846DE8D45C44118A4D511.doentry
new file mode 100644
index 00000000..066821bb
--- /dev/null
+++ b/tests/features/data/journals/bug153.dayone/entries/B40EE704E15846DE8D45C44118A4D511.doentry
@@ -0,0 +1,56 @@
+
+
+
+
+ Creation Date
+ 2013-10-27T02:27:27Z
+ Creator
+
+ Device Agent
+ iPhone/iPhone3,1
+ Generation Date
+ 2013-10-27T07:02:27Z
+ Host Name
+ omrt104001
+ OS Agent
+ iOS/7.0.3
+ Software Agent
+ Day One (iOS)/1.11.4
+
+ Entry Text
+ Some text.
+ Location
+
+ Administrative Area
+ Östergötlands län
+ Country
+ Sverige
+ Latitude
+ 58.383400000000000
+ Locality
+ City
+ Longitude
+ 15.577170000000000
+ Place Name
+ Street
+
+ Starred
+
+ Time Zone
+ Europe/Stockholm
+ UUID
+ B40EE704E15846DE8D45C44118A4D511
+ Weather
+
+ Celsius
+ 12
+ Description
+ Clear
+ Fahrenheit
+ 54
+ IconName
+ sunnyn.png
+
+
+
diff --git a/tests/features/data/journals/bug153.dayone/entries/B40EE704E15846DE8D45C44118A4D512.doentry b/tests/features/data/journals/bug153.dayone/entries/B40EE704E15846DE8D45C44118A4D512.doentry
new file mode 100644
index 00000000..ea3efec5
--- /dev/null
+++ b/tests/features/data/journals/bug153.dayone/entries/B40EE704E15846DE8D45C44118A4D512.doentry
@@ -0,0 +1,52 @@
+
+ Creation Date
+ 2013-10-27T02:27:27Z
+ Creator
+
+ Device Agent
+ iPhone/iPhone3,1
+ Generation Date
+ 2013-10-27T07:02:27Z
+ Host Name
+ omrt104001
+ OS Agent
+ iOS/7.0.3
+ Software Agent
+ Day One (iOS)/1.11.4
+
+ Entry Text
+ This is not a valid plist.
+ Location
+
+ Administrative Area
+ Östergötlands län
+ Country
+ Sverige
+ Latitude
+ 58.383400000000000
+ Locality
+ City
+ Longitude
+ 15.577170000000000
+ Place Name
+ Street
+
+ Starred
+
+ Time Zone
+ Europe/Stockholm
+ UUID
+ B40EE704E15846DE8D45C44118A4D511
+ Weather
+
+ Celsius
+ 12
+ Description
+ Clear
+ Fahrenheit
+ 54
+ IconName
+ sunnyn.png
+
+
+
diff --git a/tests/features/data/journals/bug780.dayone/entries/48A25033B34047C591160A4480197D8B.doentry b/tests/features/data/journals/bug780.dayone/entries/48A25033B34047C591160A4480197D8B.doentry
new file mode 100644
index 00000000..426f1ea8
--- /dev/null
+++ b/tests/features/data/journals/bug780.dayone/entries/48A25033B34047C591160A4480197D8B.doentry
@@ -0,0 +1,33 @@
+
+
+
+
+ Activity
+ Stationary
+ Creation Date
+ 2019-12-30T21:28:54Z
+ Entry Text
+
+ Starred
+
+ UUID
+ 48A25033B34047C591160A4480197D8B
+ Creator
+
+ Device Agent
+ PC
+ Generation Date
+ 2019-12-30T21:28:54Z
+ Host Name
+ LE-TREPORT
+ OS Agent
+ Microsoft Windows/10 Home
+ Software Agent
+ Journaley/2.1
+
+ Tags
+
+ i_have_no_body
+
+
+
diff --git a/tests/features/data/journals/dayone.dayone/entries/044F3747A38546168B572C2E3F217FA2.doentry b/tests/features/data/journals/dayone.dayone/entries/044F3747A38546168B572C2E3F217FA2.doentry
new file mode 100644
index 00000000..1ac26242
--- /dev/null
+++ b/tests/features/data/journals/dayone.dayone/entries/044F3747A38546168B572C2E3F217FA2.doentry
@@ -0,0 +1,34 @@
+
+
+
+
+ Creation Date
+ 2013-05-17T18:39:20Z
+ Creator
+
+ Device Agent
+ Macintosh/MacBookAir5,2
+ Generation Date
+ 2013-08-17T18:39:20Z
+ Host Name
+ Egeria
+ OS Agent
+ Mac OS X/10.8.4
+ Software Agent
+ Day One (Mac)/1.8
+
+ Entry Text
+ This entry has tags!
+ Starred
+
+ Tags
+
+ work
+ PLaY
+
+ Time Zone
+ America/Los_Angeles
+ UUID
+ 044F3747A38546168B572C2E3F217FA2
+
+
diff --git a/tests/features/data/journals/dayone.dayone/entries/0BDDD6CDA43C4A9AA2681517CC35AD9D.doentry b/tests/features/data/journals/dayone.dayone/entries/0BDDD6CDA43C4A9AA2681517CC35AD9D.doentry
new file mode 100644
index 00000000..927de884
--- /dev/null
+++ b/tests/features/data/journals/dayone.dayone/entries/0BDDD6CDA43C4A9AA2681517CC35AD9D.doentry
@@ -0,0 +1,46 @@
+
+
+
+
+ Creation Date
+ 2013-06-17T18:38:29Z
+ Creator
+
+ Device Agent
+ Macintosh/MacBookAir5,2
+ Generation Date
+ 2013-08-17T18:38:29Z
+ Host Name
+ Egeria
+ OS Agent
+ Mac OS X/10.8.4
+ Software Agent
+ Day One (Mac)/1.8
+
+ Entry Text
+ This entry has a location.
+ Location
+
+ Administrative Area
+ California
+ Country
+ Germany
+ Latitude
+ 52.4979764
+ Locality
+ Berlin
+ Longitude
+ 13.2404758
+ Place Name
+ Abandoned Spy Tower
+
+ Starred
+
+ Tags
+
+ Time Zone
+ Europe/Berlin
+ UUID
+ 0BDDD6CDA43C4A9AA2681517CC35AD9D
+
+
diff --git a/tests/features/data/journals/dayone.dayone/entries/422BC895507944A291E6FC44FC6B8BFC.doentry b/tests/features/data/journals/dayone.dayone/entries/422BC895507944A291E6FC44FC6B8BFC.doentry
new file mode 100644
index 00000000..16260763
--- /dev/null
+++ b/tests/features/data/journals/dayone.dayone/entries/422BC895507944A291E6FC44FC6B8BFC.doentry
@@ -0,0 +1,31 @@
+
+
+
+
+ Creation Date
+ 2013-07-17T18:38:08Z
+ Creator
+
+ Device Agent
+ Macintosh/MacBookAir5,2
+ Generation Date
+ 2013-08-17T18:38:08Z
+ Host Name
+ Egeria
+ OS Agent
+ Mac OS X/10.8.4
+ Software Agent
+ Day One (Mac)/1.8
+
+ Entry Text
+ This entry is starred!
+ Starred
+
+ Tags
+
+ Time Zone
+ America/Los_Angeles
+ UUID
+ 422BC895507944A291E6FC44FC6B8BFC
+
+
diff --git a/tests/features/data/journals/dayone.dayone/entries/4BB1F46946AD439996C9B59DE7C4DDC1.doentry b/tests/features/data/journals/dayone.dayone/entries/4BB1F46946AD439996C9B59DE7C4DDC1.doentry
new file mode 100644
index 00000000..9ebaf538
--- /dev/null
+++ b/tests/features/data/journals/dayone.dayone/entries/4BB1F46946AD439996C9B59DE7C4DDC1.doentry
@@ -0,0 +1,29 @@
+
+
+
+
+ Creation Date
+ 2013-01-17T18:37:50Z
+ Creator
+
+ Device Agent
+ Macintosh/MacBookAir5,2
+ Generation Date
+ 2013-08-17T18:37:50Z
+ Host Name
+ Egeria
+ OS Agent
+ Mac OS X/10.8.4
+ Software Agent
+ Day One (Mac)/1.8
+
+ Entry Text
+ This is a DayOne entry without Timezone.
+ Starred
+
+ Tags
+
+ UUID
+ 4BB1F46946AD439996C9B59DE7C4DDC1
+
+
diff --git a/tests/features/data/journals/dayone_empty.dayone/entries/empty.txt b/tests/features/data/journals/dayone_empty.dayone/entries/empty.txt
new file mode 100644
index 00000000..c86b8f66
--- /dev/null
+++ b/tests/features/data/journals/dayone_empty.dayone/entries/empty.txt
@@ -0,0 +1 @@
+This file exists to preserve the directory structure, but should be ignored by jrnl.
diff --git a/tests/features/data/journals/deletion.journal b/tests/features/data/journals/deletion.journal
new file mode 100644
index 00000000..c0fa689d
--- /dev/null
+++ b/tests/features/data/journals/deletion.journal
@@ -0,0 +1,5 @@
+[2019-10-29 11:11] First entry.
+
+[2019-10-29 11:11] Second entry.
+
+[2019-10-29 11:13] Third entry.
\ No newline at end of file
diff --git a/tests/features/data/journals/deletion_filters.journal b/tests/features/data/journals/deletion_filters.journal
new file mode 100644
index 00000000..9a3747db
--- /dev/null
+++ b/tests/features/data/journals/deletion_filters.journal
@@ -0,0 +1,14 @@
+[2019-10-01 08:00] It's just another day in October.
+Not much to write about.
+
+[2020-01-01 08:00] Happy New Year!
+So this is the New Year. @holidays
+
+[2020-03-01 08:00] It's just another day in March.
+A stick, a stone, it's the end of the road.
+
+[2020-05-01 09:00] Happy May Day!
+@holidays @springtime Several holidays fall on this date.
+
+[2020-05-02 12:10] Writing tests. *
+@springtime They will help prevent bugs.
diff --git a/tests/features/data/journals/empty_folder/empty b/tests/features/data/journals/empty_folder/empty
new file mode 100644
index 00000000..175b82b5
--- /dev/null
+++ b/tests/features/data/journals/empty_folder/empty
@@ -0,0 +1 @@
+Nothing to see here
diff --git a/tests/features/data/journals/encrypted.journal b/tests/features/data/journals/encrypted.journal
new file mode 100644
index 00000000..d2a5fcbe
--- /dev/null
+++ b/tests/features/data/journals/encrypted.journal
@@ -0,0 +1 @@
+gAAAAABVIHB7tnwKExG7aC5ZbAbBL9SG2oY2GENeoOJ22i1PZigOvCYvrQN3kpsu0KGr7ay5K-_46R5YFlqJvtQ8anPH2FSITsaZy-l5Lz_5quw3rmzhLwAR1tc0icgtR4MEpXEdsuQ7cyb12Xq-JLDrnATs0id5Vow9Ri_tE7Xe4BXgXaySn3aRPwWKoninVxVPVvETY3MXHSUEXV9OZ-pH5kYBLGYbLA==
diff --git a/tests/features/data/journals/encrypted_jrnl-1-9-5.journal b/tests/features/data/journals/encrypted_jrnl-1-9-5.journal
new file mode 100644
index 00000000..339b47ba
Binary files /dev/null and b/tests/features/data/journals/encrypted_jrnl-1-9-5.journal differ
diff --git a/tests/features/data/journals/little_endian_dates.journal b/tests/features/data/journals/little_endian_dates.journal
new file mode 100644
index 00000000..d7492969
--- /dev/null
+++ b/tests/features/data/journals/little_endian_dates.journal
@@ -0,0 +1,5 @@
+[09.06.2013 15:39] My first entry.
+Everything is alright
+
+[10.07.2013 15:40] Life is good.
+But I'm better.
diff --git a/tests/features/data/journals/markdown-headings-335.journal b/tests/features/data/journals/markdown-headings-335.journal
new file mode 100644
index 00000000..30f592ef
--- /dev/null
+++ b/tests/features/data/journals/markdown-headings-335.journal
@@ -0,0 +1,42 @@
+[2015-04-14 13:23] Heading Test
+
+H1-1
+=
+
+H1-2
+===
+
+H1-3
+============================
+
+H2-1
+-
+
+H2-2
+---
+
+H2-3
+----------------------------------
+
+Horizontal Rules (ignore)
+
+---
+
+===
+
+# ATX H1
+
+## ATX H2
+
+### ATX H3
+
+#### ATX H4
+
+##### ATX H5
+
+###### ATX H6
+
+Stuff
+
+More stuff
+more stuff again
diff --git a/tests/features/data/journals/mostlyreadabledates.journal b/tests/features/data/journals/mostlyreadabledates.journal
new file mode 100644
index 00000000..bd211bf5
--- /dev/null
+++ b/tests/features/data/journals/mostlyreadabledates.journal
@@ -0,0 +1,8 @@
+[2019-07-18 14:23] Entry subject
+Time machines are possible. I know, because I've built one in my garage.
+
+[2019-07-19 14:23] Entry subject
+I'm going to activate the machine. Nobody knows what comes next after this. Or before this?
+
+[2019-07 14:23] Entry subject
+I've crossed so many timelines. Is there any going back?
diff --git a/tests/features/data/journals/multiline-tags.journal b/tests/features/data/journals/multiline-tags.journal
new file mode 100644
index 00000000..1fb8706f
--- /dev/null
+++ b/tests/features/data/journals/multiline-tags.journal
@@ -0,0 +1,7 @@
+[2013-06-09 15:39] Multiple @line entry with @tags.
+Tag with @punctuation. afterwards
+@TagOnLineAloneWithOutPunctuation
+@TagOnLineAloneWithPunctuation.
+Text before @tag. And After.
+@hi. Hello
+hi Hello
\ No newline at end of file
diff --git a/tests/features/data/journals/multiline.journal b/tests/features/data/journals/multiline.journal
new file mode 100644
index 00000000..294ed141
--- /dev/null
+++ b/tests/features/data/journals/multiline.journal
@@ -0,0 +1,5 @@
+[2013-06-09 15:39] Multiple line entry.
+This is the first line.
+This line doesn't have any ending punctuation
+
+There is a blank line above this.
diff --git a/tests/features/data/journals/simple.journal b/tests/features/data/journals/simple.journal
new file mode 100644
index 00000000..8336068e
--- /dev/null
+++ b/tests/features/data/journals/simple.journal
@@ -0,0 +1,5 @@
+[2013-06-09 15:39] My first entry.
+Everything is alright
+
+[2013-06-10 15:40] Life is good.
+But I'm better.
diff --git a/tests/features/data/journals/simple_jrnl-1-9-5.journal b/tests/features/data/journals/simple_jrnl-1-9-5.journal
new file mode 100644
index 00000000..7bb6c5ac
--- /dev/null
+++ b/tests/features/data/journals/simple_jrnl-1-9-5.journal
@@ -0,0 +1,13 @@
+2010-06-10 15:00 A life without chocolate is like a bad analogy.
+
+2013-06-10 15:40 He said "[this] is the best time to be alive".
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent malesuada
+quis est ac dignissim. Aliquam dignissim rutrum pretium. Phasellus pellentesque
+augue et venenatis facilisis.
+
+[2019-08-03 12:55] Some chat log or something
+
+Suspendisse potenti. Sed dignissim sed nisl eu consequat. Aenean ante ex,
+elementum ut interdum et, mattis eget lacus. In commodo nulla nec tellus
+placerat, sed ultricies metus bibendum. Duis eget venenatis erat. In at dolor
+dui.
diff --git a/tests/features/data/journals/simple_jrnl-1-9-5_little_endian_dates.journal b/tests/features/data/journals/simple_jrnl-1-9-5_little_endian_dates.journal
new file mode 100644
index 00000000..328b23f4
--- /dev/null
+++ b/tests/features/data/journals/simple_jrnl-1-9-5_little_endian_dates.journal
@@ -0,0 +1,13 @@
+10.06.2010 15:00 A life without chocolate is like a bad analogy.
+
+10.06.2013 15:40 He said "[this] is the best time to be alive".
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent malesuada
+quis est ac dignissim. Aliquam dignissim rutrum pretium. Phasellus pellentesque
+augue et venenatis facilisis.
+
+[03.08.2019 12:55] Some chat log or something
+
+Suspendisse potenti. Sed dignissim sed nisl eu consequat. Aenean ante ex,
+elementum ut interdum et, mattis eget lacus. In commodo nulla nec tellus
+placerat, sed ultricies metus bibendum. Duis eget venenatis erat. In at dolor
+dui.
diff --git a/tests/features/data/journals/tags-216.journal b/tests/features/data/journals/tags-216.journal
new file mode 100644
index 00000000..08b6d630
--- /dev/null
+++ b/tests/features/data/journals/tags-216.journal
@@ -0,0 +1,2 @@
+[2013-06-10 15:40] I programmed for @OS/2.
+Almost makes me want to go back to @C++, though. (Still better than @C#).
diff --git a/tests/features/data/journals/tags-237.journal b/tests/features/data/journals/tags-237.journal
new file mode 100644
index 00000000..be050652
--- /dev/null
+++ b/tests/features/data/journals/tags-237.journal
@@ -0,0 +1,3 @@
+[2014-07-22 11:11] This entry has an email.
+@Newline tag should show as a tag.
+Kyla's @email is kyla@clevelandunderdog.org and Guinness's is guinness@fortheloveofpits.org.
diff --git a/tests/features/data/journals/tags.journal b/tests/features/data/journals/tags.journal
new file mode 100644
index 00000000..a28f3159
--- /dev/null
+++ b/tests/features/data/journals/tags.journal
@@ -0,0 +1,8 @@
+[2013-04-09 15:39] I have an @idea:
+(1) write a command line @journal software
+(2) ???
+(3) PROFIT!
+
+[2013-06-10 15:40] I met with @dan.
+As alway's he shared his latest @idea on how to rule the world with me.
+inst
diff --git a/tests/features/data/journals/unreadabledates.journal b/tests/features/data/journals/unreadabledates.journal
new file mode 100644
index 00000000..53ef1d60
--- /dev/null
+++ b/tests/features/data/journals/unreadabledates.journal
@@ -0,0 +1,5 @@
+[ashasd7zdskhz7asdkjasd] Entry subject
+I've lost track of time.
+
+[sadfhakjsdf88sdf7sdff] Entry subject
+Time has no meaning.
diff --git a/tests/features/data/journals/work.journal b/tests/features/data/journals/work.journal
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/features/data/templates/sample.template b/tests/features/data/templates/sample.template
new file mode 100644
index 00000000..a356d823
--- /dev/null
+++ b/tests/features/data/templates/sample.template
@@ -0,0 +1,19 @@
+---
+extension: txt
+---
+
+{% block journal %}
+{% for entry in entries %}
+{% include entry %}
+{% endfor %}
+
+{% endblock %}
+
+{% block entry %}
+{{ entry.title }}
+{{ "-" * len(entry.title) }}
+
+{{ entry.body }}
+
+{% endblock %}
+`
diff --git a/tests/features/datetime.feature b/tests/features/datetime.feature
new file mode 100644
index 00000000..8fe335c9
--- /dev/null
+++ b/tests/features/datetime.feature
@@ -0,0 +1,155 @@
+Feature: Reading and writing to journal with custom date formats
+
+ Scenario: Dates can include a time
+ # https://github.com/jrnl-org/jrnl/issues/117
+ Given we use the config "simple.yaml"
+ When we run "jrnl 2013-11-30 15:42: Project Started."
+ Then we should see the message "Entry added"
+ And the journal should contain "[2013-11-30 15:42] Project Started."
+
+ Scenario: Dates can be in the future
+ # https://github.com/jrnl-org/jrnl/issues/185
+ Given we use the config "simple.yaml"
+ When we run "jrnl 26/06/2099: Planet? Earth. Year? 2099."
+ Then we should see the message "Entry added"
+ And the journal should contain "[2099-06-26 09:00] Planet?"
+
+ Scenario: Loading a sample journal with custom date
+ Given we use the config "little_endian_dates.yaml"
+ When we run "jrnl -n 2"
+ Then we should get no error
+ And the output should be
+ """
+ 09.06.2013 15:39 My first entry.
+ | Everything is alright
+
+ 10.07.2013 15:40 Life is good.
+ | But I'm better.
+ """
+
+ Scenario Outline: Writing an entry from command line with custom date
+ Given we use the config ".yaml"
+ When we run "jrnl "
+ Then we should see the message "Entry added"
+ When we run "jrnl -n 1"
+ Then the output should contain "