Windows: using hg executable from an IDE results in python errors

Alexander Belchenko bialix at
Thu Mar 20 16:06:34 CDT 2008

Patrick Mézard пишет:
> Alexander Belchenko a écrit :
>> I'm not Patrick but you need to test is fd hasattr fileno. When program running as
>> subprocess then pipes fd never had fileno. Because they're not real files.
> Testing for fileno() availability cannot harm but I am not sure it will solved the issue here since we get a bad file descriptor issue rather than a missing attribute. I don't know how to check fileno() is valid, maybe it should be positive ? Do you know an easy way to test these kind of setup ?

In Bazaar VCS we exactly test for hasattr(fd, 'fileno') and only then change mode of stream. And it 
works perfectly for us. (And for me personally).

Here is excerpt of the code from bzrlib/

             # force sys.stdout to be binary stream on win32
             if sys.platform == 'win32':
                 fileno = getattr(sys.stdout, 'fileno', None)
                 if fileno:
                     import msvcrt
                     msvcrt.setmode(fileno(), os.O_BINARY)

Of course, you can do it in your own way. It's just working example, nothing more.

More information about the Mercurial mailing list