mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-17 19:48:31 +02:00
merge in develop
This commit is contained in:
commit
2051f04839
17 changed files with 412 additions and 108 deletions
|
@ -6,11 +6,15 @@
|
||||||
|
|
||||||
**Build:**
|
**Build:**
|
||||||
|
|
||||||
|
- Clean up .gitignore [\#1286](https://github.com/jrnl-org/jrnl/issues/1286)
|
||||||
|
- Tidy up git ignore [\#1414](https://github.com/jrnl-org/jrnl/pull/1414) ([nelnog](https://github.com/nelnog))
|
||||||
- Drop support for Python 3.7 and 3.8 [\#1412](https://github.com/jrnl-org/jrnl/pull/1412) ([micahellison](https://github.com/micahellison))
|
- Drop support for Python 3.7 and 3.8 [\#1412](https://github.com/jrnl-org/jrnl/pull/1412) ([micahellison](https://github.com/micahellison))
|
||||||
|
|
||||||
**Packaging:**
|
**Packaging:**
|
||||||
|
|
||||||
- Sync jrnl's Python version support more closely to Python release cycle [\#1406](https://github.com/jrnl-org/jrnl/issues/1406)
|
- Sync jrnl's Python version support more closely to Python release cycle [\#1406](https://github.com/jrnl-org/jrnl/issues/1406)
|
||||||
|
- Bump yq from 2.13.0 to 2.14.0 [\#1418](https://github.com/jrnl-org/jrnl/pull/1418) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- Replace PyYAML with ruamel.yaml [\#1416](https://github.com/jrnl-org/jrnl/pull/1416) ([micahellison](https://github.com/micahellison))
|
||||||
- Bump pytest from 6.2.5 to 7.0.0 [\#1407](https://github.com/jrnl-org/jrnl/pull/1407) ([dependabot[bot]](https://github.com/apps/dependabot))
|
- Bump pytest from 6.2.5 to 7.0.0 [\#1407](https://github.com/jrnl-org/jrnl/pull/1407) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
|
||||||
## [v2.8.4](https://pypi.org/project/jrnl/v2.8.4/) (2022-02-12)
|
## [v2.8.4](https://pypi.org/project/jrnl/v2.8.4/) (2022-02-12)
|
||||||
|
|
|
@ -13,8 +13,10 @@ avoid any possible overhead for these standalone commands.
|
||||||
"""
|
"""
|
||||||
import platform
|
import platform
|
||||||
import sys
|
import sys
|
||||||
from .exception import JrnlException
|
from jrnl.exception import JrnlException
|
||||||
from .exception import JrnlExceptionMessage
|
from jrnl.messages import Message
|
||||||
|
from jrnl.messages import MsgText
|
||||||
|
from jrnl.messages import MsgType
|
||||||
|
|
||||||
|
|
||||||
def preconfig_diagnostic(_):
|
def preconfig_diagnostic(_):
|
||||||
|
@ -72,9 +74,14 @@ def postconfig_encrypt(args, config, original_config, **kwargs):
|
||||||
|
|
||||||
if hasattr(journal, "can_be_encrypted") and not journal.can_be_encrypted:
|
if hasattr(journal, "can_be_encrypted") and not journal.can_be_encrypted:
|
||||||
raise JrnlException(
|
raise JrnlException(
|
||||||
JrnlExceptionMessage.CannotEncryptJournalType,
|
Message(
|
||||||
journal_name=args.journal_name,
|
MsgText.CannotEncryptJournalType,
|
||||||
journal_type=journal.__class__.__name__,
|
MsgType.ERROR,
|
||||||
|
{
|
||||||
|
"journal_name": args.journal_name,
|
||||||
|
"journal_type": journal.__class__.__name__,
|
||||||
|
},
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
journal.config["encrypt"] = True
|
journal.config["encrypt"] = True
|
||||||
|
|
|
@ -3,12 +3,15 @@ import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import colorama
|
import colorama
|
||||||
import yaml
|
from ruamel.yaml import YAML
|
||||||
import xdg.BaseDirectory
|
import xdg.BaseDirectory
|
||||||
|
|
||||||
from . import __version__
|
from . import __version__
|
||||||
from .exception import JrnlException
|
from jrnl.exception import JrnlException
|
||||||
from .exception import JrnlExceptionMessage
|
from jrnl.messages import Message
|
||||||
|
from jrnl.messages import MsgText
|
||||||
|
from jrnl.messages import MsgType
|
||||||
|
|
||||||
from .color import ERROR_COLOR
|
from .color import ERROR_COLOR
|
||||||
from .color import RESET_COLOR
|
from .color import RESET_COLOR
|
||||||
from .output import list_journals
|
from .output import list_journals
|
||||||
|
@ -43,7 +46,8 @@ def make_yaml_valid_dict(input: list) -> dict:
|
||||||
|
|
||||||
# yaml compatible strings are of the form Key:Value
|
# yaml compatible strings are of the form Key:Value
|
||||||
yamlstr = YAML_SEPARATOR.join(input)
|
yamlstr = YAML_SEPARATOR.join(input)
|
||||||
runtime_modifications = yaml.load(yamlstr, Loader=yaml.SafeLoader)
|
|
||||||
|
runtime_modifications = YAML(typ="safe").load(yamlstr)
|
||||||
|
|
||||||
return runtime_modifications
|
return runtime_modifications
|
||||||
|
|
||||||
|
@ -51,18 +55,16 @@ def make_yaml_valid_dict(input: list) -> dict:
|
||||||
def save_config(config, alt_config_path=None):
|
def save_config(config, alt_config_path=None):
|
||||||
"""Supply alt_config_path if using an alternate config through --config-file."""
|
"""Supply alt_config_path if using an alternate config through --config-file."""
|
||||||
config["version"] = __version__
|
config["version"] = __version__
|
||||||
|
|
||||||
|
yaml = YAML(typ="safe")
|
||||||
|
yaml.default_flow_style = False # prevents collapsing of tree structure
|
||||||
|
|
||||||
with open(
|
with open(
|
||||||
alt_config_path if alt_config_path else get_config_path(),
|
alt_config_path if alt_config_path else get_config_path(),
|
||||||
"w",
|
"w",
|
||||||
encoding=YAML_FILE_ENCODING,
|
encoding=YAML_FILE_ENCODING,
|
||||||
) as f:
|
) as f:
|
||||||
yaml.safe_dump(
|
yaml.dump(config, f)
|
||||||
config,
|
|
||||||
f,
|
|
||||||
encoding=YAML_FILE_ENCODING,
|
|
||||||
allow_unicode=True,
|
|
||||||
default_flow_style=False,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def get_config_path():
|
def get_config_path():
|
||||||
|
@ -70,11 +72,17 @@ def get_config_path():
|
||||||
config_directory_path = xdg.BaseDirectory.save_config_path(XDG_RESOURCE)
|
config_directory_path = xdg.BaseDirectory.save_config_path(XDG_RESOURCE)
|
||||||
except FileExistsError:
|
except FileExistsError:
|
||||||
raise JrnlException(
|
raise JrnlException(
|
||||||
JrnlExceptionMessage.ConfigDirectoryIsFile,
|
Message(
|
||||||
config_directory_path=os.path.join(
|
MsgText.ConfigDirectoryIsFile,
|
||||||
xdg.BaseDirectory.xdg_config_home, XDG_RESOURCE
|
MsgType.ERROR,
|
||||||
|
{
|
||||||
|
"config_directory_path": os.path.join(
|
||||||
|
xdg.BaseDirectory.xdg_config_home, XDG_RESOURCE
|
||||||
|
)
|
||||||
|
},
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
return os.path.join(
|
return os.path.join(
|
||||||
config_directory_path or os.path.expanduser("~"), DEFAULT_CONFIG_NAME
|
config_directory_path or os.path.expanduser("~"), DEFAULT_CONFIG_NAME
|
||||||
)
|
)
|
||||||
|
@ -151,7 +159,9 @@ def verify_config_colors(config):
|
||||||
def load_config(config_path):
|
def load_config(config_path):
|
||||||
"""Tries to load a config file from YAML."""
|
"""Tries to load a config file from YAML."""
|
||||||
with open(config_path, encoding=YAML_FILE_ENCODING) as f:
|
with open(config_path, encoding=YAML_FILE_ENCODING) as f:
|
||||||
return yaml.load(f, Loader=yaml.SafeLoader)
|
yaml = YAML(typ="safe")
|
||||||
|
yaml.allow_duplicate_keys = True
|
||||||
|
return yaml.load(f)
|
||||||
|
|
||||||
|
|
||||||
def is_config_json(config_path):
|
def is_config_json(config_path):
|
||||||
|
|
|
@ -5,12 +5,16 @@ import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
from jrnl.color import ERROR_COLOR
|
||||||
|
from jrnl.color import RESET_COLOR
|
||||||
from jrnl.os_compat import on_windows
|
from jrnl.os_compat import on_windows
|
||||||
from jrnl.os_compat import split_args
|
from jrnl.os_compat import split_args
|
||||||
from jrnl.output import print_msg
|
from jrnl.output import print_msg
|
||||||
from jrnl.output import Message
|
|
||||||
from jrnl.exception import JrnlException
|
from jrnl.exception import JrnlException
|
||||||
from jrnl.exception import JrnlExceptionMessage
|
from jrnl.messages import Message
|
||||||
|
from jrnl.messages import MsgText
|
||||||
|
from jrnl.messages import MsgType
|
||||||
|
|
||||||
|
|
||||||
def get_text_from_editor(config, template=""):
|
def get_text_from_editor(config, template=""):
|
||||||
|
@ -43,17 +47,25 @@ def get_text_from_editor(config, template=""):
|
||||||
|
|
||||||
|
|
||||||
def get_text_from_stdin():
|
def get_text_from_stdin():
|
||||||
_how_to_quit = "Ctrl+z and then Enter" if on_windows() else "Ctrl+d"
|
|
||||||
print_msg(
|
print_msg(
|
||||||
"Writing Entry",
|
Message(
|
||||||
f"To finish writing, press {_how_to_quit} on a blank line.",
|
MsgText.WritingEntryStart,
|
||||||
msg=Message.NORMAL,
|
MsgType.TITLE,
|
||||||
|
{
|
||||||
|
"how_to_quit": MsgText.HowToQuitWindows
|
||||||
|
if on_windows()
|
||||||
|
else MsgText.HowToQuitLinux
|
||||||
|
},
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
raw = sys.stdin.read()
|
raw = sys.stdin.read()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
logging.error("Write mode: keyboard interrupt")
|
logging.error("Write mode: keyboard interrupt")
|
||||||
print_msg("\nEntry NOT saved to journal", msg=Message.NORMAL)
|
raise JrnlException(
|
||||||
raise JrnlException(JrnlExceptionMessage.KeyboardInterrupt)
|
Message(MsgText.KeyboardInterruptMsg, MsgType.ERROR),
|
||||||
|
Message(MsgText.JournalNotSaved, MsgType.WARNING),
|
||||||
|
)
|
||||||
|
|
||||||
return raw
|
return raw
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# Copyright (C) 2012-2021 jrnl contributors
|
# Copyright (C) 2012-2021 jrnl contributors
|
||||||
# License: https://www.gnu.org/licenses/gpl-3.0.html
|
# License: https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
import textwrap
|
from jrnl.messages import Message
|
||||||
|
from jrnl.output import print_msg
|
||||||
|
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
|
@ -91,13 +92,9 @@ class JrnlExceptionMessage(Enum):
|
||||||
class JrnlException(Exception):
|
class JrnlException(Exception):
|
||||||
"""Common exceptions raised by jrnl."""
|
"""Common exceptions raised by jrnl."""
|
||||||
|
|
||||||
def __init__(self, exception_msg: JrnlExceptionMessage, **kwargs):
|
def __init__(self, *messages: Message):
|
||||||
self.exception_msg = exception_msg
|
self.messages = messages
|
||||||
self.title = str(exception_msg.name)
|
|
||||||
self.message = self._get_error_message(**kwargs)
|
|
||||||
|
|
||||||
def _get_error_message(self, **kwargs):
|
def print(self) -> None:
|
||||||
msg = self.exception_msg.value
|
for msg in self.messages:
|
||||||
msg = msg.format(**kwargs)
|
print_msg(msg)
|
||||||
msg = textwrap.dedent(msg)
|
|
||||||
return msg
|
|
||||||
|
|
79
jrnl/messages.py
Normal file
79
jrnl/messages.py
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
from enum import Enum
|
||||||
|
from typing import NamedTuple
|
||||||
|
from typing import Mapping
|
||||||
|
|
||||||
|
|
||||||
|
class _MsgColor(NamedTuple):
|
||||||
|
# This is a colorama color, and colorama doesn't support enums or type hints
|
||||||
|
# see: https://github.com/tartley/colorama/issues/91
|
||||||
|
color: str
|
||||||
|
|
||||||
|
|
||||||
|
class MsgType(Enum):
|
||||||
|
TITLE = _MsgColor("cyan")
|
||||||
|
NORMAL = _MsgColor("white")
|
||||||
|
WARNING = _MsgColor("yellow")
|
||||||
|
ERROR = _MsgColor("red")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def color(self) -> _MsgColor:
|
||||||
|
return self.value.color
|
||||||
|
|
||||||
|
|
||||||
|
class MsgText(Enum):
|
||||||
|
def __str__(self) -> str:
|
||||||
|
return self.value
|
||||||
|
|
||||||
|
# --- Exceptions ---#
|
||||||
|
UncaughtException = """
|
||||||
|
ERROR
|
||||||
|
{exception}
|
||||||
|
|
||||||
|
This is probably a bug. Please file an issue at:
|
||||||
|
https://github.com/jrnl-org/jrnl/issues/new/choose
|
||||||
|
"""
|
||||||
|
|
||||||
|
ConfigDirectoryIsFile = """
|
||||||
|
The path to your jrnl configuration directory is a file, not a directory:
|
||||||
|
|
||||||
|
{config_directory_path}
|
||||||
|
|
||||||
|
Removing this file will allow jrnl to save its configuration.
|
||||||
|
"""
|
||||||
|
|
||||||
|
LineWrapTooSmallForDateFormat = """
|
||||||
|
The provided linewrap value of {config_linewrap} is too small by
|
||||||
|
{columns} columns to display the timestamps in the configured time
|
||||||
|
format for journal {journal}.
|
||||||
|
|
||||||
|
You can avoid this error by specifying a linewrap value that is larger
|
||||||
|
by at least {columns} in the configuration file or by using
|
||||||
|
--config-override at the command line
|
||||||
|
"""
|
||||||
|
|
||||||
|
CannotEncryptJournalType = """
|
||||||
|
The journal {journal_name} can't be encrypted because it is a
|
||||||
|
{journal_type} journal.
|
||||||
|
|
||||||
|
To encrypt it, create a new journal referencing a file, export
|
||||||
|
this journal to the new journal, then encrypt the new journal.
|
||||||
|
"""
|
||||||
|
|
||||||
|
KeyboardInterruptMsg = "Aborted by user"
|
||||||
|
|
||||||
|
# --- Journal status ---#
|
||||||
|
JournalNotSaved = "Entry NOT saved to journal"
|
||||||
|
|
||||||
|
# --- Editor ---#
|
||||||
|
WritingEntryStart = """
|
||||||
|
Writing Entry
|
||||||
|
To finish writing, press {how_to_quit} on a blank line.
|
||||||
|
"""
|
||||||
|
HowToQuitWindows = "Ctrl+z and then Enter"
|
||||||
|
HowToQuitLinux = "Ctrl+d"
|
||||||
|
|
||||||
|
|
||||||
|
class Message(NamedTuple):
|
||||||
|
text: MsgText
|
||||||
|
type: MsgType = MsgType.NORMAL
|
||||||
|
params: Mapping = {}
|
|
@ -4,12 +4,12 @@
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
from collections import namedtuple
|
|
||||||
import textwrap
|
import textwrap
|
||||||
|
|
||||||
from jrnl.color import colorize
|
from jrnl.color import colorize
|
||||||
from jrnl.color import RESET_COLOR
|
from jrnl.color import RESET_COLOR
|
||||||
from jrnl.color import WARNING_COLOR
|
from jrnl.color import WARNING_COLOR
|
||||||
|
from jrnl.messages import Message
|
||||||
|
|
||||||
|
|
||||||
def deprecated_cmd(old_cmd, new_cmd, callback=None, **kwargs):
|
def deprecated_cmd(old_cmd, new_cmd, callback=None, **kwargs):
|
||||||
|
@ -39,25 +39,14 @@ def list_journals(configuration):
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
MessageProps = namedtuple("MessageProps", ["value", "color"])
|
def print_msg(msg: Message):
|
||||||
|
msg_text = textwrap.dedent(msg.text.value.format(**msg.params)).strip().split("\n")
|
||||||
|
|
||||||
|
longest_string = len(max(msg_text, key=len))
|
||||||
|
msg_text = [f"[ {line:<{longest_string}} ]" for line in msg_text]
|
||||||
|
|
||||||
class Message(Enum):
|
# colorize can't be called until after the lines are padded,
|
||||||
NORMAL = MessageProps(0, "cyan")
|
# because python gets confused by the ansi color codes
|
||||||
WARNING = MessageProps(1, "yellow")
|
msg_text[0] = f"[{colorize(msg_text[0][1:-1], msg.type.color)}]"
|
||||||
ERROR = MessageProps(2, "red")
|
|
||||||
|
|
||||||
@property
|
print("\n".join(msg_text), file=sys.stderr)
|
||||||
def color(self):
|
|
||||||
return self.value.color
|
|
||||||
|
|
||||||
|
|
||||||
def print_msg(title: str, body: str = "", msg: Message = Message.NORMAL):
|
|
||||||
|
|
||||||
# @todo Add some polish around colorization of multi-line messages
|
|
||||||
result = colorize(title, msg.color)
|
|
||||||
|
|
||||||
if body:
|
|
||||||
result += f"\n{body}"
|
|
||||||
|
|
||||||
print(result, file=sys.stderr)
|
|
||||||
|
|
|
@ -3,7 +3,9 @@
|
||||||
# License: https://www.gnu.org/licenses/gpl-3.0.html
|
# License: https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
from jrnl.exception import JrnlException
|
from jrnl.exception import JrnlException
|
||||||
from jrnl.exception import JrnlExceptionMessage
|
from jrnl.messages import Message
|
||||||
|
from jrnl.messages import MsgText
|
||||||
|
from jrnl.messages import MsgType
|
||||||
from textwrap import TextWrapper
|
from textwrap import TextWrapper
|
||||||
|
|
||||||
from .text_exporter import TextExporter
|
from .text_exporter import TextExporter
|
||||||
|
@ -86,8 +88,13 @@ def check_provided_linewrap_viability(linewrap, card, journal):
|
||||||
if len(card[0]) > linewrap:
|
if len(card[0]) > linewrap:
|
||||||
width_violation = len(card[0]) - linewrap
|
width_violation = len(card[0]) - linewrap
|
||||||
raise JrnlException(
|
raise JrnlException(
|
||||||
JrnlExceptionMessage.LineWrapTooSmallForDateFormat,
|
Message(
|
||||||
config_linewrap=linewrap,
|
MsgText.LineWrapTooSmallForDateFormat,
|
||||||
columns=width_violation,
|
MsgType.NORMAL,
|
||||||
journal=journal,
|
{
|
||||||
|
"config_linewrap": linewrap,
|
||||||
|
"columns": width_violation,
|
||||||
|
"journal": journal,
|
||||||
|
},
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
import yaml
|
from ruamel.yaml import YAML
|
||||||
|
|
||||||
VAR_RE = r"[_a-zA-Z][a-zA-Z0-9_]*"
|
VAR_RE = r"[_a-zA-Z][a-zA-Z0-9_]*"
|
||||||
EXPRESSION_RE = r"[\[\]():.a-zA-Z0-9_]*"
|
EXPRESSION_RE = r"[\[\]():.a-zA-Z0-9_]*"
|
||||||
|
@ -26,7 +26,7 @@ class Template:
|
||||||
def from_file(cls, filename):
|
def from_file(cls, filename):
|
||||||
with open(filename) as f:
|
with open(filename) as f:
|
||||||
front_matter, body = f.read().strip("-\n").split("---", 2)
|
front_matter, body = f.read().strip("-\n").split("---", 2)
|
||||||
front_matter = yaml.load(front_matter, Loader=yaml.SafeLoader)
|
front_matter = YAML(typ="safe").load(front_matter)
|
||||||
template = cls(body)
|
template = cls(body)
|
||||||
template.__dict__.update(front_matter)
|
template.__dict__.update(front_matter)
|
||||||
return template
|
return template
|
||||||
|
|
222
poetry.lock
generated
222
poetry.lock
generated
|
@ -115,7 +115,7 @@ pycparser = "*"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "click"
|
name = "click"
|
||||||
version = "8.0.3"
|
version = "8.0.4"
|
||||||
description = "Composable command line interface toolkit"
|
description = "Composable command line interface toolkit"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
|
@ -172,7 +172,11 @@ python-versions = ">=3.5"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "executing"
|
name = "executing"
|
||||||
|
<<<<<<< HEAD
|
||||||
version = "0.8.2"
|
version = "0.8.2"
|
||||||
|
=======
|
||||||
|
version = "0.8.3"
|
||||||
|
>>>>>>> develop
|
||||||
description = "Get the currently executing AST node of a frame, and other information"
|
description = "Get the currently executing AST node of a frame, and other information"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
|
@ -215,7 +219,11 @@ python-versions = "*"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "importlib-metadata"
|
name = "importlib-metadata"
|
||||||
|
<<<<<<< HEAD
|
||||||
version = "4.11.0"
|
version = "4.11.0"
|
||||||
|
=======
|
||||||
|
version = "4.11.2"
|
||||||
|
>>>>>>> develop
|
||||||
description = "Read metadata from Python packages"
|
description = "Read metadata from Python packages"
|
||||||
category = "main"
|
category = "main"
|
||||||
optional = false
|
optional = false
|
||||||
|
@ -225,9 +233,15 @@ python-versions = ">=3.7"
|
||||||
zipp = ">=0.5"
|
zipp = ">=0.5"
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
|
<<<<<<< HEAD
|
||||||
docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
|
docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
|
||||||
perf = ["ipython"]
|
perf = ["ipython"]
|
||||||
testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"]
|
testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"]
|
||||||
|
=======
|
||||||
|
docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"]
|
||||||
|
perf = ["ipython"]
|
||||||
|
testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"]
|
||||||
|
>>>>>>> develop
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iniconfig"
|
name = "iniconfig"
|
||||||
|
@ -252,7 +266,11 @@ toml = {version = ">=0.10.2", markers = "python_version > \"3.6\""}
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ipython"
|
name = "ipython"
|
||||||
|
<<<<<<< HEAD
|
||||||
version = "8.0.1"
|
version = "8.0.1"
|
||||||
|
=======
|
||||||
|
version = "8.1.1"
|
||||||
|
>>>>>>> develop
|
||||||
description = "IPython: Productive Interactive Computing"
|
description = "IPython: Productive Interactive Computing"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
|
@ -269,21 +287,35 @@ matplotlib-inline = "*"
|
||||||
pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
|
pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
|
||||||
pickleshare = "*"
|
pickleshare = "*"
|
||||||
prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0"
|
prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0"
|
||||||
|
<<<<<<< HEAD
|
||||||
pygments = "*"
|
pygments = "*"
|
||||||
|
=======
|
||||||
|
pygments = ">=2.4.0"
|
||||||
|
>>>>>>> develop
|
||||||
stack-data = "*"
|
stack-data = "*"
|
||||||
traitlets = ">=5"
|
traitlets = ">=5"
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
|
<<<<<<< HEAD
|
||||||
all = ["Sphinx (>=1.3)", "curio", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.19)", "pandas", "pygments", "pytest", "pytest-asyncio", "qtconsole", "testpath", "trio"]
|
all = ["Sphinx (>=1.3)", "curio", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.19)", "pandas", "pygments", "pytest", "pytest-asyncio", "qtconsole", "testpath", "trio"]
|
||||||
|
=======
|
||||||
|
all = ["black", "Sphinx (>=1.3)", "ipykernel", "nbconvert", "nbformat", "ipywidgets", "notebook", "ipyparallel", "qtconsole", "curio", "matplotlib (!=3.2.0)", "numpy (>=1.19)", "pandas", "pytest", "testpath", "trio", "pytest-asyncio"]
|
||||||
|
black = ["black"]
|
||||||
|
>>>>>>> develop
|
||||||
doc = ["Sphinx (>=1.3)"]
|
doc = ["Sphinx (>=1.3)"]
|
||||||
kernel = ["ipykernel"]
|
kernel = ["ipykernel"]
|
||||||
nbconvert = ["nbconvert"]
|
nbconvert = ["nbconvert"]
|
||||||
nbformat = ["nbformat"]
|
nbformat = ["nbformat"]
|
||||||
notebook = ["notebook", "ipywidgets"]
|
notebook = ["ipywidgets", "notebook"]
|
||||||
parallel = ["ipyparallel"]
|
parallel = ["ipyparallel"]
|
||||||
qtconsole = ["qtconsole"]
|
qtconsole = ["qtconsole"]
|
||||||
|
<<<<<<< HEAD
|
||||||
test = ["pytest", "pytest-asyncio", "testpath", "pygments"]
|
test = ["pytest", "pytest-asyncio", "testpath", "pygments"]
|
||||||
test_extra = ["pytest", "testpath", "curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.19)", "pandas", "pygments", "trio"]
|
test_extra = ["pytest", "testpath", "curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.19)", "pandas", "pygments", "trio"]
|
||||||
|
=======
|
||||||
|
test = ["pytest", "pytest-asyncio", "testpath"]
|
||||||
|
test_extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.19)", "pandas", "pytest", "testpath", "trio"]
|
||||||
|
>>>>>>> develop
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jedi"
|
name = "jedi"
|
||||||
|
@ -346,11 +378,16 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mako"
|
name = "mako"
|
||||||
|
<<<<<<< HEAD
|
||||||
version = "1.1.6"
|
version = "1.1.6"
|
||||||
description = "A super-fast templating language that borrows the best ideas from the existing templating languages."
|
description = "A super-fast templating language that borrows the best ideas from the existing templating languages."
|
||||||
|
=======
|
||||||
|
version = "1.2.0"
|
||||||
|
description = "A super-fast templating language that borrows the best ideas from the existing templating languages."
|
||||||
|
>>>>>>> develop
|
||||||
category = "main"
|
category = "main"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
python-versions = ">=3.7"
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
MarkupSafe = ">=0.9.2"
|
MarkupSafe = ">=0.9.2"
|
||||||
|
@ -358,6 +395,7 @@ MarkupSafe = ">=0.9.2"
|
||||||
[package.extras]
|
[package.extras]
|
||||||
babel = ["babel"]
|
babel = ["babel"]
|
||||||
lingua = ["lingua"]
|
lingua = ["lingua"]
|
||||||
|
testing = ["pytest"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "markdown"
|
name = "markdown"
|
||||||
|
@ -375,11 +413,11 @@ testing = ["coverage", "pyyaml"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "markupsafe"
|
name = "markupsafe"
|
||||||
version = "2.0.1"
|
version = "2.1.0"
|
||||||
description = "Safely add untrusted strings to HTML/XML markup."
|
description = "Safely add untrusted strings to HTML/XML markup."
|
||||||
category = "main"
|
category = "main"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "matplotlib-inline"
|
name = "matplotlib-inline"
|
||||||
|
@ -523,7 +561,11 @@ python-versions = "*"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "platformdirs"
|
name = "platformdirs"
|
||||||
|
<<<<<<< HEAD
|
||||||
version = "2.5.0"
|
version = "2.5.0"
|
||||||
|
=======
|
||||||
|
version = "2.5.1"
|
||||||
|
>>>>>>> develop
|
||||||
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
|
@ -735,7 +777,7 @@ python-versions = "*"
|
||||||
name = "pyyaml"
|
name = "pyyaml"
|
||||||
version = "6.0"
|
version = "6.0"
|
||||||
description = "YAML parser and emitter for Python"
|
description = "YAML parser and emitter for Python"
|
||||||
category = "main"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
|
|
||||||
|
@ -752,20 +794,46 @@ pyyaml = "*"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rich"
|
name = "rich"
|
||||||
|
<<<<<<< HEAD
|
||||||
version = "11.2.0"
|
version = "11.2.0"
|
||||||
|
=======
|
||||||
|
version = "12.0.0"
|
||||||
|
>>>>>>> develop
|
||||||
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
|
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6.2,<4.0.0"
|
python-versions = ">=3.6.2,<4.0.0"
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
colorama = ">=0.4.0,<0.5.0"
|
|
||||||
commonmark = ">=0.9.0,<0.10.0"
|
commonmark = ">=0.9.0,<0.10.0"
|
||||||
pygments = ">=2.6.0,<3.0.0"
|
pygments = ">=2.6.0,<3.0.0"
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"]
|
jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ruamel.yaml"
|
||||||
|
version = "0.17.21"
|
||||||
|
description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order"
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3"
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
"ruamel.yaml.clib" = {version = ">=0.2.6", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.11\""}
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
docs = ["ryd"]
|
||||||
|
jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ruamel.yaml.clib"
|
||||||
|
version = "0.2.6"
|
||||||
|
description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml"
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.5"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "secretstorage"
|
name = "secretstorage"
|
||||||
version = "3.3.1"
|
version = "3.3.1"
|
||||||
|
@ -788,7 +856,11 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stack-data"
|
name = "stack-data"
|
||||||
|
<<<<<<< HEAD
|
||||||
version = "0.1.4"
|
version = "0.1.4"
|
||||||
|
=======
|
||||||
|
version = "0.2.0"
|
||||||
|
>>>>>>> develop
|
||||||
description = "Extract data from python stack frames and tracebacks for informative displays"
|
description = "Extract data from python stack frames and tracebacks for informative displays"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
|
@ -800,7 +872,11 @@ executing = "*"
|
||||||
pure-eval = "*"
|
pure-eval = "*"
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
|
<<<<<<< HEAD
|
||||||
tests = ["pytest", "typeguard", "pygments", "littleutils"]
|
tests = ["pytest", "typeguard", "pygments", "littleutils"]
|
||||||
|
=======
|
||||||
|
tests = ["pytest", "typeguard", "pygments", "littleutils", "cython"]
|
||||||
|
>>>>>>> develop
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "textwrap3"
|
name = "textwrap3"
|
||||||
|
@ -839,7 +915,11 @@ test = ["pytest"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "typing-extensions"
|
name = "typing-extensions"
|
||||||
|
<<<<<<< HEAD
|
||||||
version = "4.1.0"
|
version = "4.1.0"
|
||||||
|
=======
|
||||||
|
version = "4.1.1"
|
||||||
|
>>>>>>> develop
|
||||||
description = "Backported and Experimental Type Hints for Python 3.6+"
|
description = "Backported and Experimental Type Hints for Python 3.6+"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
|
@ -885,7 +965,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "yq"
|
name = "yq"
|
||||||
version = "2.13.0"
|
version = "2.14.0"
|
||||||
description = "Command-line YAML/XML processor - jq wrapper for YAML/XML documents"
|
description = "Command-line YAML/XML processor - jq wrapper for YAML/XML documents"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
|
@ -918,7 +998,11 @@ testing = ["pytest", "pytest-bdd", "toml"]
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "1.1"
|
lock-version = "1.1"
|
||||||
python-versions = ">=3.9.0, <3.12"
|
python-versions = ">=3.9.0, <3.12"
|
||||||
|
<<<<<<< HEAD
|
||||||
content-hash = "0e9f028c0123632b42e13e961abc5f2779597b3ffdd14af8624534e0a184b794"
|
content-hash = "0e9f028c0123632b42e13e961abc5f2779597b3ffdd14af8624534e0a184b794"
|
||||||
|
=======
|
||||||
|
content-hash = "8393124bac95ba61eb1a3590f5ed97d938d7b3637ea1dc19e0baacfc1ccab093"
|
||||||
|
>>>>>>> develop
|
||||||
|
|
||||||
[metadata.files]
|
[metadata.files]
|
||||||
ansiwrap = [
|
ansiwrap = [
|
||||||
|
@ -1030,8 +1114,8 @@ cffi = [
|
||||||
{file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"},
|
{file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"},
|
||||||
]
|
]
|
||||||
click = [
|
click = [
|
||||||
{file = "click-8.0.3-py3-none-any.whl", hash = "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3"},
|
{file = "click-8.0.4-py3-none-any.whl", hash = "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1"},
|
||||||
{file = "click-8.0.3.tar.gz", hash = "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b"},
|
{file = "click-8.0.4.tar.gz", hash = "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb"},
|
||||||
]
|
]
|
||||||
colorama = [
|
colorama = [
|
||||||
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
|
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
|
||||||
|
@ -1068,8 +1152,13 @@ decorator = [
|
||||||
{file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
|
{file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
|
||||||
]
|
]
|
||||||
executing = [
|
executing = [
|
||||||
|
<<<<<<< HEAD
|
||||||
{file = "executing-0.8.2-py2.py3-none-any.whl", hash = "sha256:32fc6077b103bd19e6494a72682d66d5763cf20a106d5aa7c5ccbea4e47b0df7"},
|
{file = "executing-0.8.2-py2.py3-none-any.whl", hash = "sha256:32fc6077b103bd19e6494a72682d66d5763cf20a106d5aa7c5ccbea4e47b0df7"},
|
||||||
{file = "executing-0.8.2.tar.gz", hash = "sha256:c23bf42e9a7b9b212f185b1b2c3c91feb895963378887bb10e64a2e612ec0023"},
|
{file = "executing-0.8.2.tar.gz", hash = "sha256:c23bf42e9a7b9b212f185b1b2c3c91feb895963378887bb10e64a2e612ec0023"},
|
||||||
|
=======
|
||||||
|
{file = "executing-0.8.3-py2.py3-none-any.whl", hash = "sha256:d1eef132db1b83649a3905ca6dd8897f71ac6f8cac79a7e58a1a09cf137546c9"},
|
||||||
|
{file = "executing-0.8.3.tar.gz", hash = "sha256:c6554e21c6b060590a6d3be4b82fb78f8f0194d809de5ea7df1c093763311501"},
|
||||||
|
>>>>>>> develop
|
||||||
]
|
]
|
||||||
flake8 = [
|
flake8 = [
|
||||||
{file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"},
|
{file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"},
|
||||||
|
@ -1083,8 +1172,13 @@ glob2 = [
|
||||||
{file = "glob2-0.7.tar.gz", hash = "sha256:85c3dbd07c8aa26d63d7aacee34fa86e9a91a3873bc30bf62ec46e531f92ab8c"},
|
{file = "glob2-0.7.tar.gz", hash = "sha256:85c3dbd07c8aa26d63d7aacee34fa86e9a91a3873bc30bf62ec46e531f92ab8c"},
|
||||||
]
|
]
|
||||||
importlib-metadata = [
|
importlib-metadata = [
|
||||||
|
<<<<<<< HEAD
|
||||||
{file = "importlib_metadata-4.11.0-py3-none-any.whl", hash = "sha256:6affcdb3aec542dd98df8211e730bba6c5f2bec8288d47bacacde898f548c9ad"},
|
{file = "importlib_metadata-4.11.0-py3-none-any.whl", hash = "sha256:6affcdb3aec542dd98df8211e730bba6c5f2bec8288d47bacacde898f548c9ad"},
|
||||||
{file = "importlib_metadata-4.11.0.tar.gz", hash = "sha256:9e5e553bbba1843cb4a00823014b907616be46ee503d2b9ba001d214a8da218f"},
|
{file = "importlib_metadata-4.11.0.tar.gz", hash = "sha256:9e5e553bbba1843cb4a00823014b907616be46ee503d2b9ba001d214a8da218f"},
|
||||||
|
=======
|
||||||
|
{file = "importlib_metadata-4.11.2-py3-none-any.whl", hash = "sha256:d16e8c1deb60de41b8e8ed21c1a7b947b0bc62fab7e1d470bcdf331cea2e6735"},
|
||||||
|
{file = "importlib_metadata-4.11.2.tar.gz", hash = "sha256:b36ffa925fe3139b2f6ff11d6925ffd4fa7bc47870165e3ac260ac7b4f91e6ac"},
|
||||||
|
>>>>>>> develop
|
||||||
]
|
]
|
||||||
iniconfig = [
|
iniconfig = [
|
||||||
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
|
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
|
||||||
|
@ -1094,8 +1188,13 @@ ipdb = [
|
||||||
{file = "ipdb-0.13.9.tar.gz", hash = "sha256:951bd9a64731c444fd907a5ce268543020086a697f6be08f7cc2c9a752a278c5"},
|
{file = "ipdb-0.13.9.tar.gz", hash = "sha256:951bd9a64731c444fd907a5ce268543020086a697f6be08f7cc2c9a752a278c5"},
|
||||||
]
|
]
|
||||||
ipython = [
|
ipython = [
|
||||||
|
<<<<<<< HEAD
|
||||||
{file = "ipython-8.0.1-py3-none-any.whl", hash = "sha256:c503a0dd6ccac9c8c260b211f2dd4479c042b49636b097cc9a0d55fe62dff64c"},
|
{file = "ipython-8.0.1-py3-none-any.whl", hash = "sha256:c503a0dd6ccac9c8c260b211f2dd4479c042b49636b097cc9a0d55fe62dff64c"},
|
||||||
{file = "ipython-8.0.1.tar.gz", hash = "sha256:ab564d4521ea8ceaac26c3a2c6e5ddbca15c8848fd5a5cc325f960da88d42974"},
|
{file = "ipython-8.0.1.tar.gz", hash = "sha256:ab564d4521ea8ceaac26c3a2c6e5ddbca15c8848fd5a5cc325f960da88d42974"},
|
||||||
|
=======
|
||||||
|
{file = "ipython-8.1.1-py3-none-any.whl", hash = "sha256:6f56bfaeaa3247aa3b9cd3b8cbab3a9c0abf7428392f97b21902d12b2f42a381"},
|
||||||
|
{file = "ipython-8.1.1.tar.gz", hash = "sha256:8138762243c9b3a3ffcf70b37151a2a35c23d3a29f9743878c33624f4207be3d"},
|
||||||
|
>>>>>>> develop
|
||||||
]
|
]
|
||||||
jedi = [
|
jedi = [
|
||||||
{file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"},
|
{file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"},
|
||||||
|
@ -1114,14 +1213,20 @@ keyring = [
|
||||||
{file = "keyring-23.5.0.tar.gz", hash = "sha256:9012508e141a80bd1c0b6778d5c610dd9f8c464d75ac6774248500503f972fb9"},
|
{file = "keyring-23.5.0.tar.gz", hash = "sha256:9012508e141a80bd1c0b6778d5c610dd9f8c464d75ac6774248500503f972fb9"},
|
||||||
]
|
]
|
||||||
mako = [
|
mako = [
|
||||||
|
<<<<<<< HEAD
|
||||||
{file = "Mako-1.1.6-py2.py3-none-any.whl", hash = "sha256:afaf8e515d075b22fad7d7b8b30e4a1c90624ff2f3733a06ec125f5a5f043a57"},
|
{file = "Mako-1.1.6-py2.py3-none-any.whl", hash = "sha256:afaf8e515d075b22fad7d7b8b30e4a1c90624ff2f3733a06ec125f5a5f043a57"},
|
||||||
{file = "Mako-1.1.6.tar.gz", hash = "sha256:4e9e345a41924a954251b95b4b28e14a301145b544901332e658907a7464b6b2"},
|
{file = "Mako-1.1.6.tar.gz", hash = "sha256:4e9e345a41924a954251b95b4b28e14a301145b544901332e658907a7464b6b2"},
|
||||||
|
=======
|
||||||
|
{file = "Mako-1.2.0-py3-none-any.whl", hash = "sha256:23aab11fdbbb0f1051b93793a58323ff937e98e34aece1c4219675122e57e4ba"},
|
||||||
|
{file = "Mako-1.2.0.tar.gz", hash = "sha256:9a7c7e922b87db3686210cf49d5d767033a41d4010b284e747682c92bddd8b39"},
|
||||||
|
>>>>>>> develop
|
||||||
]
|
]
|
||||||
markdown = [
|
markdown = [
|
||||||
{file = "Markdown-3.3.6-py3-none-any.whl", hash = "sha256:9923332318f843411e9932237530df53162e29dc7a4e2b91e35764583c46c9a3"},
|
{file = "Markdown-3.3.6-py3-none-any.whl", hash = "sha256:9923332318f843411e9932237530df53162e29dc7a4e2b91e35764583c46c9a3"},
|
||||||
{file = "Markdown-3.3.6.tar.gz", hash = "sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006"},
|
{file = "Markdown-3.3.6.tar.gz", hash = "sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006"},
|
||||||
]
|
]
|
||||||
markupsafe = [
|
markupsafe = [
|
||||||
|
<<<<<<< HEAD
|
||||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
|
{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_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-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"},
|
||||||
|
@ -1156,6 +1261,48 @@ markupsafe = [
|
||||||
{file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"},
|
{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-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"},
|
||||||
{file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
|
{file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
|
||||||
|
=======
|
||||||
|
{file = "MarkupSafe-2.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3028252424c72b2602a323f70fbf50aa80a5d3aa616ea6add4ba21ae9cc9da4c"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:290b02bab3c9e216da57c1d11d2ba73a9f73a614bbdcc027d299a60cdfabb11a"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e104c0c2b4cd765b4e83909cde7ec61a1e313f8a75775897db321450e928cce"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24c3be29abb6b34052fd26fc7a8e0a49b1ee9d282e3665e8ad09a0a68faee5b3"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204730fd5fe2fe3b1e9ccadb2bd18ba8712b111dcabce185af0b3b5285a7c989"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d3b64c65328cb4cd252c94f83e66e3d7acf8891e60ebf588d7b493a55a1dbf26"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:96de1932237abe0a13ba68b63e94113678c379dca45afa040a17b6e1ad7ed076"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75bb36f134883fdbe13d8e63b8675f5f12b80bb6627f7714c7d6c5becf22719f"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp310-cp310-win32.whl", hash = "sha256:4056f752015dfa9828dce3140dbadd543b555afb3252507348c493def166d454"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:d4e702eea4a2903441f2735799d217f4ac1b55f7d8ad96ab7d4e25417cb0827c"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f0eddfcabd6936558ec020130f932d479930581171368fd728efcfb6ef0dd357"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ddea4c352a488b5e1069069f2f501006b1a4362cb906bee9a193ef1245a7a61"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09c86c9643cceb1d87ca08cdc30160d1b7ab49a8a21564868921959bd16441b8"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0a0abef2ca47b33fb615b491ce31b055ef2430de52c5b3fb19a4042dbc5cadb"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:736895a020e31b428b3382a7887bfea96102c529530299f426bf2e636aacec9e"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:679cbb78914ab212c49c67ba2c7396dc599a8479de51b9a87b174700abd9ea49"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:84ad5e29bf8bab3ad70fd707d3c05524862bddc54dc040982b0dbcff36481de7"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp37-cp37m-win32.whl", hash = "sha256:8da5924cb1f9064589767b0f3fc39d03e3d0fb5aa29e0cb21d43106519bd624a"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:454ffc1cbb75227d15667c09f164a0099159da0c1f3d2636aa648f12675491ad"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:142119fb14a1ef6d758912b25c4e803c3ff66920635c44078666fe7cc3f8f759"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b2a5a856019d2833c56a3dcac1b80fe795c95f401818ea963594b345929dffa7"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d1fb9b2eec3c9714dd936860850300b51dbaa37404209c8d4cb66547884b7ed"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62c0285e91414f5c8f621a17b69fc0088394ccdaa961ef469e833dbff64bd5ea"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc3150f85e2dbcf99e65238c842d1cfe69d3e7649b19864c1cc043213d9cd730"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f02cf7221d5cd915d7fa58ab64f7ee6dd0f6cddbb48683debf5d04ae9b1c2cc1"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d5653619b3eb5cbd35bfba3c12d575db2a74d15e0e1c08bf1db788069d410ce8"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7d2f5d97fcbd004c03df8d8fe2b973fe2b14e7bfeb2cfa012eaa8759ce9a762f"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp38-cp38-win32.whl", hash = "sha256:3cace1837bc84e63b3fd2dfce37f08f8c18aeb81ef5cf6bb9b51f625cb4e6cd8"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:fabbe18087c3d33c5824cb145ffca52eccd053061df1d79d4b66dafa5ad2a5ea"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:023af8c54fe63530545f70dd2a2a7eed18d07a9a77b94e8bf1e2ff7f252db9a3"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d66624f04de4af8bbf1c7f21cc06649c1c69a7f84109179add573ce35e46d448"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c532d5ab79be0199fa2658e24a02fce8542df196e60665dd322409a03db6a52c"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ec74fada3841b8c5f4c4f197bea916025cb9aa3fe5abf7d52b655d042f956"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c653fde75a6e5eb814d2a0a89378f83d1d3f502ab710904ee585c38888816c"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:961eb86e5be7d0973789f30ebcf6caab60b844203f4396ece27310295a6082c7"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:598b65d74615c021423bd45c2bc5e9b59539c875a9bdb7e5f2a6b92dfcfc268d"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:599941da468f2cf22bf90a84f6e2a65524e87be2fce844f96f2dd9a6c9d1e635"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp39-cp39-win32.whl", hash = "sha256:e6f7f3f41faffaea6596da86ecc2389672fa949bd035251eab26dc6697451d05"},
|
||||||
|
{file = "MarkupSafe-2.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:b8811d48078d1cf2a6863dafb896e68406c5f513048451cd2ded0473133473c7"},
|
||||||
|
{file = "MarkupSafe-2.1.0.tar.gz", hash = "sha256:80beaf63ddfbc64a0452b841d8036ca0611e049650e20afcb882f5d3c266d65f"},
|
||||||
|
>>>>>>> develop
|
||||||
]
|
]
|
||||||
matplotlib-inline = [
|
matplotlib-inline = [
|
||||||
{file = "matplotlib-inline-0.1.3.tar.gz", hash = "sha256:a04bfba22e0d1395479f866853ec1ee28eea1485c1d69a6faf00dc3e24ff34ee"},
|
{file = "matplotlib-inline-0.1.3.tar.gz", hash = "sha256:a04bfba22e0d1395479f866853ec1ee28eea1485c1d69a6faf00dc3e24ff34ee"},
|
||||||
|
@ -1209,8 +1356,13 @@ pickleshare = [
|
||||||
{file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
|
{file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
|
||||||
]
|
]
|
||||||
platformdirs = [
|
platformdirs = [
|
||||||
|
<<<<<<< HEAD
|
||||||
{file = "platformdirs-2.5.0-py3-none-any.whl", hash = "sha256:30671902352e97b1eafd74ade8e4a694782bd3471685e78c32d0fdfd3aa7e7bb"},
|
{file = "platformdirs-2.5.0-py3-none-any.whl", hash = "sha256:30671902352e97b1eafd74ade8e4a694782bd3471685e78c32d0fdfd3aa7e7bb"},
|
||||||
{file = "platformdirs-2.5.0.tar.gz", hash = "sha256:8ec11dfba28ecc0715eb5fb0147a87b1bf325f349f3da9aab2cd6b50b96b692b"},
|
{file = "platformdirs-2.5.0.tar.gz", hash = "sha256:8ec11dfba28ecc0715eb5fb0147a87b1bf325f349f3da9aab2cd6b50b96b692b"},
|
||||||
|
=======
|
||||||
|
{file = "platformdirs-2.5.1-py3-none-any.whl", hash = "sha256:bcae7cab893c2d310a711b70b24efb93334febe65f8de776ee320b517471e227"},
|
||||||
|
{file = "platformdirs-2.5.1.tar.gz", hash = "sha256:7535e70dfa32e84d4b34996ea99c5e432fa29a708d0f4e394bbcb2a8faa4f16d"},
|
||||||
|
>>>>>>> develop
|
||||||
]
|
]
|
||||||
pluggy = [
|
pluggy = [
|
||||||
{file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
|
{file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
|
||||||
|
@ -1327,8 +1479,44 @@ pyyaml-env-tag = [
|
||||||
{file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"},
|
{file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"},
|
||||||
]
|
]
|
||||||
rich = [
|
rich = [
|
||||||
|
<<<<<<< HEAD
|
||||||
{file = "rich-11.2.0-py3-none-any.whl", hash = "sha256:d5f49ad91fb343efcae45a2b2df04a9755e863e50413623ab8c9e74f05aee52b"},
|
{file = "rich-11.2.0-py3-none-any.whl", hash = "sha256:d5f49ad91fb343efcae45a2b2df04a9755e863e50413623ab8c9e74f05aee52b"},
|
||||||
{file = "rich-11.2.0.tar.gz", hash = "sha256:1a6266a5738115017bb64a66c59c717e7aa047b3ae49a011ede4abdeffc6536e"},
|
{file = "rich-11.2.0.tar.gz", hash = "sha256:1a6266a5738115017bb64a66c59c717e7aa047b3ae49a011ede4abdeffc6536e"},
|
||||||
|
=======
|
||||||
|
{file = "rich-12.0.0-py3-none-any.whl", hash = "sha256:fdcd2f8d416e152bcf35c659987038d1ae5a7bd336e821ca7551858a4c7e38a9"},
|
||||||
|
{file = "rich-12.0.0.tar.gz", hash = "sha256:14bfd0507edc633e021b02c45cbf7ca22e33b513817627b8de3412f047a3e798"},
|
||||||
|
]
|
||||||
|
"ruamel.yaml" = [
|
||||||
|
{file = "ruamel.yaml-0.17.21-py3-none-any.whl", hash = "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7"},
|
||||||
|
{file = "ruamel.yaml-0.17.21.tar.gz", hash = "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"},
|
||||||
|
]
|
||||||
|
"ruamel.yaml.clib" = [
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6e7be2c5bcb297f5b82fee9c665eb2eb7001d1050deaba8471842979293a80b0"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:221eca6f35076c6ae472a531afa1c223b9c29377e62936f61bc8e6e8bdc5f9e7"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win32.whl", hash = "sha256:1070ba9dd7f9370d0513d649420c3b362ac2d687fe78c6e888f5b12bf8bc7bee"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:77df077d32921ad46f34816a9a16e6356d8100374579bc35e15bab5d4e9377de"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:cfdb9389d888c5b74af297e51ce357b800dd844898af9d4a547ffc143fa56751"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7b2927e92feb51d830f531de4ccb11b320255ee95e791022555971c466af4527"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win32.whl", hash = "sha256:ada3f400d9923a190ea8b59c8f60680c4ef8a4b0dfae134d2f2ff68429adfab5"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win_amd64.whl", hash = "sha256:de9c6b8a1ba52919ae919f3ae96abb72b994dd0350226e28f3686cb4f142165c"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d67f273097c368265a7b81e152e07fb90ed395df6e552b9fa858c6d2c9f42502"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:72a2b8b2ff0a627496aad76f37a652bcef400fd861721744201ef1b45199ab78"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win32.whl", hash = "sha256:9efef4aab5353387b07f6b22ace0867032b900d8e91674b5d8ea9150db5cae94"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win_amd64.whl", hash = "sha256:846fc8336443106fe23f9b6d6b8c14a53d38cef9a375149d61f99d78782ea468"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0847201b767447fc33b9c235780d3aa90357d20dd6108b92be544427bea197dd"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:78988ed190206672da0f5d50c61afef8f67daa718d614377dcd5e3ed85ab4a99"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win32.whl", hash = "sha256:a49e0161897901d1ac9c4a79984b8410f450565bbad64dbfcbf76152743a0cdb"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win_amd64.whl", hash = "sha256:bf75d28fa071645c529b5474a550a44686821decebdd00e21127ef1fd566eabe"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a32f8d81ea0c6173ab1b3da956869114cae53ba1e9f72374032e33ba3118c233"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7f7ecb53ae6848f959db6ae93bdff1740e651809780822270eab111500842a84"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win32.whl", hash = "sha256:89221ec6d6026f8ae859c09b9718799fea22c0e8da8b766b0b2c9a9ba2db326b"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win_amd64.whl", hash = "sha256:31ea73e564a7b5fbbe8188ab8b334393e06d997914a4e184975348f204790277"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc6a613d6c74eef5a14a214d433d06291526145431c3b964f5e16529b1842bed"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:1866cf2c284a03b9524a5cc00daca56d80057c5ce3cdc86a52020f4c720856f0"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win32.whl", hash = "sha256:3fb9575a5acd13031c57a62cc7823e5d2ff8bc3835ba4d94b921b4e6ee664104"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win_amd64.whl", hash = "sha256:825d5fccef6da42f3c8eccd4281af399f21c02b32d98e113dbc631ea6a6ecbc7"},
|
||||||
|
{file = "ruamel.yaml.clib-0.2.6.tar.gz", hash = "sha256:4ff604ce439abb20794f05613c374759ce10e3595d1867764dd1ae675b85acbd"},
|
||||||
|
>>>>>>> develop
|
||||||
]
|
]
|
||||||
secretstorage = [
|
secretstorage = [
|
||||||
{file = "SecretStorage-3.3.1-py3-none-any.whl", hash = "sha256:422d82c36172d88d6a0ed5afdec956514b189ddbfb72fefab0c8a1cee4eaf71f"},
|
{file = "SecretStorage-3.3.1-py3-none-any.whl", hash = "sha256:422d82c36172d88d6a0ed5afdec956514b189ddbfb72fefab0c8a1cee4eaf71f"},
|
||||||
|
@ -1339,8 +1527,13 @@ six = [
|
||||||
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
|
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
|
||||||
]
|
]
|
||||||
stack-data = [
|
stack-data = [
|
||||||
|
<<<<<<< HEAD
|
||||||
{file = "stack_data-0.1.4-py3-none-any.whl", hash = "sha256:02cc0683cbc445ae4ca8c4e3a0e58cb1df59f252efb0aa016b34804a707cf9bc"},
|
{file = "stack_data-0.1.4-py3-none-any.whl", hash = "sha256:02cc0683cbc445ae4ca8c4e3a0e58cb1df59f252efb0aa016b34804a707cf9bc"},
|
||||||
{file = "stack_data-0.1.4.tar.gz", hash = "sha256:7769ed2482ce0030e00175dd1bf4ef1e873603b6ab61cd3da443b410e64e9477"},
|
{file = "stack_data-0.1.4.tar.gz", hash = "sha256:7769ed2482ce0030e00175dd1bf4ef1e873603b6ab61cd3da443b410e64e9477"},
|
||||||
|
=======
|
||||||
|
{file = "stack_data-0.2.0-py3-none-any.whl", hash = "sha256:999762f9c3132308789affa03e9271bbbe947bf78311851f4d485d8402ed858e"},
|
||||||
|
{file = "stack_data-0.2.0.tar.gz", hash = "sha256:45692d41bd633a9503a5195552df22b583caf16f0b27c4e58c98d88c8b648e12"},
|
||||||
|
>>>>>>> develop
|
||||||
]
|
]
|
||||||
textwrap3 = [
|
textwrap3 = [
|
||||||
{file = "textwrap3-0.9.2-py2.py3-none-any.whl", hash = "sha256:bf5f4c40faf2a9ff00a9e0791fed5da7415481054cef45bb4a3cfb1f69044ae0"},
|
{file = "textwrap3-0.9.2-py2.py3-none-any.whl", hash = "sha256:bf5f4c40faf2a9ff00a9e0791fed5da7415481054cef45bb4a3cfb1f69044ae0"},
|
||||||
|
@ -1359,8 +1552,13 @@ traitlets = [
|
||||||
{file = "traitlets-5.1.1.tar.gz", hash = "sha256:059f456c5a7c1c82b98c2e8c799f39c9b8128f6d0d46941ee118daace9eb70c7"},
|
{file = "traitlets-5.1.1.tar.gz", hash = "sha256:059f456c5a7c1c82b98c2e8c799f39c9b8128f6d0d46941ee118daace9eb70c7"},
|
||||||
]
|
]
|
||||||
typing-extensions = [
|
typing-extensions = [
|
||||||
|
<<<<<<< HEAD
|
||||||
{file = "typing_extensions-4.1.0-py3-none-any.whl", hash = "sha256:c13180fbaa7cd97065a4915ceba012bdb31dc34743e63ddee16360161d358414"},
|
{file = "typing_extensions-4.1.0-py3-none-any.whl", hash = "sha256:c13180fbaa7cd97065a4915ceba012bdb31dc34743e63ddee16360161d358414"},
|
||||||
{file = "typing_extensions-4.1.0.tar.gz", hash = "sha256:ba97c5143e5bb067b57793c726dd857b1671d4b02ced273ca0538e71ff009095"},
|
{file = "typing_extensions-4.1.0.tar.gz", hash = "sha256:ba97c5143e5bb067b57793c726dd857b1671d4b02ced273ca0538e71ff009095"},
|
||||||
|
=======
|
||||||
|
{file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"},
|
||||||
|
{file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"},
|
||||||
|
>>>>>>> develop
|
||||||
]
|
]
|
||||||
tzlocal = [
|
tzlocal = [
|
||||||
{file = "tzlocal-2.1-py2.py3-none-any.whl", hash = "sha256:e2cb6c6b5b604af38597403e9852872d7f534962ae2954c7f35efcb1ccacf4a4"},
|
{file = "tzlocal-2.1-py2.py3-none-any.whl", hash = "sha256:e2cb6c6b5b604af38597403e9852872d7f534962ae2954c7f35efcb1ccacf4a4"},
|
||||||
|
@ -1400,8 +1598,8 @@ xmltodict = [
|
||||||
{file = "xmltodict-0.12.0.tar.gz", hash = "sha256:50d8c638ed7ecb88d90561beedbf720c9b4e851a9fa6c47ebd64e99d166d8a21"},
|
{file = "xmltodict-0.12.0.tar.gz", hash = "sha256:50d8c638ed7ecb88d90561beedbf720c9b4e851a9fa6c47ebd64e99d166d8a21"},
|
||||||
]
|
]
|
||||||
yq = [
|
yq = [
|
||||||
{file = "yq-2.13.0-py2.py3-none-any.whl", hash = "sha256:3ae1f647c85f76d48005d75445917cbea2f4d734bae9c7409372340583c2a6c1"},
|
{file = "yq-2.14.0-py3-none-any.whl", hash = "sha256:b6321b29cb39c4e92a4a6f16d47d99a024650211e45e09a02d1906ec45fbaede"},
|
||||||
{file = "yq-2.13.0.tar.gz", hash = "sha256:fd131fdb1f56716ad8d44cd9eaaf7d3b22d39ba8861ea64a409cc3f4ae263db8"},
|
{file = "yq-2.14.0.tar.gz", hash = "sha256:f4bf2b299d1e5c7ebd74cfb25d1f5d9b6401063bac07a2d09a156144c1d644e1"},
|
||||||
]
|
]
|
||||||
zipp = [
|
zipp = [
|
||||||
{file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"},
|
{file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"},
|
||||||
|
|
|
@ -37,7 +37,7 @@ keyring = ">=21.0" # https://github.com/jaraco/keyring#integration
|
||||||
parsedatetime = ">=2.6"
|
parsedatetime = ">=2.6"
|
||||||
python-dateutil = "^2.8" # https://github.com/dateutil/dateutil/blob/master/RELEASING
|
python-dateutil = "^2.8" # https://github.com/dateutil/dateutil/blob/master/RELEASING
|
||||||
pyxdg = ">=0.27.0"
|
pyxdg = ">=0.27.0"
|
||||||
pyyaml = ">=5.1"
|
"ruamel.yaml" = "^0.17.21"
|
||||||
|
|
||||||
# dayone-only deps
|
# dayone-only deps
|
||||||
pytz = ">=2020" # https://pythonhosted.org/pytz/#issues-limitations
|
pytz = ">=2020" # https://pythonhosted.org/pytz/#issues-limitations
|
||||||
|
|
|
@ -83,6 +83,7 @@ Feature: Reading and writing to journal with custom date formats
|
||||||
Then the output should not contain "Life is good"
|
Then the output should not contain "Life is good"
|
||||||
And the output should not contain "But I'm better."
|
And the output should not contain "But I'm better."
|
||||||
|
|
||||||
|
|
||||||
Scenario Outline: Create entry using day of the week as entry date one.
|
Scenario Outline: Create entry using day of the week as entry date one.
|
||||||
Given we use the config "simple.yaml"
|
Given we use the config "simple.yaml"
|
||||||
And now is "2019-03-12 01:30:32 PM"
|
And now is "2019-03-12 01:30:32 PM"
|
||||||
|
@ -172,3 +173,28 @@ Feature: Reading and writing to journal with custom date formats
|
||||||
Then we should get no error
|
Then we should get no error
|
||||||
And the output should be
|
And the output should be
|
||||||
2013-10-27 03:27 Some text.
|
2013-10-27 03:27 Some text.
|
||||||
|
|
||||||
|
|
||||||
|
@skip #1422
|
||||||
|
Scenario Outline: Using "tomorrow" near daylight savings works in Dayone journals
|
||||||
|
Given we use the config "dayone.yaml"
|
||||||
|
And now is "<date>"
|
||||||
|
When we run "jrnl yesterday: This thing happened yesterday"
|
||||||
|
Then the output should contain "Entry added"
|
||||||
|
When we run "jrnl today at 11:59pm: Adding an entry right now."
|
||||||
|
Then the output should contain "Entry added"
|
||||||
|
When we run "jrnl tomorrow: A future entry."
|
||||||
|
Then the output should contain "Entry added"
|
||||||
|
When we run "jrnl -from yesterday -to today"
|
||||||
|
Then the output should contain "This thing happened yesterday"
|
||||||
|
And the output should contain "Adding an entry right now."
|
||||||
|
And the output should not contain "A future entry."
|
||||||
|
|
||||||
|
Examples: Dates
|
||||||
|
| date |
|
||||||
|
| 2022-02-10 01:00:00 PM |
|
||||||
|
| 2021-03-13 01:00:00 PM |
|
||||||
|
| 2021-11-06 01:00:00 PM |
|
||||||
|
| 2022-03-12 01:00:00 PM |
|
||||||
|
| 2022-11-05 01:00:00 PM |
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ Feature: Searching in a journal
|
||||||
|
|
||||||
Scenario Outline: Displaying entries using -from and -to day should display correct entries
|
Scenario Outline: Displaying entries using -from and -to day should display correct entries
|
||||||
Given we use the config "<config_file>"
|
Given we use the config "<config_file>"
|
||||||
|
And now is "2022-03-10 02:32:00 PM"
|
||||||
When we run "jrnl yesterday: This thing happened yesterday"
|
When we run "jrnl yesterday: This thing happened yesterday"
|
||||||
Then the output should contain "Entry added"
|
Then the output should contain "Entry added"
|
||||||
When we run "jrnl today at 11:59pm: Adding an entry right now."
|
When we run "jrnl today at 11:59pm: Adding an entry right now."
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
default_hour: 9
|
default_hour: 9
|
||||||
default_minute: 0
|
default_minute: 0
|
||||||
editor: ""
|
|
||||||
encrypt: false
|
encrypt: false
|
||||||
highlight: true
|
highlight: true
|
||||||
editor: "vim"
|
editor: "vim"
|
||||||
|
|
|
@ -8,7 +8,7 @@ from xml.etree import ElementTree
|
||||||
|
|
||||||
from pytest_bdd import then
|
from pytest_bdd import then
|
||||||
from pytest_bdd.parsers import parse
|
from pytest_bdd.parsers import parse
|
||||||
import yaml
|
from ruamel.yaml import YAML
|
||||||
|
|
||||||
from jrnl.config import scope_config
|
from jrnl.config import scope_config
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ def config_var_on_disk(config_on_disk, journal_name, should_or_should_not, some_
|
||||||
if journal_name:
|
if journal_name:
|
||||||
actual = actual["journals"][journal_name]
|
actual = actual["journals"][journal_name]
|
||||||
|
|
||||||
expected = yaml.load(some_yaml, Loader=yaml.SafeLoader)
|
expected = YAML(typ="safe").load(some_yaml)
|
||||||
|
|
||||||
actual_slice = actual
|
actual_slice = actual
|
||||||
if type(actual) is dict:
|
if type(actual) is dict:
|
||||||
|
@ -152,7 +152,7 @@ def config_var_in_memory(
|
||||||
if journal_name:
|
if journal_name:
|
||||||
actual = actual["journals"][journal_name]
|
actual = actual["journals"][journal_name]
|
||||||
|
|
||||||
expected = yaml.load(some_yaml, Loader=yaml.SafeLoader)
|
expected = YAML(typ="safe").load(some_yaml)
|
||||||
|
|
||||||
actual_slice = actual
|
actual_slice = actual
|
||||||
if type(actual) is dict:
|
if type(actual) is dict:
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
import textwrap
|
|
||||||
|
|
||||||
from jrnl.exception import JrnlException
|
|
||||||
from jrnl.exception import JrnlExceptionMessage
|
|
||||||
|
|
||||||
|
|
||||||
def test_config_directory_exception_message():
|
|
||||||
ex = JrnlException(
|
|
||||||
JrnlExceptionMessage.ConfigDirectoryIsFile,
|
|
||||||
config_directory_path="/config/directory/path",
|
|
||||||
)
|
|
||||||
|
|
||||||
assert ex.message == textwrap.dedent(
|
|
||||||
"""
|
|
||||||
The path to your jrnl configuration directory is a file, not a directory:
|
|
||||||
|
|
||||||
/config/directory/path
|
|
||||||
|
|
||||||
Removing this file will allow jrnl to save its configuration.
|
|
||||||
"""
|
|
||||||
)
|
|
|
@ -1,7 +1,6 @@
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from jrnl.exception import JrnlException
|
from jrnl.exception import JrnlException
|
||||||
from jrnl.exception import JrnlExceptionMessage
|
|
||||||
from jrnl.plugins.fancy_exporter import check_provided_linewrap_viability
|
from jrnl.plugins.fancy_exporter import check_provided_linewrap_viability
|
||||||
|
|
||||||
|
|
||||||
|
@ -24,8 +23,5 @@ class TestFancy:
|
||||||
|
|
||||||
total_linewrap = 12
|
total_linewrap = 12
|
||||||
|
|
||||||
with pytest.raises(JrnlException) as e:
|
with pytest.raises(JrnlException):
|
||||||
check_provided_linewrap_viability(total_linewrap, [content], journal)
|
check_provided_linewrap_viability(total_linewrap, [content], journal)
|
||||||
assert (
|
|
||||||
e.value.exception_msg == JrnlExceptionMessage.LineWrapTooSmallForDateFormat
|
|
||||||
)
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue