move journal class files into journals dir

This commit is contained in:
Jonathan Wren 2023-01-10 18:12:02 -08:00
parent 36a22352c6
commit f0ff6b9926
No known key found for this signature in database
21 changed files with 65 additions and 54 deletions

View file

@ -11,7 +11,7 @@ import colorama
from jrnl.os_compat import on_windows from jrnl.os_compat import on_windows
if TYPE_CHECKING: if TYPE_CHECKING:
from jrnl.Entry import Entry from jrnl.journals import Entry
if on_windows(): if on_windows():
colorama.init() colorama.init()

View file

@ -69,7 +69,7 @@ def postconfig_list(args: argparse.Namespace, config: dict, **_) -> int:
@cmd_requires_valid_journal_name @cmd_requires_valid_journal_name
def postconfig_import(args: argparse.Namespace, config: dict, **_) -> int: def postconfig_import(args: argparse.Namespace, config: dict, **_) -> int:
from jrnl.Journal import open_journal from jrnl.journals import open_journal
from jrnl.plugins import get_importer from jrnl.plugins import get_importer
# Requires opening the journal # Requires opening the journal
@ -90,7 +90,7 @@ def postconfig_encrypt(
""" """
from jrnl.config import update_config from jrnl.config import update_config
from jrnl.install import save_config from jrnl.install import save_config
from jrnl.Journal import open_journal from jrnl.journals import open_journal
# Open the journal # Open the journal
journal = open_journal(args.journal_name, config) journal = open_journal(args.journal_name, config)
@ -145,7 +145,7 @@ def postconfig_decrypt(
"""Decrypts into new file. If filename is not set, we encrypt the journal file itself.""" """Decrypts into new file. If filename is not set, we encrypt the journal file itself."""
from jrnl.config import update_config from jrnl.config import update_config
from jrnl.install import save_config from jrnl.install import save_config
from jrnl.Journal import open_journal from jrnl.journals import open_journal
journal = open_journal(args.journal_name, config) journal = open_journal(args.journal_name, config)

View file

@ -15,8 +15,8 @@ from jrnl.config import scope_config
from jrnl.editor import get_text_from_editor from jrnl.editor import get_text_from_editor
from jrnl.editor import get_text_from_stdin from jrnl.editor import get_text_from_stdin
from jrnl.exception import JrnlException from jrnl.exception import JrnlException
from jrnl.Journal import Journal from jrnl.journals import Journal
from jrnl.Journal import open_journal from jrnl.journals import open_journal
from jrnl.messages import Message from jrnl.messages import Message
from jrnl.messages import MsgStyle from jrnl.messages import MsgStyle
from jrnl.messages import MsgText from jrnl.messages import MsgText
@ -28,7 +28,7 @@ from jrnl.path import expand_path
if TYPE_CHECKING: if TYPE_CHECKING:
from argparse import Namespace from argparse import Namespace
from jrnl.Entry import Entry from jrnl.journals import Entry
def start(args: "Namespace"): def start(args: "Namespace"):

View file

@ -17,13 +17,14 @@ from xml.parsers.expat import ExpatError
import tzlocal import tzlocal
from jrnl import Entry
from jrnl import Journal
from jrnl import __title__ from jrnl import __title__
from jrnl import __version__ from jrnl import __version__
from .Entry import Entry
from .Journal import Journal
class DayOne(Journal.Journal):
class DayOne(Journal):
"""A special Journal handling DayOne files""" """A special Journal handling DayOne files"""
# InvalidFileException was added to plistlib in Python3.4 # InvalidFileException was added to plistlib in Python3.4
@ -63,7 +64,7 @@ class DayOne(Journal.Journal):
if timezone.key != "UTC": if timezone.key != "UTC":
date = date.replace(fold=1) + timezone.utcoffset(date) date = date.replace(fold=1) + timezone.utcoffset(date)
entry = Entry.Entry( entry = Entry(
self, self,
date, date,
text=dict_entry["Entry Text"], text=dict_entry["Entry Text"],

View file

@ -9,8 +9,8 @@ from typing import TYPE_CHECKING
import ansiwrap import ansiwrap
from .color import colorize from jrnl.color import colorize
from .color import highlight_tags_with_background_color from jrnl.color import highlight_tags_with_background_color
if TYPE_CHECKING: if TYPE_CHECKING:
from .Journal import Journal from .Journal import Journal

View file

@ -6,11 +6,12 @@ import fnmatch
import os import os
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from jrnl import Journal
from jrnl import time from jrnl import time
from .Journal import Journal
if TYPE_CHECKING: if TYPE_CHECKING:
from jrnl.Entry import Entry from jrnl.journals import Entry
def get_files(journal_config: str) -> list[str]: def get_files(journal_config: str) -> list[str]:
@ -22,7 +23,7 @@ def get_files(journal_config: str) -> list[str]:
return filenames return filenames
class Folder(Journal.Journal): class Folder(Journal):
"""A Journal handling multiple files in a folder""" """A Journal handling multiple files in a folder"""
def __init__(self, name: str = "default", **kwargs): def __init__(self, name: str = "default", **kwargs):

View file

@ -6,7 +6,6 @@ import logging
import os import os
import re import re
from jrnl import Entry
from jrnl import time from jrnl import time
from jrnl.config import validate_journal_name from jrnl.config import validate_journal_name
from jrnl.encryption import determine_encryption_method from jrnl.encryption import determine_encryption_method
@ -17,6 +16,8 @@ from jrnl.output import print_msg
from jrnl.path import expand_path from jrnl.path import expand_path
from jrnl.prompt import yesno from jrnl.prompt import yesno
from .Entry import Entry
class Tag: class Tag:
def __init__(self, name, count=0): def __init__(self, name, count=0):
@ -184,11 +185,11 @@ class Journal:
if entries: if entries:
entries[-1].text = journal_txt[last_entry_pos : match.start()] entries[-1].text = journal_txt[last_entry_pos : match.start()]
last_entry_pos = match.end() last_entry_pos = match.end()
entries.append(Entry.Entry(self, date=new_date)) entries.append(Entry(self, date=new_date))
# If no entries were found, treat all the existing text as an entry made now # If no entries were found, treat all the existing text as an entry made now
if not entries: if not entries:
entries.append(Entry.Entry(self, date=time.parse("now"))) entries.append(Entry(self, date=time.parse("now")))
# Fill in the text of the last entry # Fill in the text of the last entry
entries[-1].text = journal_txt[last_entry_pos:] entries[-1].text = journal_txt[last_entry_pos:]
@ -354,7 +355,7 @@ class Journal:
) )
if not date: # Still nothing? Meh, just live in the moment. if not date: # Still nothing? Meh, just live in the moment.
date = time.parse("now") date = time.parse("now")
entry = Entry.Entry(self, date, raw, starred=starred) entry = Entry(self, date, raw, starred=starred)
entry.modified = True entry.modified = True
self.entries.append(entry) self.entries.append(entry)
if sort: if sort:
@ -410,7 +411,7 @@ class LegacyJournal(Journal):
else: else:
starred = False starred = False
current_entry = Entry.Entry( current_entry = Entry(
self, date=new_date, text=line[date_length + 1 :], starred=starred self, date=new_date, text=line[date_length + 1 :], starred=starred
) )
except ValueError: except ValueError:
@ -455,21 +456,21 @@ def open_journal(journal_name, config, legacy=False):
if config["journal"].strip("/").endswith(".dayone") or "entries" in os.listdir( if config["journal"].strip("/").endswith(".dayone") or "entries" in os.listdir(
config["journal"] config["journal"]
): ):
from jrnl import DayOneJournal from jrnl.journals import DayOne
return DayOneJournal.DayOne(**config).open() return DayOne(**config).open()
else: else:
from jrnl import FolderJournal from jrnl.journals import Folder
return FolderJournal.Folder(journal_name, **config).open() return Folder(journal_name, **config).open()
if not config["encrypt"]: if not config["encrypt"]:
if legacy: if legacy:
return LegacyJournal(journal_name, **config).open() return LegacyJournal(journal_name, **config).open()
if config["journal"].endswith(os.sep): if config["journal"].endswith(os.sep):
from jrnl import FolderJournal from jrnl.journals import Folder
return FolderJournal.Folder(journal_name, **config).open() return Folder(journal_name, **config).open()
return Journal(journal_name, **config).open() return Journal(journal_name, **config).open()
if legacy: if legacy:

View file

@ -0,0 +1,5 @@
from .DayOneJournal import DayOne
from .Entry import Entry
from .FolderJournal import Folder
from .Journal import Journal
from .Journal import open_journal

View file

@ -7,8 +7,8 @@ from typing import TYPE_CHECKING
from jrnl.plugins.text_exporter import TextExporter from jrnl.plugins.text_exporter import TextExporter
if TYPE_CHECKING: if TYPE_CHECKING:
from jrnl.Entry import Entry from jrnl.journals import Entry
from jrnl.Journal import Journal from jrnl.journals import Journal
class DatesExporter(TextExporter): class DatesExporter(TextExporter):

View file

@ -13,8 +13,8 @@ from jrnl.messages import MsgText
from jrnl.plugins.text_exporter import TextExporter from jrnl.plugins.text_exporter import TextExporter
if TYPE_CHECKING: if TYPE_CHECKING:
from jrnl.Entry import Entry from jrnl.journals import Entry
from jrnl.Journal import Journal from jrnl.journals import Journal
class FancyExporter(TextExporter): class FancyExporter(TextExporter):

View file

@ -11,7 +11,7 @@ from jrnl.messages import MsgText
from jrnl.output import print_msg from jrnl.output import print_msg
if TYPE_CHECKING: if TYPE_CHECKING:
from jrnl.Journal import Journal from jrnl.journals import Journal
class JRNLImporter: class JRNLImporter:

View file

@ -8,8 +8,8 @@ from jrnl.plugins.text_exporter import TextExporter
from jrnl.plugins.util import get_tags_count from jrnl.plugins.util import get_tags_count
if TYPE_CHECKING: if TYPE_CHECKING:
from jrnl.Entry import Entry from jrnl.journals import Entry
from jrnl.Journal import Journal from jrnl.journals import Journal
class JSONExporter(TextExporter): class JSONExporter(TextExporter):

View file

@ -12,8 +12,8 @@ from jrnl.output import print_msg
from jrnl.plugins.text_exporter import TextExporter from jrnl.plugins.text_exporter import TextExporter
if TYPE_CHECKING: if TYPE_CHECKING:
from jrnl.Entry import Entry from jrnl.journals import Entry
from jrnl.Journal import Journal from jrnl.journals import Journal
class MarkdownExporter(TextExporter): class MarkdownExporter(TextExporter):

View file

@ -7,8 +7,8 @@ from jrnl.plugins.text_exporter import TextExporter
from jrnl.plugins.util import get_tags_count from jrnl.plugins.util import get_tags_count
if TYPE_CHECKING: if TYPE_CHECKING:
from jrnl.Entry import Entry from jrnl.journals import Entry
from jrnl.Journal import Journal from jrnl.journals import Journal
class TagExporter(TextExporter): class TagExporter(TextExporter):

View file

@ -13,8 +13,8 @@ from jrnl.messages import MsgText
from jrnl.output import print_msg from jrnl.output import print_msg
if TYPE_CHECKING: if TYPE_CHECKING:
from jrnl.Entry import Entry from jrnl.journals import Entry
from jrnl.Journal import Journal from jrnl.journals import Journal
class TextExporter: class TextExporter:

View file

@ -4,7 +4,7 @@
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
if TYPE_CHECKING: if TYPE_CHECKING:
from jrnl.Journal import Journal from jrnl.journals import Journal
def get_tags_count(journal: "Journal") -> set[tuple[int, str]]: def get_tags_count(journal: "Journal") -> set[tuple[int, str]]:

View file

@ -8,8 +8,8 @@ from jrnl.plugins.json_exporter import JSONExporter
from jrnl.plugins.util import get_tags_count from jrnl.plugins.util import get_tags_count
if TYPE_CHECKING: if TYPE_CHECKING:
from jrnl.Entry import Entry from jrnl.journals import Entry
from jrnl.Journal import Journal from jrnl.journals import Journal
class XMLExporter(JSONExporter): class XMLExporter(JSONExporter):

View file

@ -13,8 +13,8 @@ from jrnl.output import print_msg
from jrnl.plugins.text_exporter import TextExporter from jrnl.plugins.text_exporter import TextExporter
if TYPE_CHECKING: if TYPE_CHECKING:
from jrnl.Entry import Entry from jrnl.journals import Entry
from jrnl.Journal import Journal from jrnl.journals import Journal
class YAMLExporter(TextExporter): class YAMLExporter(TextExporter):
@ -34,7 +34,7 @@ class YAMLExporter(TextExporter):
body = body_wrapper + entry.body body = body_wrapper + entry.body
tagsymbols = entry.journal.config["tagsymbols"] tagsymbols = entry.journal.config["tagsymbols"]
# see also Entry.Entry.rag_regex # see also Entry.rag_regex
multi_tag_regex = re.compile(rf"(?u)^\s*([{tagsymbols}][-+*#/\w]+\s*)+$") multi_tag_regex = re.compile(rf"(?u)^\s*([{tagsymbols}][-+*#/\w]+\s*)+$")
"""Increase heading levels in body text""" """Increase heading levels in body text"""

View file

@ -4,12 +4,13 @@
import logging import logging
import os import os
from jrnl import Journal
from jrnl import __version__ from jrnl import __version__
from jrnl.config import is_config_json from jrnl.config import is_config_json
from jrnl.config import load_config from jrnl.config import load_config
from jrnl.config import scope_config from jrnl.config import scope_config
from jrnl.exception import JrnlException from jrnl.exception import JrnlException
from jrnl.journals import Journal
from jrnl.journals import open_journal
from jrnl.messages import Message from jrnl.messages import Message
from jrnl.messages import MsgStyle from jrnl.messages import MsgStyle
from jrnl.messages import MsgText from jrnl.messages import MsgText
@ -129,14 +130,14 @@ def upgrade_jrnl(config_path: str) -> None:
) )
backup(path, binary=True) backup(path, binary=True)
old_journal = Journal.open_journal( old_journal = open_journal(
journal_name, scope_config(config, journal_name), legacy=True journal_name, scope_config(config, journal_name), legacy=True
) )
logging.debug(f"Clearing encryption method for '{journal_name}' journal") logging.debug(f"Clearing encryption method for '{journal_name}' journal")
# Update the encryption method # Update the encryption method
new_journal = Journal.Journal.from_journal(old_journal) new_journal = Journal.from_journal(old_journal)
new_journal.config["encrypt"] = "jrnlv2" new_journal.config["encrypt"] = "jrnlv2"
new_journal._get_encryption_method() new_journal._get_encryption_method()
# Copy over password (jrnlv1 only supported password-based encryption) # Copy over password (jrnlv1 only supported password-based encryption)
@ -156,10 +157,10 @@ def upgrade_jrnl(config_path: str) -> None:
) )
backup(path) backup(path)
old_journal = Journal.open_journal( old_journal = open_journal(
journal_name, scope_config(config, journal_name), legacy=True journal_name, scope_config(config, journal_name), legacy=True
) )
all_journals.append(Journal.Journal.from_journal(old_journal)) all_journals.append(Journal.from_journal(old_journal))
# loop through lists to validate # loop through lists to validate
failed_journals = [j for j in all_journals if not j.validate_parsing()] failed_journals = [j for j in all_journals if not j.validate_parsing()]

View file

@ -157,6 +157,8 @@ pycodestyle = [
"flake8-*" = ["+*"] "flake8-*" = ["+*"]
flake8-black = ["-BLK901"] flake8-black = ["-BLK901"]
[tool.flakeheaven.exceptions."jrnl/journals/__init__.py"]
pyflakes = ["-F401"]
[build-system] [build-system]
requires = ["poetry-core>=1.0.0"] requires = ["poetry-core>=1.0.0"]

View file

@ -19,10 +19,10 @@ def random_string():
@pytest.mark.parametrize("export_format", ["pretty", "short"]) @pytest.mark.parametrize("export_format", ["pretty", "short"])
@mock.patch("builtins.print") @mock.patch("builtins.print")
@mock.patch("jrnl.Journal.Journal.pprint") @mock.patch("jrnl.controller.Journal.pprint")
def test_display_search_results_pretty_short(mock_pprint, mock_print, export_format): def test_display_search_results_pretty_short(mock_pprint, mock_print, export_format):
mock_args = parse_args(["--format", export_format]) mock_args = parse_args(["--format", export_format])
test_journal = mock.Mock(wraps=jrnl.Journal.Journal) test_journal = mock.Mock(wraps=jrnl.journals.Journal)
_display_search_results(mock_args, test_journal) _display_search_results(mock_args, test_journal)
@ -40,7 +40,7 @@ def test_display_search_results_builtin_plugins(
test_filename = random_string test_filename = random_string
mock_args = parse_args(["--format", export_format, "--file", test_filename]) mock_args = parse_args(["--format", export_format, "--file", test_filename])
test_journal = mock.Mock(wraps=jrnl.Journal.Journal) test_journal = mock.Mock(wraps=jrnl.journals.Journal)
mock_export = mock.Mock() mock_export = mock.Mock()
mock_exporter.return_value.export = mock_export mock_exporter.return_value.export = mock_export