Eric V. Smith <e...@trueblade.com> added the comment:

I don't see any problems that need solving.

My only interest in this is that I tend to think sentinels that are used for 
missing parameters should be exposed, and this isn't always an obvious 
consideration when designing an API.

For example, say there's a library that has a function:
open(name, type, [mode])

That is, mode is optional. I realize that in pure Python, I could find out what 
sentinel value they're using, unless they're playing tricks with args and 
kwargs. But maybe this is written in C.

Now, say I want to write a wrapper around this, called myopen, and always pass 
in "foo" for type.

I'd need to use my own sentinel:
_MISSING= object()
def myopen(name, mode=_MISSING)

But, how do I call open? In the past, I've done things like:
if mode is _MISSING:
  return open(name, "foo")
else:
  return open(name, "foo", mode)

That doesn't scale well if there are multiple optional parameters.

In any event, this just seems like a guideline we should be aware of when 
adding APIs.

Absent any concrete proposals for a "sentinel style guide", I don't think 
there's anything actionable here. I agree with Steven that it's a case-by-case 
thing. One size need not fit all.

As to the issue referenced by Victor: I'm not sure what a style guide would 
bring to the table. I think the issue of whether to use a second sentinel or 
not could be decided in this file alone, without needed a global decision.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue35123>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to