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.