| Commit message (Collapse) | Author | Age |
|\
| |
| | |
Encrypt for the CC addresses too
|
| | |
|
|\ \
| | |
| | | |
Replace None passed to comprehensions with identity function
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
One of the differences between map/filter and a comprehension is what
happens with None. For map and filter passing None as the function will
be treated as an identity function (equivalent to lambda x: x), for
comprehensions however, this will raise an exception (calling NoneType).
The fix is rather simple, instead of making the default of filtfun None,
make it an identity function. I've used lambda x: x since it's easy,
although defining an identity function in a utility library might be
preferable since lambdas are slower than normal functions.
Fixes #946
|
|\ \
| | |
| | | |
Replace twisted command line parsing with argparse
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
This was tested with lsof(8) and the files are not open when alot is up and
running.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is only possible for the notmuch config file and not for the alot config
file as the former is strictly required but the latter is not. If the latter
does not exist it will be detected by the argument parser. If the former is
not given on the command line the parser will return `None` and we can
manually check if the default config file exists and else just skip the alot
config file.
|
| | | |
|
| | |
| | |
| | |
| | | |
Fixes the -n option.
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
This again sightly changes the help output and also the possible options for
the compose subcommand.
|
| | |
| | |
| | |
| | |
| | | |
Especially let the command line parser check if a file given on the command
line exists.
|
| | |
| | |
| | |
| | |
| | | |
The command line interface is copied as directly as possible. But at least
the help output is formatted differently.
|
|\ \ \
| | | |
| | | | |
Eliminates bug where a modifier + mouse click would crash alot.
|
|/ / /
| | |
| | |
| | | |
Fixes pazz/alot#955
|
|\ \ \
| |/ /
|/| | |
Add new features to NEWS
|
|/ / |
|
|\ \
| | |
| | | |
adding support for mouse scrolling
|
| | | |
|
|\ \ \
| |/ /
|/| | |
On exit command, check if there are any unsent messages and query user if we should exit.
|
| |/ |
|
|/
|
|
|
|
|
|
| |
this is to make sure that sphinx's autodoc works
for `alot.UI` and other urwid-derived classes
when building the docs on readthedocs.net
fixes #938
|
|\
| |
| | |
Remove some irc notifications by travis
|
|/ |
|
|\
| |
| | |
Revert "Fix values to methods in __main__"
|
|/
|
|
|
|
| |
This reverts commit 581ed2987bd456d2894637a30bb5a14a4caa5f9b.
Fixes #942
|
|\
| |
| | |
Even more cleanups
|
| | |
|
| |
| |
| |
| | |
This is just whitespace changes.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This replaces the deprecated __cmp__ function with the more modern
__lt__, __eq__, and __ne__, and then uses functools.total_ordering to
implemented the remaining pieces of the rich comparison protocol
automatically. It also make use of the NotImplemented singleton, which
python uses to signal to rich comparators that this class doesn't no how
to compare to the other class, which results in the complementary method
from the other class being used, and if both return NotImplemented than
a TypeError is generated.
There are two reasons to make this change. First, python 3 only supports
rich comparisons, and second rich comparisons are much faster than using
cmp (and the __cmp__ protocol) because cmp is called at least 3 times
per element, while a rich comparitor is called one per element.
functools.total_ordering is in the standard library from 2.7 and 3.3,
and will implement the rich comparison protocol provided that __eq__ and
at least one of __lt__, __le__, __ge__, or __gt__ are implemented. It
does not (oddly enough) implement __ne__, so I've implemented that
manually.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
There are times to call dunder methods explicitly (double underscore
methods, like __contains__), but that's usually only required when
dealing with inheritance. In this case using the standard 'k in d'
syntax is clearer.
|
| |
| |
| |
| |
| | |
This dict key is deleted, and then promptly replaced. The deletion is
useless, the replacement does the same thing.
|
| |
| |
| |
| |
| | |
Using file_ instead of FILE still avoids shadowing the builtin, but also
doesn't stand out so much.
|
| |
| |
| |
| | |
They are the same, except xrange returns an iterator instead of a list.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This removes the use of range (originally I simply replaced it with
xrange, but the realized that the use of range was itself strange), and
replaces it with generators and iterators to create the dictionary. This
has the advantage of only creating one concrete instance (the choices
dict), and being slightly easier to read and understand, as well as not
needing to call len() repeatedly.
|
|\ \
| |/
|/| |
Cache pip packages
|
|/ |
|
|\
| |
| | |
Fix for case-(in)sensitive MIME matching.
|
|/
|
|
|
| |
Simply cast every string to lower() when matching MIME media type and
subtype. Matching is always case-insensitive as per RFC2045, 5.1.
|
| |
|
| |
|
|\
| |
| | |
More cleanups
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The Completer class is abastract, and it's complete method is also
abstract. Using ABCMeta achieve two thing, first it will cause an error
if a developer doesn't overwrite the method in a subclass. And second
that it tells the static analysis tools to ignore the unused arguments
in the signature, since this is the definition of a signature, not an
actual function.
By the same logic addressbook.AddressBook, and account.Account have been
extended to use ABCMeta as their metaclass and have had their abstract
methods decorated with the abstract method attribute.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch replaces a large number (but not all) unused arguments with
the standard ``_`` placeholder. This has the advantage of signaling that
these values are unused.
There are a number of places that I've chosen not to apply this, largely
in methods that have publicly define signatures that they inherit
(usually from urwid).
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It's pretty easy to get caught up using dict.keys (or iterkeys) when
one doesn't need to. This patch corrects two cases where it's not
needed, the first is the case of inclusion. ``x in mydict.keys()`` is
equivalent to ``x in mydict``, but without the need to generate a list
and walk it. The second case is when calling set() on a dict,
``set(mydict)`` will create a set object of the dict's keys, without the
need to create one in memory and is significantly faster than
``set(mydict.keys())`` or even ``set(mydict.iterkeys())``.
|
| |
| |
| |
| |
| |
| | |
This patch changes an assertion to avoid building a list in memory by
using dict.keys() and then concatenating it (building a second list in
memory). This is both faster and uses less memory.
|
| |
| |
| |
| |
| |
| |
| | |
The use of a list comprehension here saves one line of code, but doesn't
make the code clearer, a simple loop is more obvious. This also replaces
``if not v or v == ''`` with simply ``if not v``, since they're
equivalent.
|