ChangeLog¶
7.6.2 (unreleased)¶
[!IMPORTANT] This version is not released yet and is under active development.
7.6.1 (2024-11-29)¶
Fix conflicting
-h
/--hash-header
and-h
/--help
options. Closes #762.
7.6.0 (2024-11-24)¶
Add official support for Python 3.13.
Drop support for Python 3.9. Refs #787.
Add dependency on
extra-platforms
. Closes #784.Run tests on stable Python 3.13 release.
Run tests on Python 3.14-dev, mark them as unstable.
Move
macos-14
tests tomacos-15
.Add tests on
ubuntu-24.04
. Remove tests onubuntu-20.04
.Run workflows on
ubuntu-24.04
.Rely on frozen
uv.lock
for reproducibility.
7.5.0 (2024-07-03)¶
Switch from Poetry to
uv
.Drop support for Python 3.8.
Mark Python 3.13-dev tests as stable.
7.4.0 (2024-06-20)¶
Slim down package by moving unit tests out of the main package.
Split
dev
dependency groups into optionaltest
,typing
anddocs
groups.Remove direct dependency on
mypy
.Run tests on Python
3.13-dev
on all platforms butmacos
.Run tests on
macos-14
. Drop tests onmacos-12
.Build
arm64
binaries onmacos-14
.
7.3.0 (2023-11-14)¶
Drop support of Python 3.7.
Reduce memory usage. Addresses #362.
Replace unmaintained
bump2version
bybump-my-version
.Test
mdedup
binaries.Run tests and actions on released Python 3.12 version.
Run tests on macos-13. Remove tests on macos-11.
7.2.3 (2023-05-04)¶
Reverts distribution of package via trusted channel.
7.2.2 (2023-05-04)¶
Redo release to fix trusted publisher on PyPi.
7.2.1 (2023-05-04)¶
Produce dependency graph in Mermaid instead of Graphviz. Add new dev dependency on
sphinxcontrib-mermaid
.Move all documentation assets to
assets
subfolder.Distribute package on PyPi via a trusted publisher channel.
7.2.0 (2023-02-15)¶
Build standalone executable for macOS, Linux and Windows.
Generates dependency graph in Graphviz format.
Run tests on Python
3.12-dev
.Code, comments and documentation style change to conform to new QA workflows based on
ruff
.
7.1.0 (2022-12-02)¶
Renumber and rename phases to steps.
Group options per steps.
Add minimal code typing and checking.
Add logo.
Execute all workflows with Python 3.11.
7.0.0 (2022-11-26)¶
Drop Python 3.6 support.
Add support for Python 3.11.
Add new
--time
/--no-time
option to measure elapsed execution time.Add new
--color
/--no-color
and--ansi
/--no-ansi
alias options to deactivate CLI color rendering.Add new
--color
/--no-color
and--ansi
/--no-ansi
alias options to deactivate CLI color rendering.Add new
-C
/--config
option which support local and remote configuration file in TOML, YAML, JSON, INI or XML formats.Add new
--show-params
option to debug default parameter value and provenance.Fix incconsistent printing of help screen. Closes #160.
Force linear rendering of options in help screen to improve readability.
Fix run on Python 3.10. Closes #361.
Run unittests on Python 3.10 and Python 3.11.
Add dependency on
click-extra
andtyping-extensions
Remove direct dependency on
click-help-colors
,click-log
andtomlkit
.Fix broken selection logic in quantity-based strategies. Refs #146.
Add unittests to cover time-based and size-based selection edge-cases.
Drop unittests on deprecated
ubuntu-18.04
andmacos-10.15
.Add unittests on
ubuntu-22.04
,macos-12
andwindows-2022
.Run tests on multiple cores.
Simplify project management by abandoning the dual use of
main
/develop
branches.Migrate to external workflows to automate builds, releases, autofixes, linting, documentation, changelog, mailmap maintenance and label management.
Convert all documentation from RST to Markdown. Closes #368.
Keep CLI output in sync in documentation. Closes #23.
Move
sphinx
dependencies to dev requirements.Add citation file.
6.2.0 (2021-09-12)¶
Upgrade to Click 8.x.
Implements all missing
copy-discarded
,move-discarded
anddelete-discarded
actions. Closes #270 and #146.Add
-b
/--hash-body
option to set the way each email body is hashed.Add
--export-append
option to allow for the resulting deduplicated email to be appended to an existing mail box.Skip duplicate sets without any matching duplicate candidates. Closes #203.
6.1.3 (2021-04-13)¶
Fix dynamic
mailbox.Message
inheritance. Closes #191.
6.1.2 (2021-01-26)¶
Reconcile
v3
branch withdevelop
.
6.1.1 (2021-01-26)¶
Simple re-release.
6.1.0 (2021-01-26)¶
Add retroactive support for Python 3.6. Closes #154.
Fix documentation link and generation. Closes #66.
Auto-generate API documentation via a GitHub action workflow.
Add
tomlkit
dependency.Add test runs against new OSes and distributions:
ubuntu-18.04
andmacos-11.0
.Remove
pycodestyle
, it brings nothing more now that we rely onblack
.
6.0.2 (2020-11-05)¶
Load up all subfolders from
Maildir
andMH
boxes. Closes #123.
6.0.1 (2020-10-22)¶
Check early that
--export
file doesn’t exists. Closes #119.Add screenshots.
6.0.0 (2020-10-17)¶
Add new
-a
/--action
option to choose what to do on the final mail selection.Implements new
copy-discarded
,copy-selected
,delete-discarded
,delete-selected
,move-discarded
andmove-selected
actions.Add new
-E
/--export
and-e
/--export-format
options to support the newcopy-*
andmoved-*
actions.Rename all
--delete-*
strategies to--discard-*
.Add
--select-*
aliases to all strategies.Add new
discard-all-but-one
,discard-one
,select-one
andselect-all-but-one
selection strategies.Rename
-f
/--sources-format
option to-i
/--input-format
.--time-source
parameter is now optional and defaults todate-header
.Add metric description in deduplication end report.
Add detailed strategy description in help screen’s epilog.
Colorize help screen.
Colorize version screen and print environment data for bug reports.
Run tests on Python 3.9.
5.1.0 (2020-10-06)¶
Add new
-h
/--hash-header
option to select which mail headers to use to compute hash.Remove
-i
/--message-id
option. Can be emulated with-h Message-ID
or--hash-header Message-ID
option.Make all keyword-based choice parameters (
--sources-format
,--strategy
and--time-source
) case-insensitive.
5.0.0 (2020-10-05)¶
Add supports for
Babyl
,MH
andMMDF
mailbox types.Add new
-f
/--sources-format
option to force the type of mail sources on opening.Add new
-u
/--force-unlock
option to force the removal of a lock on mailboxes on opening.Split-up the selection of mails candidate for removal and the deletion itself into two distinct batch operations.
Add issue templates to guide users to report bugs and request features.
Upgrade to
Poetry 1.1.0
.Test publishing to PyPi in dry-run mode by the way of Poetry.
Auto-optimize images.
Auto-lock closed issues and PRs after a moment of inactivity.
4.0.0 (2020-10-02)¶
Removes the
hash
subcommand. Replaced it with a--hash-only
parameter to the main dedupe command.Removes
deduplicate
subcommand.mdedup
is now a simple CLI.Fix computation of stats. Closes #89.
Drop support for Python 2. Refs #90.
Bump minimal Python requirement to 3.7.
Repackage project around Poetry and
pyproject.toml
. Get rid ofsetup.py
.Replace unmaintained
bumpversion
bybump2version
.Drop dependency on
progressbar2
and replace it withclick
’s. Closes #37.Switch from Travis to GitHub Actions for all CI/CD jobs.
Regularly run unittests against Windows, Linux and macOS.
Removes all copyright dates.
Auto-fix Python format, typos and JSON content.
Let dependabot check for dependencies and update them.
Keep
.gitignore
and.mailmap
up to date and in sync.Auto-publish package on tagging events via
twine
.Always run test build and check resulting package on each commits.
Use declarative JSON to maintain list of GitHub labels for issues and PRs.
Lint both Python code and YAML content on each commit.
Run unittests in random to order to detect coupling.
3.0.1 (2021-01-25)¶
Add explicit warning in CLI output to warn about 3.x branch deprecation. Refs #180.
3.0.0 (2020-09-03)¶
[!CAUTION] As of
v3.0.0
, the project has been renamed to Mail Deduplicate and is now available on:
Github at https://github.com/kdeldycke/mail-deduplicate
PyPi at https://pypi.org/project/mail-deduplicate
Rename project from
maildir-deduplicate
tomail-deduplicate
.Rename
master
branch tomain
.Add support for mboxes. Closes #48.
Remove requirement on
-s
/--strategy
parameter, to let mails being grouped into duplicate sets without any removal action, effectively acting as a second-level dry-run.
2.2.0 (2020-09-03)¶
[!WARNING] This is the last version of the project known under the name Maildir Deduplicate (a.k.a.
maildir-deduplicate
).
Add disclaimer to prepare project name change.
Fix Header being object instead of string (#61).
Make body_lines conversion more reliable.
Add Message-ID as a header to check.
Bump requirement to
click_log >= 0.2.0
. Closes #58, #59 and #60.Replace
nose
bypytest
.Only notify by mail of test failures.
Drop support of Python 3.3.
2.1.0 (2017-01-13)¶
Fix rendering of changelog link in RST.
Show selected log level in debug mode.
Test builds against Python 3.6 and 3.7-dev, and most recent PyPy targeting Python 2.7 and 3.3.
Bump requirement to
readme_renderer >= 16.0
.Skip sets with unparsable mails because of incorrect encoding. Closes #47, #41 and #39.
Require the
-s
/--strategy
CLI parameter to be set. Closes #44.
2.0.1 (2016-11-28)¶
Reject mails without
Message-ID
headers if--message-id
option is active.Add a class to holds global config.
Print more debug info in unittests when CLI produce tracebacks.
Always check for package metadata in Travis CI jobs.
Fix package’s long description against PyPi rendering constraints.
Add link to full changelog in package’s long description.
2.0.0 (2016-11-13)¶
Refactor and redefine all removal strategies. Closes #40.
Add a new
-t
/--time-source
CLI parameter to point to the canonical source of a mail’s timestamp.Rename
-s
/--show-diffs
parameter to-d
/--show-diff
.Rename
-D
/--diff-threshold
parameter to-C
/--content-threshold
.Add new
-s
shorthand to--strategy
parameter.Re-implement diff threshold options. Closes #43.
Re-implement statistics. Closes #42.
Normalize and canonicalize all paths to deduplicate on the fly mails pointing to the same file.
Build documentation via Sphinx.
Add
test
anddevelop
dependencies.Move coverage config to
setup.cfg
.Replace
pep8
package bypycodestyle
.Enforce
pycodestyle
checks in Travis CI jobs.Remove popularity badge: PyPI download counters are broken and no longer displayed.
Test production of packages in Travis CI jobs.
Move development and packaging documentation to Sphinx. Closes #22.
Make wheels generated under Python 2 environnment available for Python 3 too.
Let unittests generates their own fake and temporary maildirs.
Print CLI output in unittests.
Use generic factory to produce mail fixtures in unittests.
Only show latest changes in the long description of the package instead of the full changelog.
1.3.0 (2016-08-11)¶
1.2.0 (2016-03-29)¶
1.1.0 (2016-01-10)¶
Add Python 3.4 and 3.5 support. Closes #30.
Add default
isort
configuration.Remove hackish default encoding forcing in main code.
1.0.2 (2015-12-22)¶
Fix
AttributeError
on message instance. Closes #28.Various fixes of references to internal variables introduced by a switch to more Pythonic classes in 1.0.0.
Remove
Message-ID
from the list of default canonical headers.
1.0.1 (2015-11-23)¶
Switch from coveralls to codecov.
1.0.0 (2015-10-03)¶
0.1.0 (2014-12-15)¶
Package the script for proper distribution.
0.0.1 (2011-04-27)¶
First external contribution.
0.0.0 (2010-06-08)¶
First commit.