Todo-list¶
Todo
Rewrite the diff algorithm to not rely on naive unified diff result parsing.
(The original entry is located in /home/runner/work/mail-deduplicate/mail-deduplicate/mail_deduplicate/deduplicate.py:docstring of mail_deduplicate.deduplicate.DuplicateSet.diff, line 3.)
Todo
Investigate what mailbox.MaildirMessage.get_date() does and if we can use it.
(The original entry is located in /home/runner/work/mail-deduplicate/mail-deduplicate/mail_deduplicate/mail.py:docstring of mail_deduplicate.mail.DedupMailMixin.timestamp, line 12.)
Todo
Allow customization of the way the size is computed, by getting the file
size instead, for example with os.path.getsize(mail_file).
(The original entry is located in /home/runner/work/mail-deduplicate/mail-deduplicate/mail_deduplicate/mail.py:docstring of mail_deduplicate.mail.DedupMailMixin.size, line 7.)
Todo
Revisit the day-level granularity, and whether the time of the day should take part in the hash.
(The original entry is located in /home/runner/work/mail-deduplicate/mail-deduplicate/mail_deduplicate/mail.py:docstring of mail_deduplicate.mail.DedupMailMixin.normalize_date, line 6.)
Todo
Add support for other mailbox formats and sources, like Gmail accounts, IMAP servers, etc.
(The original entry is located in /home/runner/work/mail-deduplicate/mail-deduplicate/mail_deduplicate/mail_box.py:docstring of mail_deduplicate.mail_box.BoxFormat, line 12.)
Todo
Future finer autodetection heuristics should be implemented here. Some ideas:
single mail from a
maildirplain text mail content
other mailbox formats supported in Python’s standard library:
MHBabylMMDF
(The original entry is located in /home/runner/work/mail-deduplicate/mail-deduplicate/mail_deduplicate/mail_box.py:docstring of mail_deduplicate.mail_box.autodetect_box_type, line 8.)
Todo
Revisit the aliasing arrangement on a Python floor bump: Enum._add_alias_()
(3.13+) accepts non-identifier names, so
SELECT_OLDER._add_alias_("discard-newest") puts the CLI spelling straight into
__members__, where
EnumChoice(Strategy, choice_source="name", show_aliases=True) picks it up.
EnumChoice also grew a transform argument (click-extra 8.9.0) to kebab-case
the raw identifiers that show_aliases otherwise yields. Neither addresses the
three losses listed in the note above, which is why the current arrangement
stands.
(The original entry is located in /home/runner/work/mail-deduplicate/mail-deduplicate/mail_deduplicate/strategy.py:docstring of mail_deduplicate.strategy.Strategy, line 32.)