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 maildir

  • plain text mail content

  • other mailbox formats supported in Python’s standard library:

    • MH

    • Babyl

    • MMDF

(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.)