From fe65183fb701be074816888e462b0166e6b3c9e0 Mon Sep 17 00:00:00 2001 From: Bendt Date: Thu, 18 Dec 2025 14:00:54 -0500 Subject: [PATCH] move and rename module --- .coverage | Bin 69632 -> 69632 bytes drive_view_tui.py | 2 +- src/cli/__init__.py | 2 ++ src/cli/email.py | 2 +- src/mail/__init__.py | 1 + src/{maildir_gtd => mail}/actions/__init__.py | 0 src/{maildir_gtd => mail}/actions/archive.py | 0 src/{maildir_gtd => mail}/actions/delete.py | 0 src/{maildir_gtd => mail}/actions/newest.py | 0 src/{maildir_gtd => mail}/actions/next.py | 0 src/{maildir_gtd => mail}/actions/oldest.py | 0 src/{maildir_gtd => mail}/actions/open.py | 0 src/{maildir_gtd => mail}/actions/previous.py | 0 .../actions/show_message.py | 0 src/{maildir_gtd => mail}/actions/task.py | 0 src/{maildir_gtd => mail}/app.py | 2 +- src/{maildir_gtd => mail}/config.py | 28 +++++++++--------- src/{maildir_gtd => mail}/email_viewer.tcss | 0 src/{maildir_gtd => mail}/message_store.py | 0 .../screens/ConfirmDialog.py | 0 .../screens/CreateTask.py | 0 .../screens/DocumentViewer.py | 0 .../screens/LinkPanel.py | 2 +- .../screens/OpenMessage.py | 0 src/{maildir_gtd => mail}/screens/__init__.py | 0 src/{maildir_gtd => mail}/utils.py | 0 .../widgets/ContentContainer.py | 4 +-- .../widgets/EnvelopeHeader.py | 0 .../widgets/EnvelopeListItem.py | 2 +- src/{maildir_gtd => mail}/widgets/__init__.py | 0 src/maildir_gtd/__init__.py | 1 - src/services/himalaya/client.py | 2 +- src/services/task_client.py | 2 +- 33 files changed, 26 insertions(+), 24 deletions(-) create mode 100644 src/mail/__init__.py rename src/{maildir_gtd => mail}/actions/__init__.py (100%) rename src/{maildir_gtd => mail}/actions/archive.py (100%) rename src/{maildir_gtd => mail}/actions/delete.py (100%) rename src/{maildir_gtd => mail}/actions/newest.py (100%) rename src/{maildir_gtd => mail}/actions/next.py (100%) rename src/{maildir_gtd => mail}/actions/oldest.py (100%) rename src/{maildir_gtd => mail}/actions/open.py (100%) rename src/{maildir_gtd => mail}/actions/previous.py (100%) rename src/{maildir_gtd => mail}/actions/show_message.py (100%) rename src/{maildir_gtd => mail}/actions/task.py (100%) rename src/{maildir_gtd => mail}/app.py (99%) rename src/{maildir_gtd => mail}/config.py (87%) rename src/{maildir_gtd => mail}/email_viewer.tcss (100%) rename src/{maildir_gtd => mail}/message_store.py (100%) rename src/{maildir_gtd => mail}/screens/ConfirmDialog.py (100%) rename src/{maildir_gtd => mail}/screens/CreateTask.py (100%) rename src/{maildir_gtd => mail}/screens/DocumentViewer.py (100%) rename src/{maildir_gtd => mail}/screens/LinkPanel.py (99%) rename src/{maildir_gtd => mail}/screens/OpenMessage.py (100%) rename src/{maildir_gtd => mail}/screens/__init__.py (100%) rename src/{maildir_gtd => mail}/utils.py (100%) rename src/{maildir_gtd => mail}/widgets/ContentContainer.py (98%) rename src/{maildir_gtd => mail}/widgets/EnvelopeHeader.py (100%) rename src/{maildir_gtd => mail}/widgets/EnvelopeListItem.py (99%) rename src/{maildir_gtd => mail}/widgets/__init__.py (100%) delete mode 100644 src/maildir_gtd/__init__.py diff --git a/.coverage b/.coverage index 545958085d4d23dcc3140dbcd519fea8dbbb2581..eca4f3d66e6baf21b788484c7b7bcb03a37e964c 100644 GIT binary patch delta 2867 zcmeH}TTC2P7{}*wc4lX0XGSi&cDXE6ONDS5P2{pbWS3omwG|6eXoawBV1%W(yWL%& zO{=Ae3hjf4CtebxZH!v17cQ$QtIPtXlCpgyEVDHp|(^W*{2M*Kz`pO~m&>{dYRXJLxH zFkSIV z^{4}C7*Ai54@J8I&pRinnml}K(u{;Xp&i)3hPZ)*~-mu$^1kgZb8cpoM0}=D4 z1+dRb5d=ZXGw4dl@{F*N8lygvo2h#!JqYj@83*w@SRhX53dn<`ouT*$znd>-bM>R_ zG~3T!)z6ckaB0lv%ox`tUNLMCz80S0E_1JllLnvICh86E>K(dwbp2o>?V`V>$EAm5 zPC6-7${)}={K|=^tD$_M2ve7)eNGKYD;)nJs;$$s1d$aD00G&wtteX){{m#W6QDYy zh(!7-9?L4|K`crdj-_^hO6zGaip({=MJ4;vP%MBsKSh1P^DVE%?~R&`6&&;8uZME0 z5&Ak}8SSmvuyHYVKh>HEPkwegB-=9J`xm2Q2_#n2maC;4YC|cVvGnD(4p0XWYiJb- zO0Q!rEAGMgcc^7*t}NTLK|B-&w;ut~QlNQ_NtBta^l+?h8f3;YdM6$dRv1gKqW9qE zh`D_Nz!3)v(5IHPHK1kBcKxA{{OpsYZ65+*J#m7N570B`zwn0$ ze6}+AOaJc#!nvl?K-W*a0rz*7z+=s+=z+Wql0V)7uQjJ&$ME1$W>{0!F%ryF) zZ)L7Y-$~CiebQD*5KoCgG0$+u@R*@O_(eD(bO@>Z$NZywDYwi`a$Q`u{+#}WNXktX zCi1`n!)d$Ls0@31dev}9S@kb5Ya1LD{HZ0tTZ!X@d`cdZo1kRNxzShL;S-S`1_Pn^}XH7 TF=nqseNVJ?P1Q~~?Hv0P>~4^x delta 3507 zcmeHKTTC2P7@o`7*_oZ$8EOl5ccHN5Ua*TvDHJd+m$F>TLP4Zd){z}x)9ozX-9mk+ zltgX&U;s}-(@RpkVcQs`Zj4nETcR=2M2#WFCK{z0@m3=|Sz|Pwp`6JsEIybQavyR}awY6Mdx~vfS>qeVUZa(nVFsCW z!>5K3Lk0K+yaE)kh5ng-fqsYNycDl5 z=;;l69ddWr7f?fv{-8483mgn>?SJ(C?I#|SNXK0maxm=kYw;b0@Icj8I5*2P&TS}> z0bZ}qhKHNjNLj^simJ(lc9+A3XW_(N#jk`FG`%_pep#8v@0Wf4Wen`td5)^i)WY_t zuwGMG4(&q|>oRcF_La#!9-rz9dpro$l8#Wh8aE?Of2lf|ac@T9Of8&^ClC6(y-GOb z*r^UE{y@J{qsU$*h*C7!5jH(0h1+GJ>eFDLAulVs!cccmQBcoR#8!Yyr?P9Ec;$y*U>iF_{3 zhFMky)Ucw4wLjUXF7d3h;GBA;qqUQaD+z_yYb9;MN%kwDkld?yLg7GA+e2p}f*3SN z5{7gK)E-|i8Y|mC6GPfi0v?k4`%%1NJ^aJzz$-;8_48n;h$0ArlrEqrAxRhbEY{~GgN|`^dvPychQn~SmMNKu|#^8dO}-H`;DEf0QCU1m2A#W z)2m(Wgd!&xrZvzy48mU64lmA@7z)b)>W18zA1Q8mnSyEU1y&4PCI4JF-IX7!{46l`43O+mFbh|N1+hx@o817ZK6<{p-3ryc z`I*s`Vbw)TJ`FFTuRPaogCo0RdFDO17f#LR$2Cxl){|GU#fwIC z3molu5tcU>=;z-`g(od-DQZR{POl3*@jiM;YmL(UaKzF%23RCBabXWBH6zdyYgys%7ywz|wDa~_02a4= z0KiS63_kN+aa=0|{9Yv#MkhjP++kH2yfs_`r`iir^(HUdQVw?a`3AH@Xh#zmw#Vr8 zK>0?p7&+1b&$hbaCf9GFB^$=I9J&cqls$*ZAlz`V<6d~S&8GP?Iobu-pQ>_5V^Vf| z49s%GWDKGIn1QcZ=u)C;sVTWPq<_uK{5bJNOq>1@Gk^9IsM6p|EMQ7@r7s5L)g#WV_!ry)b$%4>I zNK=v`*~E{<<6^0K-aKwD7k&`V2(8FC+l1EzGg(Mc)n(e(Ldstp$u*^MKST7(r=}$C dxPJT8?tm9vj^wqkpIyZ#+#(tKA%iZUKLI|SxGVqw diff --git a/drive_view_tui.py b/drive_view_tui.py index a5640fe..c5c3819 100644 --- a/drive_view_tui.py +++ b/drive_view_tui.py @@ -37,7 +37,7 @@ from textual.widgets.option_list import Option from src.utils.file_icons import get_file_icon # Import our DocumentViewerScreen -sys.path.append(os.path.join(os.path.dirname(__file__), "src", "maildir_gtd")) +sys.path.append(os.path.join(os.path.dirname(__file__), "src", "mail")) from screens.DocumentViewer import DocumentViewerScreen diff --git a/src/cli/__init__.py b/src/cli/__init__.py index ccb31c6..a456b5d 100644 --- a/src/cli/__init__.py +++ b/src/cli/__init__.py @@ -25,6 +25,8 @@ cli.add_command(ticktick) cli.add_command(godspeed) cli.add_command(gitlab_monitor) +# Add 'mail' as an alias for email +cli.add_command(email, name="mail") # Add 'tt' as a short alias for ticktick cli.add_command(ticktick, name="tt") # Add 'gs' as a short alias for godspeed diff --git a/src/cli/email.py b/src/cli/email.py index 251c38b..1141c99 100644 --- a/src/cli/email.py +++ b/src/cli/email.py @@ -1,5 +1,5 @@ import click -from src.maildir_gtd.app import launch_email_viewer +from src.mail.app import launch_email_viewer @click.command() diff --git a/src/mail/__init__.py b/src/mail/__init__.py new file mode 100644 index 0000000..2ccd38b --- /dev/null +++ b/src/mail/__init__.py @@ -0,0 +1 @@ +# Initialize the mail package diff --git a/src/maildir_gtd/actions/__init__.py b/src/mail/actions/__init__.py similarity index 100% rename from src/maildir_gtd/actions/__init__.py rename to src/mail/actions/__init__.py diff --git a/src/maildir_gtd/actions/archive.py b/src/mail/actions/archive.py similarity index 100% rename from src/maildir_gtd/actions/archive.py rename to src/mail/actions/archive.py diff --git a/src/maildir_gtd/actions/delete.py b/src/mail/actions/delete.py similarity index 100% rename from src/maildir_gtd/actions/delete.py rename to src/mail/actions/delete.py diff --git a/src/maildir_gtd/actions/newest.py b/src/mail/actions/newest.py similarity index 100% rename from src/maildir_gtd/actions/newest.py rename to src/mail/actions/newest.py diff --git a/src/maildir_gtd/actions/next.py b/src/mail/actions/next.py similarity index 100% rename from src/maildir_gtd/actions/next.py rename to src/mail/actions/next.py diff --git a/src/maildir_gtd/actions/oldest.py b/src/mail/actions/oldest.py similarity index 100% rename from src/maildir_gtd/actions/oldest.py rename to src/mail/actions/oldest.py diff --git a/src/maildir_gtd/actions/open.py b/src/mail/actions/open.py similarity index 100% rename from src/maildir_gtd/actions/open.py rename to src/mail/actions/open.py diff --git a/src/maildir_gtd/actions/previous.py b/src/mail/actions/previous.py similarity index 100% rename from src/maildir_gtd/actions/previous.py rename to src/mail/actions/previous.py diff --git a/src/maildir_gtd/actions/show_message.py b/src/mail/actions/show_message.py similarity index 100% rename from src/maildir_gtd/actions/show_message.py rename to src/mail/actions/show_message.py diff --git a/src/maildir_gtd/actions/task.py b/src/mail/actions/task.py similarity index 100% rename from src/maildir_gtd/actions/task.py rename to src/mail/actions/task.py diff --git a/src/maildir_gtd/app.py b/src/mail/app.py similarity index 99% rename from src/maildir_gtd/app.py rename to src/mail/app.py index a606581..6a71fe3 100644 --- a/src/maildir_gtd/app.py +++ b/src/mail/app.py @@ -1,4 +1,4 @@ -from .config import get_config, MaildirGTDConfig +from .config import get_config, MailAppConfig from .message_store import MessageStore from .widgets.ContentContainer import ContentContainer from .widgets.EnvelopeListItem import EnvelopeListItem, GroupHeader diff --git a/src/maildir_gtd/config.py b/src/mail/config.py similarity index 87% rename from src/maildir_gtd/config.py rename to src/mail/config.py index c7ded44..d5bcd82 100644 --- a/src/maildir_gtd/config.py +++ b/src/mail/config.py @@ -1,4 +1,4 @@ -"""Configuration system for MaildirGTD email reader using Pydantic.""" +"""Configuration system for Mail email reader using Pydantic.""" import logging import os @@ -90,7 +90,7 @@ class LinkPanelConfig(BaseModel): close_on_open: bool = False -class MailConfig(BaseModel): +class MailOperationsConfig(BaseModel): """Configuration for mail operations.""" # Folder to move messages to when archiving @@ -103,8 +103,8 @@ class ThemeConfig(BaseModel): theme_name: str = "monokai" -class MaildirGTDConfig(BaseModel): - """Main configuration for MaildirGTD email reader.""" +class MailAppConfig(BaseModel): + """Main configuration for Mail email reader.""" task: TaskBackendConfig = Field(default_factory=TaskBackendConfig) envelope_display: EnvelopeDisplayConfig = Field( @@ -112,7 +112,7 @@ class MaildirGTDConfig(BaseModel): ) content_display: ContentDisplayConfig = Field(default_factory=ContentDisplayConfig) link_panel: LinkPanelConfig = Field(default_factory=LinkPanelConfig) - mail: MailConfig = Field(default_factory=MailConfig) + mail: MailOperationsConfig = Field(default_factory=MailOperationsConfig) keybindings: KeybindingsConfig = Field(default_factory=KeybindingsConfig) theme: ThemeConfig = Field(default_factory=ThemeConfig) @@ -120,15 +120,15 @@ class MaildirGTDConfig(BaseModel): def get_config_path(cls) -> Path: """Get the path to the config file.""" # Check environment variable first - env_path = os.getenv("MAILDIR_GTD_CONFIG") + env_path = os.getenv("LUK_MAIL_CONFIG") if env_path: return Path(env_path) - # Default to ~/.config/luk/maildir_gtd.toml - return Path.home() / ".config" / "luk" / "maildir_gtd.toml" + # Default to ~/.config/luk/mail.toml + return Path.home() / ".config" / "luk" / "mail.toml" @classmethod - def load(cls, config_path: Optional[Path] = None) -> "MaildirGTDConfig": + def load(cls, config_path: Optional[Path] = None) -> "MailAppConfig": """Load config from TOML file with defaults for missing values.""" if config_path is None: config_path = cls.get_config_path() @@ -161,19 +161,19 @@ class MaildirGTDConfig(BaseModel): # Global config instance (lazy-loaded) -_config: Optional[MaildirGTDConfig] = None +_config: Optional[MailAppConfig] = None -def get_config() -> MaildirGTDConfig: +def get_config() -> MailAppConfig: """Get the global config instance, loading it if necessary.""" global _config if _config is None: - _config = MaildirGTDConfig.load() + _config = MailAppConfig.load() return _config -def reload_config() -> MaildirGTDConfig: +def reload_config() -> MailAppConfig: """Force reload of the config from disk.""" global _config - _config = MaildirGTDConfig.load() + _config = MailAppConfig.load() return _config diff --git a/src/maildir_gtd/email_viewer.tcss b/src/mail/email_viewer.tcss similarity index 100% rename from src/maildir_gtd/email_viewer.tcss rename to src/mail/email_viewer.tcss diff --git a/src/maildir_gtd/message_store.py b/src/mail/message_store.py similarity index 100% rename from src/maildir_gtd/message_store.py rename to src/mail/message_store.py diff --git a/src/maildir_gtd/screens/ConfirmDialog.py b/src/mail/screens/ConfirmDialog.py similarity index 100% rename from src/maildir_gtd/screens/ConfirmDialog.py rename to src/mail/screens/ConfirmDialog.py diff --git a/src/maildir_gtd/screens/CreateTask.py b/src/mail/screens/CreateTask.py similarity index 100% rename from src/maildir_gtd/screens/CreateTask.py rename to src/mail/screens/CreateTask.py diff --git a/src/maildir_gtd/screens/DocumentViewer.py b/src/mail/screens/DocumentViewer.py similarity index 100% rename from src/maildir_gtd/screens/DocumentViewer.py rename to src/mail/screens/DocumentViewer.py diff --git a/src/maildir_gtd/screens/LinkPanel.py b/src/mail/screens/LinkPanel.py similarity index 99% rename from src/maildir_gtd/screens/LinkPanel.py rename to src/mail/screens/LinkPanel.py index 7b39a11..08e2160 100644 --- a/src/maildir_gtd/screens/LinkPanel.py +++ b/src/mail/screens/LinkPanel.py @@ -13,7 +13,7 @@ from textual.containers import Container, Vertical from textual.screen import ModalScreen from textual.widgets import Label, ListView, ListItem, Static -from src.maildir_gtd.config import get_config +from src.mail.config import get_config @dataclass diff --git a/src/maildir_gtd/screens/OpenMessage.py b/src/mail/screens/OpenMessage.py similarity index 100% rename from src/maildir_gtd/screens/OpenMessage.py rename to src/mail/screens/OpenMessage.py diff --git a/src/maildir_gtd/screens/__init__.py b/src/mail/screens/__init__.py similarity index 100% rename from src/maildir_gtd/screens/__init__.py rename to src/mail/screens/__init__.py diff --git a/src/maildir_gtd/utils.py b/src/mail/utils.py similarity index 100% rename from src/maildir_gtd/utils.py rename to src/mail/utils.py diff --git a/src/maildir_gtd/widgets/ContentContainer.py b/src/mail/widgets/ContentContainer.py similarity index 98% rename from src/maildir_gtd/widgets/ContentContainer.py rename to src/mail/widgets/ContentContainer.py index 8be874b..a7f9759 100644 --- a/src/maildir_gtd/widgets/ContentContainer.py +++ b/src/mail/widgets/ContentContainer.py @@ -5,8 +5,8 @@ from textual.containers import Vertical, ScrollableContainer from textual.widgets import Static, Markdown, Label from textual.reactive import reactive from src.services.himalaya import client as himalaya_client -from src.maildir_gtd.config import get_config -from src.maildir_gtd.screens.LinkPanel import extract_links_from_content, LinkItem +from src.mail.config import get_config +from src.mail.screens.LinkPanel import extract_links_from_content, LinkItem import logging from datetime import datetime from typing import Literal, List diff --git a/src/maildir_gtd/widgets/EnvelopeHeader.py b/src/mail/widgets/EnvelopeHeader.py similarity index 100% rename from src/maildir_gtd/widgets/EnvelopeHeader.py rename to src/mail/widgets/EnvelopeHeader.py diff --git a/src/maildir_gtd/widgets/EnvelopeListItem.py b/src/mail/widgets/EnvelopeListItem.py similarity index 99% rename from src/maildir_gtd/widgets/EnvelopeListItem.py rename to src/mail/widgets/EnvelopeListItem.py index eab1a02..8ecb0ba 100644 --- a/src/maildir_gtd/widgets/EnvelopeListItem.py +++ b/src/mail/widgets/EnvelopeListItem.py @@ -7,7 +7,7 @@ from textual.app import ComposeResult from textual.containers import Horizontal, Vertical from textual.widgets import Label, Static -from src.maildir_gtd.config import EnvelopeDisplayConfig, get_config +from src.mail.config import EnvelopeDisplayConfig, get_config class EnvelopeListItem(Static): diff --git a/src/maildir_gtd/widgets/__init__.py b/src/mail/widgets/__init__.py similarity index 100% rename from src/maildir_gtd/widgets/__init__.py rename to src/mail/widgets/__init__.py diff --git a/src/maildir_gtd/__init__.py b/src/maildir_gtd/__init__.py deleted file mode 100644 index 11c4e8c..0000000 --- a/src/maildir_gtd/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# Initialize the maildir_gtd package diff --git a/src/services/himalaya/client.py b/src/services/himalaya/client.py index 2673d02..b533eb1 100644 --- a/src/services/himalaya/client.py +++ b/src/services/himalaya/client.py @@ -4,7 +4,7 @@ import json import logging import subprocess -from src.maildir_gtd.config import get_config +from src.mail.config import get_config async def list_envelopes(limit: int = 9999) -> Tuple[List[Dict[str, Any]], bool]: diff --git a/src/services/task_client.py b/src/services/task_client.py index 98c6e4c..7bda125 100644 --- a/src/services/task_client.py +++ b/src/services/task_client.py @@ -6,7 +6,7 @@ import logging import shlex from typing import Tuple, List, Dict, Any, Optional -from src.maildir_gtd.config import get_config +from src.mail.config import get_config logger = logging.getLogger(__name__)