Hirokazu Yamamoto ocean-c...@m2.ccsnet.ne.jp added the comment:
Sorry, previous one contained experimental code for another issue.
I've attached correct one.
--
Added file: http://bugs.python.org/file18992/py3k_better_build_ssl.zip
___
Python tracker
Georg Brandl ge...@python.org added the comment:
I agree with Martin.
--
nosy: +georg.brandl
resolution: - works for me
status: open - closed
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9933
Iwasa Kazmi kzmi...@gmail.com added the comment:
Added sample registory data file.
--
Added file: http://bugs.python.org/file18993/fonts.reg
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9937
Iwasa Kazmi kzmi...@gmail.com added the comment:
Added py file to reproduce.
--
Added file: http://bugs.python.org/file18994/test.py
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9937
___
Hirokazu Yamamoto ocean-c...@m2.ccsnet.ne.jp added the comment:
Committed in r84973(py3k) and r84990(release31-maint).
--
resolution: - fixed
status: open - closed
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9868
Changes by Hirokazu Yamamoto ocean-c...@m2.ccsnet.ne.jp:
Removed file: http://bugs.python.org/file18974/py3k_better_build_ssl.zip
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9552
___
Changes by Hirokazu Yamamoto ocean-c...@m2.ccsnet.ne.jp:
Removed file: http://bugs.python.org/file18992/py3k_better_build_ssl.zip
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9552
___
Changes by Hirokazu Yamamoto ocean-c...@m2.ccsnet.ne.jp:
Added file: http://bugs.python.org/file18995/py3k_better_build_ssl.zip
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9552
___
Changes by Ned Deily n...@acm.org:
--
stage: - patch review
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9784
___
___
Python-bugs-list mailing
Changes by Ned Deily n...@acm.org:
--
stage: needs patch - patch review
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9783
___
___
STINNER Victor victor.stin...@haypocalc.com added the comment:
New version of the patch:
- reencode sys.path_importer_cache (and remove the last FIXME)
- fix different reference leaks
- catch PyIter_Next() failures
- create a subfunction to reencode sys.modules: it's easier to review and
Changes by STINNER Victor victor.stin...@haypocalc.com:
Removed file: http://bugs.python.org/file18561/reencode_modules_path-2.patch
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9630
___
STINNER Victor victor.stin...@haypocalc.com added the comment:
I would rename the feature to something like redecode-modules
Yes, right. I will rename the functions before commiting the patch.
--
___
Python tracker rep...@bugs.python.org
Marc-Andre Lemburg m...@egenix.com added the comment:
STINNER Victor wrote:
STINNER Victor victor.stin...@haypocalc.com added the comment:
New version of the patch:
- reencode sys.path_importer_cache (and remove the last FIXME)
- fix different reference leaks
- catch PyIter_Next()
STINNER Victor victor.stin...@haypocalc.com added the comment:
Why is this needed ?
Short answer: to support filesystem encoding different than utf-8. See #8611
for a longer explanation.
Example:
$ pwd
/home/SHARE/SVN/py3ké
$ PYTHONFSENCODING=ascii ./python test_fs_encoding.py
Fatal Python
Antoine Pitrou pit...@free.fr added the comment:
It is not possible to set Py_FilesystemDefaultEncoding before loading
the first module. initfsencoding() loads codecs and encodings modules to
check the codec name.
Not sure it's related, but there seems to be a bug:
$ ./python -c import sys;
Antoine Pitrou pit...@free.fr added the comment:
Some things about your patch:
- as Amaury said, functions should be named redecode* rather than reencode*
- please use -1 for error return, not 1
- have you tried to measure if it made Python startup slower?
--
STINNER Victor victor.stin...@haypocalc.com added the comment:
Not sure it's related, but there seems to be a bug:
It's not a bug, it's a feature :-) If you specify a non-existing locale, the
GNU libc fails back to ascii.
$ locale -a
C
français
french
fr_FR
fr...@euro
fr_FR.iso88591
Sébastien Sablé sa...@users.sourceforge.net added the comment:
I think this issue can be closed as a duplicate of issue 941346.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue1542544
___
Changes by Antoine Pitrou pit...@free.fr:
--
resolution: - duplicate
status: open - closed
superseder: - AIX shared library fix
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue1542544
___
Changes by Antoine Pitrou pit...@free.fr:
--
nosy: +brett.cannon, loewis
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9630
___
___
Antoine Pitrou pit...@free.fr added the comment:
I'm not really able to review this kind of things. Please commit if you think
it is ok.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9552
Changes by Antoine Pitrou pit...@free.fr:
--
nosy: +brian.curtin, haypo, tim.golden
versions: +Python 2.7, Python 3.1, Python 3.2 -Python 2.6
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9937
Marc-Andre Lemburg m...@egenix.com added the comment:
STINNER Victor wrote:
STINNER Victor victor.stin...@haypocalc.com added the comment:
Why is this needed ?
Short answer: to support filesystem encoding different than utf-8. See #8611
for a longer explanation.
Example:
$ pwd
STINNER Victor victor.stin...@haypocalc.com added the comment:
Some things about your patch:
- as Amaury said, functions should be named redecode*
rather than reencode*
Yes, as written before (msg117269), I will do it in my next patch.
- please use -1 for error return, not 1
Ok.
- have
Antoine Pitrou pit...@free.fr added the comment:
You are right that it doesn't work anymore (under Linux too).
Your patch is almost ok. It should raise a ValueError if bufsize=0 and
universal_newlines is true (the two can't be satisfied together, since
universal newlines implies buffering).
Antoine Pitrou pit...@free.fr added the comment:
As another sidenote, `bufsize` should only be relevant for stdin. For stdout
and stderr, disabling buffering will only reduce performance, not add
functionality. So I would suggest only setting buffering on stding.
--
STINNER Victor victor.stin...@haypocalc.com added the comment:
Le vendredi 24 septembre 2010 14:35:29, Marc-Andre Lemburg a écrit :
Thanks for the explanation. So the only reason why you have to go through
all those hoops is to
* allow the complete set of Python supported encoding names
Eric Smith e...@trueblade.com added the comment:
My only concern with this is that it would cause other implementations to do
the same thing. I assume it's not hard for them, but it is work. I know that
IronPython implemented the _formatter_* methods so that they could use
string.py as-is.
Changes by Antoine Pitrou pit...@free.fr:
--
nosy: +rhettinger
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9935
___
___
Python-bugs-list mailing
Nick Coghlan ncogh...@gmail.com added the comment:
Yeah, I realised shortly after I sent my email in response to the checkin that
the original version was covering more cases in that first try-block.
I'll defer to you when it comes to exactly which case that NotImplementedError
was covering -
Antoine Pitrou pit...@free.fr added the comment:
Patch looks ok, and it would hopefully fix build errors on the XP buildbots :)
--
nosy: +pitrou
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9790
Brian Curtin cur...@acm.org added the comment:
Committed in r84992. Thanks for having a look.
--
resolution: - fixed
stage: patch review - committed/rejected
status: open - closed
___
Python tracker rep...@bugs.python.org
Eric Smith e...@trueblade.com added the comment:
Now that I start this, I see that it's complicated by the fact that the
functions actually being wrapped are in stringlib/string_format.h. That's
because in 2.x they compile as both unicode and str. Before the _string module
is created, the
New submission from Jay T jayt...@gmail.com:
I want to create a custom interactive shell where I continually do
parse_args. Like the following:
parser = argparse.ArgumentParser()
command = raw_input()
while(True):
args = parser.parse_args(shlex.split(command))
# Do some magic stuff
Changes by Brian Curtin cur...@acm.org:
--
assignee: brian.curtin -
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9665
___
___
Python-bugs-list
Changes by Guido van Rossum gu...@python.org:
--
Removed message: http://bugs.python.org/msg117114
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue766910
___
Changes by Guido van Rossum gu...@python.org:
--
Removed message: http://bugs.python.org/msg117113
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue766910
___
Changes by Ronald Oussoren ronaldousso...@mac.com:
--
assignee: ronaldoussoren -
components: -Macintosh
nosy: -ronaldoussoren
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9923
___
Ronald Oussoren ronaldousso...@mac.com added the comment:
Patch looks fine and should IMO be applied
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9907
___
Brian Curtin cur...@acm.org added the comment:
I'm not able to reproduce any MemoryError on 2.6, 2.7, or 3.2 on Windows 7
using your registry data and test script.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9937
MunSic JEONG rus...@gmail.com added the comment:
I made patch which move comment from PC/getpathp.c to Doc/using/windows.rst.
And did a little editing, reST markup.
http://codereview.appspot.com/2211046
--
keywords: +patch
Added file:
Hirokazu Yamamoto ocean-c...@m2.ccsnet.ne.jp added the comment:
I can reproduce the issue on python2.x. I cannot on
python3.x.
--
nosy: +ocean-city
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9937
New submission from Antoine Pitrou pit...@free.fr:
While writing tests for nntplib, it came to me that a PipeIO or BytesPipeIO
would be useful (I actually wrote a minimal one). It would be a non-seekable
in-memory bytes buffer with distinct read and write pointers, so as to act like
a system
Hirokazu Yamamoto ocean-c...@m2.ccsnet.ne.jp added the comment:
This happens because RegQueryInfoKeyA returns maximum value
name length in *Unicode* characters. Strange API.
lpcMaxValueNameLen [out, optional]
A pointer to a variable that receives the size of the key's longest value
name,
Changes by Hirokazu Yamamoto ocean-c...@m2.ccsnet.ne.jp:
--
Removed message: http://bugs.python.org/msg117293
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9937
___
Daniel Stutzbach dan...@stutzbachenterprises.com added the comment:
It would be a non-seekable in-memory bytes buffer with distinct
read and write pointers, so as to act like a system FIFO or a
socket.makefile() object.
What would it do when the equivalent system FIFO object would block?
Antoine Pitrou pit...@free.fr added the comment:
Note that the original issue (test_tarfile failures on the Windows buildbots)
now seems fixed thanks to the various tarfile and test_tarfile improvements.
I have no opinion on whether assertRaises should take care of cleaning the
tracebacks or
Antoine Pitrou pit...@free.fr added the comment:
It would be a non-seekable in-memory bytes buffer with distinct
read and write pointers, so as to act like a system FIFO or a
socket.makefile() object.
What would it do when the equivalent system FIFO object would block?
Simply buffer
Amaury Forgeot d'Arc amaur...@gmail.com added the comment:
The _multiprocessing module already have similar objects.
_multiprocessing.Connection is based on file descriptors (and initialized with
the result of os.pipe())
_multiprocessing.PipeConnection uses Windows named pipes.
--
Daniel Stutzbach dan...@stutzbachenterprises.com added the comment:
Simply buffer everything.
That works for when a write operation would block. What would it do when a
read operation would block?
--
___
Python tracker rep...@bugs.python.org
New submission from Antoine Pitrou pit...@free.fr:
Under 3.2 and 3.1:
with open(foo, wb) as x: pass
...
with open(foo, wb) as (x, y): pass
...
Traceback (most recent call last):
File stdin, line 1, in module
io.UnsupportedOperation: read
Similar oddities under 2.7:
with open(foo, wb)
Antoine Pitrou pit...@free.fr added the comment:
Simply buffer everything.
That works for when a write operation would block. What would it do
when a read operation would block?
Good question. It could either return an empty bytes object, or perhaps
raise EOFError (it could be a
Antoine Pitrou pit...@free.fr added the comment:
The _multiprocessing module already have similar objects.
_multiprocessing.Connection is based on file descriptors (and initialized
with the result of os.pipe())
_multiprocessing.PipeConnection uses Windows named pipes.
Daniel Stutzbach dan...@stutzbachenterprises.com added the comment:
Another option would be to have the read-end act like a non-blocking socket
(i.e., raise EAGAIN).
Since it would mostly be for testing, would it make more sense to add it to
test.support or someplace similar instead of io?
Antoine Pitrou pit...@free.fr added the comment:
Another option would be to have the read-end act like a non-blocking
socket (i.e., raise EAGAIN).
Since it would mostly be for testing, would it make more sense to add
it to test.support or someplace similar instead of io?
I thought it
Michael Foord mich...@voidspace.org.uk added the comment:
Ok, so here is an idea that could remove the need for TestSuite._wrapped_run.
TestSuite.run could tag the result object (set an attribute). Nested
TestSuites would see an already tagged suite and do nothing (beyond running
tests of
Daniel Stutzbach dan...@stutzbachenterprises.com added the comment:
I thought it might be useful for third-party libraries, or even
non-testing situations
That might be true, but I prefer that we give code a more vigorous exercise
before putting it in the standard library proper. When we
Changes by Alexander Belopolsky belopol...@users.sourceforge.net:
--
stage: unit test needed - commit review
Added file: http://bugs.python.org/file18998/issue9936a.diff
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9936
Hirokazu Yamamoto ocean-c...@m2.ccsnet.ne.jp added the comment:
Thank you, I've committed in r84993(py3k)
I'll close this issue after merging to other branches.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9552
Amaury Forgeot d'Arc amaur...@gmail.com added the comment:
Of course, you get the same error with:
f = open('foo', 'wb')
x, y = f
Traceback (most recent call last):
File stdin, line 1, in module
IOError: File not open for reading
i.e. the tuple assignment iterates over the file, and calls
Hirokazu Yamamoto ocean-c...@m2.ccsnet.ne.jp added the comment:
This happens because RegQueryInfoKeyA returns maximum value
name length not in *Ansi* characters but in *Unicode characters.
I don't know clue why.
http://msdn.microsoft.com/en-us/library/ms724902%28VS.85%29.aspx
In multibyte
New submission from Alexander Belopolsky belopol...@users.sourceforge.net:
The trace and profile modules provide similar functionality, but have some
gratuitous differences in their APIs and command line interfaces.
For example, the method to trace a single call is Trace.runfunc, but almost
Hirokazu Yamamoto ocean-c...@m2.ccsnet.ne.jp added the comment:
Again, I'm not sure this is right fix.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9937
___
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
The runfunc/runcall difference is the easiest to address. I propose to add
runcall to Trace as an alias to runfunc and deprecate runfunc. In addition, I
propose to add __enter__ and __exit__ methods to both Trace and
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
MunSic,
Your patch does not apply cleanly to the py3k branch. Please not that new
features can only go to py3k. While some may argue that this issue is a bug, I
think it is more likely that it will only be accepted for
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
Hmm, it looks like issue6608-timemodule-2nd.patch is a patch on top of your
previous patches. I'll check if I can apply last three patches in order.
--
___
Python tracker
Benjamin Peterson benja...@python.org added the comment:
I would say it's strange but correct. (and unavoidable I think)
--
resolution: - invalid
status: open - closed
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9940
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
No, it looks like the starting patch is against 2.7. We need a py3k patch.
Meanwhile, I've noticed a couple of grammatical mistakes in comments:
strftime(), asctime() does not - strftime() and asctime() do not
fixes bug
Martin v. Löwis mar...@v.loewis.de added the comment:
-1 for the patch. I still maintain that it is better to follow the current SDK.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9784
New submission from Kevin Hunter hunt...@earlham.edu:
Should Python enable a way for folks to inform the OS of MADV_MERGEABLE memory?
I can't speak for other OSs, but Linux added the ability for processes to
inform the kernel that they have memory that will likely not change for a while
in
Amaury Forgeot d'Arc amaur...@gmail.com added the comment:
With CPython, even objects that don't change see their reference counter
modified quite frequently, just by looking at them.
What kind of memory would you mark this way?
--
nosy: +amaury.forgeotdarc
Eric Smith e...@trueblade.com added the comment:
The more I think about this, the more sense it makes to leave the module in
unicodeobject.c. Certainly all the code it's likely to ever contain would
already be in unicodeobject.c.
While I agree there's some conceptual clarity to be had by
Alexandre Vassalotti alexan...@peadrop.com added the comment:
I get this error with the patch:
python: /home/alex/src/python.org/py3k/Modules/_pickle.c:908:
_Unpickler_ReadFromFile: Assertion `self-next_read_idx == 0' failed.
Aborted
--
___
Python
Alexander Belopolsky belopol...@users.sourceforge.net added the comment:
Fixed in r84994, r84995 (3.1) and r84996 (2.7).
--
resolution: - fixed
stage: commit review - committed/rejected
___
Python tracker rep...@bugs.python.org
Martin v. Löwis mar...@v.loewis.de added the comment:
Perhaps slightly ironically (for this particular bug report) is that
the change was introduced to support class and module level setUp and
tearDown (similar to the use-case it now blocks).
FWIW, this issue arrived from pygresql, see
Antoine Pitrou pit...@free.fr added the comment:
Ah, thank you. I hadn't tested in debug mode and there was a wrong assert from
the previous code.
Here is a patch with the assert removed.
--
versions: +Python 3.2 -Python 3.1
Added file:
Martin v. Löwis mar...@v.loewis.de added the comment:
issue9783.diff provides a patch that will compile clean on 32 and 64
bit Windows systems. I tried to avoid explicit casts where I could,
but it was not always possible. I have ported a lot of my company's
code to 64 bit (all Windows
Brian Curtin cur...@acm.org added the comment:
In a round-about way, that's what the tests do via sameopenfile.
Maybe the behavior of os.path.samefile for Windows hard links should be
documented? Possibly just a small note explaining that os.path.sameopenfile is
an alternate solution due to
Ned Deily n...@acm.org added the comment:
Thanks for the patches. Can you also add a test case to Lib/test/mailcap.py to
cover this problem?
--
nosy: +ned.deily
stage: - unit test needed
___
Python tracker rep...@bugs.python.org
New submission from Geoffrey Bache gjb1...@users.sourceforge.net:
Consider the following code:
### keywords.py
def f(**kw):
print arg, kw
f(hello, keyword=True)
and compare the behaviour in Python 2.6 and Python 2.7:
$ python keywords.py
Traceback (most recent call last):
File
R. David Murray rdmur...@bitdance.com added the comment:
http://launchpad.net/python-email6
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9864
___
Giampaolo Rodola' g.rod...@gmail.com added the comment:
Here's a rewriting attempt (not tested).
Now that I look at it I must say it's quite ugly, so I don't think we should
follow this road.
An alternative I see is to return None in case of errors occurring on accept()
and make this very
Changes by Steven Bethard steven.beth...@gmail.com:
--
nosy: +bethard
versions: +Python 3.2
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9938
___
Terry J. Reedy tjre...@udel.edu added the comment:
Range objects are new in 3.0; they supersede 2.x xrange objects, which are
perhaps 10 years old. I do not remember that xrange objects had such
attributes. On the other hand, I believe there were requests.
The request, with either
Changes by Terry J. Reedy tjre...@udel.edu:
--
versions: -Python 3.1
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9889
___
___
Python-bugs-list
Antoine Pitrou pit...@free.fr added the comment:
Here is a patch adding tests for article(), head() and body(), as well as for
the file parameter.
As far as code is concerned, this should now be complete. Documentation remains
to be updated :)
--
Added file:
Terry J. Reedy tjre...@udel.edu added the comment:
The posted experiments on sorted data do not do any sorting. They only test the
difference in setup and comparison speed and not sorting/swapping speed. Please
post something with large arrays of random data.
Since the patch is intended to
Changes by Terry J. Reedy tjre...@udel.edu:
--
versions: -Python 2.6
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9925
___
___
Python-bugs-list
Changes by Terry J. Reedy tjre...@udel.edu:
--
keywords: +easy, patch
stage: - needs patch
versions: -Python 2.5, Python 2.6, Python 3.3
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9934
Terry J. Reedy tjre...@udel.edu added the comment:
Agreed. Should happen sometime. Thanks for catching this.
--
nosy: +terry.reedy
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9934
___
Daniel Stutzbach dan...@stutzbachenterprises.com added the comment:
Since the patch is intended to speed up 3.2 and your posted
experiments were run on that, I am puzzled that you would post a
test script to run under late 2.x instead of 3.1+.
I had originally written the test script was
Terry J. Reedy tjre...@udel.edu added the comment:
Does this help any?
import random
from timeit import timeit
testlist = list(range(10))
random.shuffle(testlist)
timeit('t=list(testlist); t.sort()',
'from __main__ import testlist', number=1)
0.1467957519740679
I just learned the
Daniel Stutzbach dan...@stutzbachenterprises.com added the comment:
Does this help any?
No :-)
The problem is that the random data you run in interpreter 1 won't be the same
data you run in interpreter 2, so the results are not directly comparable. One
of the sets of random data may be
Amaury Forgeot d'Arc amaur...@gmail.com added the comment:
the random data you run in interpreter 1 won't be the same data
you run in interpreter 2
what about adding a simple random.seed(12345)
--
nosy: +amaury.forgeotdarc
___
Python tracker
Daniel Stutzbach dan...@stutzbachenterprises.com added the comment:
what about adding a simple random.seed(12345)
That's an excellent suggestion! In fact, I'm embarrassed that it never
occurred to me (especially since I have used it in other projects).
I will have a revised speed_test along
New submission from Jon Clements jon...@googlemail.com:
Very low priority.
def consume(iterator, n):
Advance the iterator n-steps ahead. If n is none, consume entirely.
# Use functions that consume iterators at C speed.
if n is None:
# feed the entire iterator into a
Michael Foord mich...@voidspace.org.uk added the comment:
On 24/09/2010 19:23, Martin v. Löwis wrote:
Martin v. Löwismar...@v.loewis.de added the comment:
Perhaps slightly ironically (for this particular bug report) is that
the change was introduced to support class and module level setUp
Amaury Forgeot d'Arc amaur...@gmail.com added the comment:
Which SDK Example are you referring to? I could not find any example.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue9784
___
Martin v. Löwis mar...@v.loewis.de added the comment:
See, for example, the link you gave in msg115750. It has this sample code in it
(listed in the Examples section):
FNFCIREAD(fnFileRead)
{
DWORD dwBytesRead = 0;
UNREFERENCED_PARAMETER(pv);
if( ReadFile((HANDLE)hf, memory, cb,
1 - 100 of 111 matches
Mail list logo