parse_known_intermixed_args()
tests so they
work with the development version of Python.ArgumentParser()
’s python_cmd
argument is
now wrapped by normalizePath(mustWork = FALSE)
.Character values are now passed as “raw” strings to Python (#51).
In particular this avoids triggering an error in Python 3.12 when
creating a string with escapes not supported by Python
e.g. default = "\\D"
will continue to return a default
value of "\\D"
instead of triggering an error.
However, this also means that any Python accepted escape sequences will no longer be interpreted as an escape sequence. If relying on such behaviour you may need to instead use the appropriate R escape sequences or Unicode values instead of Python escape sequences:
default = "\\t"
will now return a default value of
"\\t"
(a t
preceded by an (escaped) backslash)
instead of "\t"
(a horizontal tab).Thanks Matthew Hall (@mdhall272) for bug report.
add_argument()
help
values
ended in a "
(#46). Thanks Oliver Dreschel (@oliverdreschel) for
bug report.We now support the following ArgumentParser()
methods:
format_help()
format_usage()
parse_intermixed_args()
(#45)parse_known_intermixed_args()
(#45)set_defaults()
(#43). Suggestion of @oliverbothe.When an error is thrown by
ArgumentParser()$parse_args()
and
interactive()
is FALSE
and
getOption("error")
is NULL
then we now use a
quieter default error handler that doesn’t output a trailing “Execution
halted”.
add_argument()
now allows “numeric” as an alias for
“double” for the type
argument (#42). Suggestion of @dariober.
ArgumentParser()
now handles
description
arguments with newlines in them (#44). Thanks
Arthur Gilly (@agilly)
for bug report.
The errors raised by ArgumentParser()$parse_args()
are now of class “argparse_parse_error”.
They are now less verbose when interactive()
is
FALSE
(#40).
There may still be a trailing “Execution halted” line output by R’s
default error handler (when interactive()
is
FALSE
). This can be silenced by setting a new error handler
near the top of your Rscript e.g.
if (!interactive())
options(error=function(e) quit('no', status = 1, runLast = FALSE))
add_argument
now uses as.logical()
logic to cast variables to logical values if
type = "logical"
and action = "store"
or
action = "append"
instead of using Python’s
bool()
logic (#39).
type = "logical"
and action = "store"
suggesting users instead use action = "store_true"
or
action = "store_false"
.action == "append"
and a non-NULL
default
value (#35). Thanks @miker985 for bug report.parse_known_args()
(#34).
Suggestion of David Lacalle Castillo (@WaterKnight1998).formatter_class
argument (as a
string) to a subparsers$add_parser()
method. Thanks Regina
(@oyxf) for bug
report.ArgumentParser()
.ArgumentParser()
when using Python 3.9. Thanks Kurt Hornik
for bug report.add_help
argument in
ArgumentParser
. Thanks George Chlipala for bug report.getopt
as a dependency.R6
classes instead of proto
classes (#25).argparse
code
but I did make private the previously public python_code
element of the object returned by ArgumentParser()
.add_subparsers
(#14). Suggestion of
Zebulun Arendsee.add_argument_group
(#26).add_mutually_exclusive_group
(#23).proto
dependency.type='integer'
in
add_argument
. Thanks Dominik Mueller for bug report and
suggested solution.proto
has been moved from
Depends
to Imports
in
DESCRIPTION
. We now use jsonlite
package
instead of rjson
to parse JSON
.ArgumentParser()
Suggestion of Alex
Reinhart.action='version'
. Suggestion of Dario Beraldi.required=FALSE
in
add_argument
. Thanks Claire D. McWhite for bug report.metavar
argument of add_argument
. Thanks Paul Newell for bug report
and a patch.add_argument
now throws a warning recommending using
action “store_true” or “store_false” if type set to “logical” and action
set to “store”.NULL
default in
add_argument
.NULL
default by
not setting any default at all. Suggestion of Hyunsoo Kim.choices
argument in
parser$add_argument
. Thanks Christopher Small for
report/request.formatter_class
argument in
ArgumentParser
. Thanks Costas Bouyioukos for
report/request.findpython::find_python_cmd
which is a little bit more
robust than the previous argparse::find_python_cmd
.interactive() == TRUE
then parse_args
will no longer quit(status=1)
after printing a help message
but will instead throw an error. argparse
will continue to
quit(status=1)
after printing a help message for
non-interactive Rscripts.parser$add_argument
for case when we specify
a default vector instead of scalar. Thanks Martin Diehl for bug
report.find_python_cmd
will now also look for a
python2.7
binary.