[Python-Dev] Wrong keyword parameter name in regex pattern methods
Serhiy Storchaka
storchaka at gmail.com
Thu Jan 23 18:22:56 CET 2014
Currently there is a mismatch between documented parameter names in some
methods of regex pattern object.
match(), search(), and fullmatch() (the last was added in 3.4) document first
arguments as "string":
match(string[, pos[, endpos]])
search(string[, pos[, endpos]])
fullmatch(string[, pos[, endpos]])
But actually they don't accept the "string" keyword parameter, by mistake it
is named as "pattern" in the code.
findall() and split() document first arguments as "string":
findall(string[, pos[, endpos]]) -> list
split(string[, maxsplit = 0])
But actually they don't accept the "string" keyword parameter, it is named as
"source" in the code.
The scanner() method is not documented and also has the "source" parameter.
All other methods accepts the "string" argument as documented. The match
object returned by match(), search(), fullmatch(), and finditer() methods and
generated by the scanner, has the "string" attribute which is equivalent to
the argument of these methods. Module level functions which corresponds to
these methods have the "string" parameter.
Due to all these facts I think that parameter names "pattern" and "source" are
accidental mistakes and should be renamed to expected "string". Because this
parameter is mandatory, apparently it is always used as positional parameter,
and this error was not discovered long time.
http://bugs.python.org/issue20283
More information about the Python-Dev
mailing list