Le dim. 22 mars 2020 à 01:45, Dennis Sweeney
<sweeney.dennis...@gmail.com> a écrit :
> For accepting multiple prefixes, I can't tell if there's a consensus about 
> whether
> ``s = s.cutprefix("a", "b", "c")`` should be the same as
>
>  for prefix in ["a", "b", "c"]:
>      s = s.cutprefix(prefix)
>
> or
>
>  for prefix in ["a", "b", "c"]:
>      if s.startwith(prefix):
>          s = s.cutprefix(prefix)
>          break
>
> The latter seems to be harder for users to implement through other means, and 
> it's the
> behavior that test_concurrent_futures.py has implemented now, so maybe that's 
> what we
> want.

I expect that "FooBar".cutprefix(("Foo", "Bar")) returns "Bar". IMO
it's consistent with "FooFoo".cutprefix("Foo") which only returns
"Foo" and not "":
https://www.python.org/dev/peps/pep-0616/#remove-multiple-copies-of-a-prefix

If you want to remove both prefixes,
"FooBar".cutprefix("Foo").cutprefix("Bar") should be called to get "".


> Also, it seems more elegant to me to accept variadic arguments, rather than a 
> single
> tuple of arguments. Is it worth it to match the related-but-not-the-same API 
> of
> "startswith" if it makes for uglier Python? My gut reaction is to prefer the 
> varargs, but
> maybe someone has a different perspective.

I suggest to accept a tuple of strings:

    str.cutprefix(("prefix1", "prefix2"))

To be consistent with startswith():

    str.startswith(("prefix1", "prefix2"))

cutprefix() and startswith() can be used together and so I would
prefer to have the same API:

prefixes = ("context: ", "ctx:")
has_prefix = False
if line.startswith(prefixes):
    line = line.cutprefix(prefixes)
    has_prefix = True

A different API would look more surprising, no? Compare it to:

prefixes = ("context: ", "ctx:")
has_prefix = False
if line.startswith(prefixes):
    line = line.cutprefix(*prefixes)    # <== HERE
    has_prefix = True

The difference is even more visible is you pass directly the prefixes:
    .cutprefix("context: ", "ctx:")
vs
    .cutprefix(("context: ", "ctx:"))

Victor
--
Night gathers, and now my watch begins. It shall not end until my death.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/JTFKF2ASUR5QV3I73O72RHYL5S72OGDW/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to