summaryrefslogtreecommitdiffstats
path: root/jrnl
diff options
context:
space:
mode:
authorJonathan Wren <jonathan@nowandwren.com>2023-01-14 14:42:29 -0800
committerGitHub <noreply@github.com>2023-01-14 14:42:29 -0800
commitfff05eb6467dd15ee50964945933aed3db193f3c (patch)
treec8d5b618fe2e3a8076cff216da7ad6e962dde800 /jrnl
parent7be67accc18f1f7cab1db1ca9fa73a7269e08edf (diff)
Refactor flow for easier access to some files (avoid things like `jrnl.Journal.Journal` and `jrnl.jrnl` co-existing) (#1662)
* run format * rename cli.py to main.py * rename jrnl.py to controller.py * move journal class files into journals dir * rename start -> run in controller.py
Diffstat (limited to 'jrnl')
-rw-r--r--jrnl/__main__.py4
-rw-r--r--jrnl/color.py2
-rw-r--r--jrnl/commands.py6
-rw-r--r--jrnl/controller.py (renamed from jrnl/jrnl.py)6
-rw-r--r--jrnl/install.py4
-rw-r--r--jrnl/journals/DayOneJournal.py (renamed from jrnl/DayOneJournal.py)19
-rw-r--r--jrnl/journals/Entry.py (renamed from jrnl/Entry.py)4
-rw-r--r--jrnl/journals/FolderJournal.py (renamed from jrnl/FolderJournal.py)7
-rw-r--r--jrnl/journals/Journal.py (renamed from jrnl/Journal.py)23
-rw-r--r--jrnl/journals/__init__.py5
-rw-r--r--jrnl/main.py (renamed from jrnl/cli.py)6
-rw-r--r--jrnl/plugins/dates_exporter.py4
-rw-r--r--jrnl/plugins/fancy_exporter.py4
-rw-r--r--jrnl/plugins/jrnl_importer.py2
-rw-r--r--jrnl/plugins/json_exporter.py4
-rw-r--r--jrnl/plugins/markdown_exporter.py4
-rw-r--r--jrnl/plugins/tag_exporter.py4
-rw-r--r--jrnl/plugins/text_exporter.py4
-rw-r--r--jrnl/plugins/util.py2
-rw-r--r--jrnl/plugins/xml_exporter.py4
-rw-r--r--jrnl/plugins/yaml_exporter.py6
-rw-r--r--jrnl/upgrade.py11
22 files changed, 74 insertions, 61 deletions
diff --git a/jrnl/__main__.py b/jrnl/__main__.py
index 69a9fd5e..085da2a0 100644
--- a/jrnl/__main__.py
+++ b/jrnl/__main__.py
@@ -3,7 +3,7 @@
import sys
-from jrnl.cli import cli
+from jrnl.main import run
if __name__ == "__main__":
- sys.exit(cli())
+ sys.exit(run())
diff --git a/jrnl/color.py b/jrnl/color.py
index 2aaadad5..37b7a631 100644
--- a/jrnl/color.py
+++ b/jrnl/color.py
@@ -11,7 +11,7 @@ import colorama
from jrnl.os_compat import on_windows
if TYPE_CHECKING:
- from jrnl.Entry import Entry
+ from jrnl.journals import Entry
if on_windows():
colorama.init()
diff --git a/jrnl/commands.py b/jrnl/commands.py
index 9b6783ed..83618ce2 100644
--- a/jrnl/commands.py
+++ b/jrnl/commands.py
@@ -69,7 +69,7 @@ def postconfig_list(args: argparse.Namespace, config: dict, **_) -> int:
@cmd_requires_valid_journal_name
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
# Requires opening the journal
@@ -90,7 +90,7 @@ def postconfig_encrypt(
"""
from jrnl.config import update_config
from jrnl.install import save_config
- from jrnl.Journal import open_journal
+ from jrnl.journals import open_journal
# Open the journal
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."""
from jrnl.config import update_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)
diff --git a/jrnl/jrnl.py b/jrnl/controller.py
index cda124cd..7d7c87ce 100644
--- a/jrnl/jrnl.py
+++ b/jrnl/controller.py
@@ -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_stdin
from jrnl.exception import JrnlException
-from jrnl.Journal import Journal
-from jrnl.Journal import open_journal
+from jrnl.journals import Journal
+from jrnl.journals import open_journal
from jrnl.messages import Message
from jrnl.messages import MsgStyle
from jrnl.messages import MsgText
@@ -28,7 +28,7 @@ from jrnl.path import expand_path
if TYPE_CHECKING:
from argparse import Namespace
- from jrnl.Entry import Entry
+ from jrnl.journals import Entry
def run(args: "Namespace"):
diff --git a/jrnl/install.py b/jrnl/install.py
index 9fab98cc..239f07be 100644
--- a/jrnl/install.py
+++ b/jrnl/install.py
@@ -41,8 +41,8 @@ def upgrade_config(config_data: dict, alt_config_path: str | None = None) -> Non
if missing_keys:
for key in missing_keys:
config_data[key] = default_config[key]
-
- different_version = (config_data["version"] != __version__)
+
+ different_version = config_data["version"] != __version__
if different_version:
config_data["version"] = __version__
diff --git a/jrnl/DayOneJournal.py b/jrnl/journals/DayOneJournal.py
index 627b9c65..ace6a5f4 100644
--- a/jrnl/DayOneJournal.py
+++ b/jrnl/journals/DayOneJournal.py
@@ -17,13 +17,14 @@ from xml.parsers.expat import ExpatError
import tzlocal
-from jrnl import Entry
-from jrnl import Journal
from jrnl import __title__
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"""
# InvalidFileException was added to plistlib in Python3.4
@@ -63,7 +64,7 @@ class DayOne(Journal.Journal):
if timezone.key != "UTC":
date = date.replace(fold=1) + timezone.utcoffset(date)
- entry = Entry.Entry(
+ entry = Entry(
self,
date,
text=dict_entry["Entry Text"],
@@ -74,7 +75,8 @@ class DayOne(Journal.Journal):
self.config["tagsymbols"][0] + tag.lower()
for tag in dict_entry.get("Tags", [])
]
- if entry._tags: entry._tags.sort()
+ if entry._tags:
+ entry._tags.sort()
"""Extended DayOne attributes"""
# just ignore it if the keys don't exist
@@ -196,7 +198,8 @@ class DayOne(Journal.Journal):
for entry in entries_from_editor:
entry = self._get_and_remove_uuid_from_entry(entry)
- if entry._tags: entry._tags.sort()
+ if entry._tags:
+ entry._tags.sort()
# Remove deleted entries
edited_uuids = [e.uuid for e in entries_from_editor]
@@ -207,7 +210,9 @@ class DayOne(Journal.Journal):
for old_entry in self.entries:
if entry.uuid == old_entry.uuid:
if old_entry._tags:
- tags_not_in_body = [tag for tag in old_entry._tags if(tag not in entry._body)]
+ tags_not_in_body = [
+ tag for tag in old_entry._tags if (tag not in entry._body)
+ ]
if tags_not_in_body:
entry._tags.extend(tags_not_in_body.sort())
self._update_old_entry(old_entry, entry)
diff --git a/jrnl/Entry.py b/jrnl/journals/Entry.py
index 810cf86f..93b825f8 100644
--- a/jrnl/Entry.py
+++ b/jrnl/journals/Entry.py
@@ -9,8 +9,8 @@ from typing import TYPE_CHECKING
import ansiwrap
-from .color import colorize
-from .color import highlight_tags_with_background_color
+from jrnl.color import colorize
+from jrnl.color import highlight_tags_with_background_color
if TYPE_CHECKING:
from .Journal import Journal
diff --git a/jrnl/FolderJournal.py b/jrnl/journals/FolderJournal.py
index 055d9408..316a10f2 100644
--- a/jrnl/FolderJournal.py
+++ b/jrnl/journals/FolderJournal.py
@@ -6,11 +6,12 @@ import fnmatch
import os
from typing import TYPE_CHECKING
-from jrnl import Journal
from jrnl import time
+from .Journal import Journal
+
if TYPE_CHECKING:
- from jrnl.Entry import Entry
+ from jrnl.journals import Entry
def get_files(journal_config: str) -> list[str]:
@@ -22,7 +23,7 @@ def get_files(journal_config: str) -> list[str]:
return filenames
-class Folder(Journal.Journal):
+class Folder(Journal):
"""A Journal handling multiple files in a folder"""
def __init__(self, name: str = "default", **kwargs):
diff --git a/jrnl/Journal.py b/jrnl/journals/Journal.py
index 1b444fc5..5a8b016e 100644
--- a/jrnl/Journal.py
+++ b/jrnl/journals/Journal.py
@@ -6,7 +6,6 @@ import logging
import os
import re
-from jrnl import Entry
from jrnl import time
from jrnl.config import validate_journal_name
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.prompt import yesno
+from .Entry import Entry
+
class Tag:
def __init__(self, name, count=0):
@@ -184,11 +185,11 @@ class Journal:
if entries:
entries[-1].text = journal_txt[last_entry_pos : match.start()]
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 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
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.
date = time.parse("now")
- entry = Entry.Entry(self, date, raw, starred=starred)
+ entry = Entry(self, date, raw, starred=starred)
entry.modified = True
self.entries.append(entry)
if sort:
@@ -410,7 +411,7 @@ class LegacyJournal(Journal):
else:
starred = False
- current_entry = Entry.Entry(
+ current_entry = Entry(
self, date=new_date, text=line[date_length + 1 :], starred=starred
)
except ValueError:
@@ -455,21 +456,21 @@ def open_journal(journal_name: str, config: dict, legacy: bool = False) -> Journ
if config["journal"].strip("/").endswith(".dayone") or "entries" in os.listdir(
config["journal"]
):
- from jrnl import DayOneJournal
+ from jrnl.journals import DayOne
- return DayOneJournal.DayOne(**config).open()
+ return DayOne(**config).open()
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 legacy:
return LegacyJournal(journal_name, **config).open()
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()
if legacy:
diff --git a/jrnl/journals/__init__.py b/jrnl/journals/__init__.py
new file mode 100644
index 00000000..eb3dc44f
--- /dev/null
+++ b/jrnl/journals/__init__.py
@@ -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
diff --git a/jrnl/cli.py b/jrnl/main.py
index a6b159db..770690c4 100644
--- a/jrnl/cli.py
+++ b/jrnl/main.py
@@ -7,9 +7,9 @@ import traceback
from rich.logging import RichHandler
+from jrnl import controller
from jrnl.args import parse_args
from jrnl.exception import JrnlException
-from jrnl.jrnl import run
from jrnl.messages import Message
from jrnl.messages import MsgStyle
from jrnl.messages import MsgText
@@ -32,7 +32,7 @@ def configure_logger(debug: bool = False) -> None:
logging.debug("Logging start")
-def cli(manual_args: list[str] | None = None) -> int:
+def run(manual_args: list[str] | None = None) -> int:
try:
if manual_args is None:
manual_args = sys.argv[1:]
@@ -41,7 +41,7 @@ def cli(manual_args: list[str] | None = None) -> int:
configure_logger(args.debug)
logging.debug("Parsed args:\n%s", args)
- status_code = run(args)
+ status_code = controller.run(args)
except JrnlException as e:
status_code = 1
diff --git a/jrnl/plugins/dates_exporter.py b/jrnl/plugins/dates_exporter.py
index 1e2ae0dc..38d101dd 100644
--- a/jrnl/plugins/dates_exporter.py
+++ b/jrnl/plugins/dates_exporter.py
@@ -7,8 +7,8 @@ from typing import TYPE_CHECKING
from jrnl.plugins.text_exporter import TextExporter
if TYPE_CHECKING:
- from jrnl.Entry import Entry
- from jrnl.Journal import Journal
+ from jrnl.journals import Entry
+ from jrnl.journals import Journal
class DatesExporter(TextExporter):
diff --git a/jrnl/plugins/fancy_exporter.py b/jrnl/plugins/fancy_exporter.py
index 4b800754..447f1347 100644
--- a/jrnl/plugins/fancy_exporter.py
+++ b/jrnl/plugins/fancy_exporter.py
@@ -13,8 +13,8 @@ from jrnl.messages import MsgText
from jrnl.plugins.text_exporter import TextExporter
if TYPE_CHECKING:
- from jrnl.Entry import Entry
- from jrnl.Journal import Journal
+ from jrnl.journals import Entry
+ from jrnl.journals import Journal
class FancyExporter(TextExporter):
diff --git a/jrnl/plugins/jrnl_importer.py b/jrnl/plugins/jrnl_importer.py
index b5bc0490..8c326182 100644
--- a/jrnl/plugins/jrnl_importer.py
+++ b/jrnl/plugins/jrnl_importer.py
@@ -11,7 +11,7 @@ from jrnl.messages import MsgText
from jrnl.output import print_msg
if TYPE_CHECKING:
- from jrnl.Journal import Journal
+ from jrnl.journals import Journal
class JRNLImporter:
diff --git a/jrnl/plugins/json_exporter.py b/jrnl/plugins/json_exporter.py
index 3a7c56ac..66d2bcc3 100644
--- a/jrnl/plugins/json_exporter.py
+++ b/jrnl/plugins/json_exporter.py
@@ -8,8 +8,8 @@ from jrnl.plugins.text_exporter import TextExporter
from jrnl.plugins.util import get_tags_count
if TYPE_CHECKING:
- from jrnl.Entry import Entry
- from jrnl.Journal import Journal
+ from jrnl.journals import Entry
+ from jrnl.journals import Journal
class JSONExporter(TextExporter):
diff --git a/jrnl/plugins/markdown_exporter.py b/jrnl/plugins/markdown_exporter.py
index 9335847f..1512903d 100644
--- a/jrnl/plugins/markdown_exporter.py
+++ b/jrnl/plugins/markdown_exporter.py
@@ -12,8 +12,8 @@ from jrnl.output import print_msg
from jrnl.plugins.text_exporter import TextExporter
if TYPE_CHECKING:
- from jrnl.Entry import Entry
- from jrnl.Journal import Journal
+ from jrnl.journals import Entry
+ from jrnl.journals import Journal
class MarkdownExporter(TextExporter):
diff --git a/jrnl/plugins/tag_exporter.py b/jrnl/plugins/tag_exporter.py
index 5702978d..b8b5eb79 100644
--- a/jrnl/plugins/tag_exporter.py
+++ b/jrnl/plugins/tag_exporter.py
@@ -7,8 +7,8 @@ from jrnl.plugins.text_exporter import TextExporter
from jrnl.plugins.util import get_tags_count
if TYPE_CHECKING:
- from jrnl.Entry import Entry
- from jrnl.Journal import Journal
+ from jrnl.journals import Entry
+ from jrnl.journals import Journal
class TagExporter(TextExporter):
diff --git a/jrnl/plugins/text_exporter.py b/jrnl/plugins/text_exporter.py
index a839ee88..0a514da1 100644
--- a/jrnl/plugins/text_exporter.py
+++ b/jrnl/plugins/text_exporter.py
@@ -13,8 +13,8 @@ from jrnl.messages import MsgText
from jrnl.output import print_msg
if TYPE_CHECKING:
- from jrnl.Entry import Entry
- from jrnl.Journal import Journal
+ from jrnl.journals import Entry
+ from jrnl.journals import Journal
class TextExporter:
diff --git a/jrnl/plugins/util.py b/jrnl/plugins/util.py
index 86eb5b17..ceaa0b04 100644
--- a/jrnl/plugins/util.py
+++ b/jrnl/plugins/util.py
@@ -4,7 +4,7 @@
from typing import 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]]:
diff --git a/jrnl/plugins/xml_exporter.py b/jrnl/plugins/xml_exporter.py
index 3bda38e6..a0349af9 100644
--- a/jrnl/plugins/xml_exporter.py
+++ b/jrnl/plugins/xml_exporter.py
@@ -8,8 +8,8 @@ from jrnl.plugins.json_exporter import JSONExporter
from jrnl.plugins.util import get_tags_count
if TYPE_CHECKING:
- from jrnl.Entry import Entry
- from jrnl.Journal import Journal
+ from jrnl.journals import Entry
+ from jrnl.journals import Journal
class XMLExporter(JSONExporter):
diff --git a/jrnl/plugins/yaml_exporter.py b/jrnl/plugins/yaml_exporter.py
index 2927243e..d960ef8a 100644
--- a/jrnl/plugins/yaml_exporter.py
+++ b/jrnl/plugins/yaml_exporter.py
@@ -13,8 +13,8 @@ from jrnl.output import print_msg
from jrnl.plugins.text_exporter import TextExporter
if TYPE_CHECKING:
- from jrnl.Entry import Entry
- from jrnl.Journal import Journal
+ from jrnl.journals import Entry
+ from jrnl.journals import Journal
class YAMLExporter(TextExporter):
@@ -34,7 +34,7 @@ class YAMLExporter(TextExporter):
body = body_wrapper + entry.body
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*)+$")
"""Increase heading levels in body text"""
diff --git a/jrnl/upgrade.py b/jrnl/upgrade.py
index d390844c..1b6e500d 100644
--- a/jrnl/upgrade.py
+++ b/jrnl/upgrade.py
@@ -4,12 +4,13 @@
import logging
import os
-from jrnl import Journal
from jrnl import __version__
from jrnl.config import is_config_json
from jrnl.config import load_config
from jrnl.config import scope_config
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 MsgStyle
from jrnl.messages import MsgText
@@ -129,14 +130,14 @@ def upgrade_jrnl(config_path: str) -> None:
)
backup(path, binary=True)
- old_journal = Journal.open_journal(
+ old_journal = open_journal(
journal_name, scope_config(config, journal_name), legacy=True
)
logging.debug(f"Clearing encryption method for '{journal_name}' journal")
# 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._get_encryption_method()
# Copy over password (jrnlv1 only supported password-based encryption)
@@ -156,10 +157,10 @@ def upgrade_jrnl(config_path: str) -> None:
)
backup(path)
- old_journal = Journal.open_journal(
+ old_journal = open_journal(
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
failed_journals = [j for j in all_journals if not j.validate_parsing()]