Re: [PATCH 2/2] python: make the result of Message.get_replies() more pythonic

2012-01-03 Thread Sebastian Spaeth
On Wed, 21 Dec 2011 14:15:02 +0100, Justus Winter 
4win...@informatik.uni-hamburg.de wrote:
 Formerly Message.get_replies() returned an iterator or None forcing
 users to check the result before iterating over it leading to strange
 looking code at the call site.
 
 Fix this flaw by adding an EmptyMessagesResult class that behaves like
 the Messages class but immediatly raises StopIteration if used as an
 iterator and returning objects of this type from Message.get_replies()
 to indicate that there are no replies.


Makes sense, pushed. It shouldn't cause the breaking of existing
clients... (famous last words)

Sebastian


pgp9Vw1cvyoIX.pgp
Description: PGP signature
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH 2/2] python: make the result of Message.get_replies() more pythonic

2012-01-02 Thread Sebastian Spaeth
On Wed, 21 Dec 2011 14:15:02 +0100, Justus Winter <4winter at 
informatik.uni-hamburg.de> wrote:
> Formerly Message.get_replies() returned an iterator or None forcing
> users to check the result before iterating over it leading to strange
> looking code at the call site.
> 
> Fix this flaw by adding an EmptyMessagesResult class that behaves like
> the Messages class but immediatly raises StopIteration if used as an
> iterator and returning objects of this type from Message.get_replies()
> to indicate that there are no replies.


Makes sense, pushed. It shouldn't cause the breaking of existing
clients... (famous last words)

Sebastian
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: 



[PATCH 2/2] python: make the result of Message.get_replies() more pythonic

2012-01-02 Thread Tomi Ollila
On Wed, 21 Dec 2011 14:15:02 +0100, Justus Winter <4winter at 
informatik.uni-hamburg.de> wrote:
> Formerly Message.get_replies() returned an iterator or None forcing
> users to check the result before iterating over it leading to strange
> looking code at the call site.
> 
> Fix this flaw by adding an EmptyMessagesResult class that behaves like
> the Messages class but immediatly raises StopIteration if used as an
> iterator and returning objects of this type from Message.get_replies()
> to indicate that there are no replies.
> ---
>  bindings/python/notmuch/message.py |   22 +++---
>  1 files changed, 15 insertions(+), 7 deletions(-)

LGTM, but does this break any current software using this API ?

Tomi



Re: [PATCH 2/2] python: make the result of Message.get_replies() more pythonic

2012-01-02 Thread Tomi Ollila
On Wed, 21 Dec 2011 14:15:02 +0100, Justus Winter 
4win...@informatik.uni-hamburg.de wrote:
 Formerly Message.get_replies() returned an iterator or None forcing
 users to check the result before iterating over it leading to strange
 looking code at the call site.
 
 Fix this flaw by adding an EmptyMessagesResult class that behaves like
 the Messages class but immediatly raises StopIteration if used as an
 iterator and returning objects of this type from Message.get_replies()
 to indicate that there are no replies.
 ---
  bindings/python/notmuch/message.py |   22 +++---
  1 files changed, 15 insertions(+), 7 deletions(-)

LGTM, but does this break any current software using this API ?

Tomi

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH 2/2] python: make the result of Message.get_replies() more pythonic

2011-12-21 Thread Justus Winter
Formerly Message.get_replies() returned an iterator or None forcing
users to check the result before iterating over it leading to strange
looking code at the call site.

Fix this flaw by adding an EmptyMessagesResult class that behaves like
the Messages class but immediatly raises StopIteration if used as an
iterator and returning objects of this type from Message.get_replies()
to indicate that there are no replies.
---
 bindings/python/notmuch/message.py |   22 +++---
 1 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/bindings/python/notmuch/message.py 
b/bindings/python/notmuch/message.py
index cc9fc2a..975db1c 100644
--- a/bindings/python/notmuch/message.py
+++ b/bindings/python/notmuch/message.py
@@ -232,10 +232,10 @@ class Messages(object):
 next_indent = indent + 1

 # get replies and print them also out (if there are any)
-replies = msg.get_replies()
-if not replies is None:
+replies = msg.get_replies().format_messages(format, next_indent, 
entire_thread)
+if replies:
 result.append(set_sep)
-result.extend(replies.format_messages(format, next_indent, 
entire_thread))
+result.extend(replies)

 result.append(set_end)
 result.append(set_end)
@@ -253,6 +253,15 @@ class Messages(object):
 """
 handle.write(''.join(self.format_messages(format, indent, 
entire_thread)))

+class EmptyMessagesResult(Messages):
+def __init__(self, parent):
+self._msgs = None
+self._parent = parent
+
+def __next__(self):
+raise StopIteration()
+next = __next__
+
 class Message(object):
 """Represents a single Email message

@@ -383,10 +392,9 @@ class Message(object):
 number of subsequent calls to :meth:`get_replies`). If this message
 was obtained through some non-thread means, (such as by a call to
 :meth:`Query.search_messages`), then this function will return
-`None`.
+an empty Messages iterator.

-:returns: :class:`Messages` or `None` if there are no replies to
-this message.
+:returns: :class:`Messages`.
 :exception: :exc:`NotmuchError` STATUS.NOT_INITIALIZED if the message
 is not initialized.
 """
@@ -396,7 +404,7 @@ class Message(object):
 msgs_p = Message._get_replies(self._msg)

 if msgs_p is None:
-return None
+return EmptyMessagesResult(self)

 return Messages(msgs_p, self)

-- 
1.7.7.3



[PATCH 2/2] python: make the result of Message.get_replies() more pythonic

2011-12-21 Thread Justus Winter
Formerly Message.get_replies() returned an iterator or None forcing
users to check the result before iterating over it leading to strange
looking code at the call site.

Fix this flaw by adding an EmptyMessagesResult class that behaves like
the Messages class but immediatly raises StopIteration if used as an
iterator and returning objects of this type from Message.get_replies()
to indicate that there are no replies.
---
 bindings/python/notmuch/message.py |   22 +++---
 1 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/bindings/python/notmuch/message.py 
b/bindings/python/notmuch/message.py
index cc9fc2a..975db1c 100644
--- a/bindings/python/notmuch/message.py
+++ b/bindings/python/notmuch/message.py
@@ -232,10 +232,10 @@ class Messages(object):
 next_indent = indent + 1
 
 # get replies and print them also out (if there are any)
-replies = msg.get_replies()
-if not replies is None:
+replies = msg.get_replies().format_messages(format, next_indent, 
entire_thread)
+if replies:
 result.append(set_sep)
-result.extend(replies.format_messages(format, next_indent, 
entire_thread))
+result.extend(replies)
 
 result.append(set_end)
 result.append(set_end)
@@ -253,6 +253,15 @@ class Messages(object):
 
 handle.write(''.join(self.format_messages(format, indent, 
entire_thread)))
 
+class EmptyMessagesResult(Messages):
+def __init__(self, parent):
+self._msgs = None
+self._parent = parent
+
+def __next__(self):
+raise StopIteration()
+next = __next__
+
 class Message(object):
 Represents a single Email message
 
@@ -383,10 +392,9 @@ class Message(object):
 number of subsequent calls to :meth:`get_replies`). If this message
 was obtained through some non-thread means, (such as by a call to
 :meth:`Query.search_messages`), then this function will return
-`None`.
+an empty Messages iterator.
 
-:returns: :class:`Messages` or `None` if there are no replies to
-this message.
+:returns: :class:`Messages`.
 :exception: :exc:`NotmuchError` STATUS.NOT_INITIALIZED if the message
 is not initialized.
 
@@ -396,7 +404,7 @@ class Message(object):
 msgs_p = Message._get_replies(self._msg)
 
 if msgs_p is None:
-return None
+return EmptyMessagesResult(self)
 
 return Messages(msgs_p, self)
 
-- 
1.7.7.3

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch