On Friday, August 8, 2014 10:49:27 AM UTC+5:30, Rustom Mody wrote: > On Thursday, August 7, 2014 10:26:56 PM UTC+5:30, Steven D'Aprano wrote: > > Roy Smith wrote:
> > > Peter Otten wrote: > > >> os.fork() > > >> Fork a child process. > > >> ... > > >> Availability: Unix. > > >> """ > > >> You are using the wrong operating system ;) > > > To be honest, this could be considered a buglet in the os module. It > > > really should raise: > > > NotImplementedError("fork() is only available on unix") > > > or perhaps even, as Peter suggests: > > > NotImplementedError("You are using the wrong operating system") > > > either of those would be better than AttributeError. > > I disagree. How would you tell if fork is implemented? With the current > > behaviour, telling whether fork is implemented or not is simple: > > is_implemented = hasattr(os, "fork") > > With your suggestion: > > try: > > pid = os.fork() > > except NotImplementedError: > > is_implemented = False > > else: > > if pid == 0: > > # In the child process. > > os._exit(0) # Unconditionally exit, right now, no excuses. > > is_implemented = True > > which is not obvious, simple or cheap. > Surely I am missing something but why not check os.fork before > checking os.fork() ? > Something along these lines > >>> try: > ... os.fork > ... except AttributeError: > ... ii = False > ... else: > ... ii = True > Of course more appropriate would be something along the lines: > catch AttributeError and re-raise NotImplementedError Thinking about this a bit more I see that NotImplemented is under RuntimeError. Probably a subclass of AttributeError -- PortabilityError?? Cant think of a good name -- is what is desired -- https://mail.python.org/mailman/listinfo/python-list