On 2012-06-22, at 3:47 PM, Ethan Furman wrote: > Guido van Rossum wrote: >> On Fri, Jun 22, 2012 at 12:24 PM, Yury Selivanov >> <yselivanov...@gmail.com> wrote: >>> On 2012-06-22, at 3:18 PM, Guido van Rossum wrote: >>> >>>> On Fri, Jun 22, 2012 at 12:10 PM, Yury Selivanov >>>> <yselivanov...@gmail.com> wrote: >>>>> Yes, I meant optional. Would 'name(arg1, *, [arg2])' be better? >>>> Hardly, because that's not valid syntax. I'd write name(arg1, *, >>>> arg2=<default>). >>> Like >>> >>> replace(*, name=<default>, kind=<default>, default=<default>, >>> annotation=<default>) -> Parameter >>> >>> or >>> >>> replace(*, name=<optional>, kind=<optional>, default=<optional>, >>> annotation=<optional>) -> Parameter >> Either one's an improvement, but you'll have to explain at the top of >> the PEP what you intend this notation to mean. I'd go with <optional> >> since the key thing here seems to be that various keywords, when not >> specified, mean that nothing changes. OTOH in some places you can >> probably write "foo=Signature.empty" (etc.). > > Parameter names that follow '*' in the signature are not optional (unless > that has changed since 3.2). In other words, the above signature requires > that name, kind, default, and annotation be specified by name *and* be given > values when replace is called)
I know. Those are optional keyword-only arguments. In the code: def replace(self, *, name=_void, kind=_void, annotation=_void, default=_void): We just need some clear convention for the PEP - and the <optional> mark should work. - Yury _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com