Python ConfigArgParse是否忽略缩写选项?

Python ConfigArgParse是否忽略缩写选项?,python,configuration,argparse,Python,Configuration,Argparse,my config.ini: banana=original_banana 如果使用完整参数名运行,则会得到预期结果: python test_configargparse.py --banana new_banana new_banana 如果使用缩写参数名(--ban而不是--banana)运行,则会出现意外行为: python test_configargparse.py --ban new_banana original_banana test_configargparse.py

my config.ini:

banana=original_banana
如果使用完整参数名运行,则会得到预期结果:

python test_configargparse.py --banana new_banana
new_banana
如果使用缩写参数名(
--ban
而不是
--banana
)运行,则会出现意外行为:

python test_configargparse.py --ban new_banana 
original_banana
test_configargparse.py的代码

import os, configargparse as ap
parser = ap.ArgumentParser(default_config_files=["config.ini"])
parser.add_argument('--banana',dest='banana')
options = parser.parse_args()
print(options.banana)
版本=
ConfigArgParse==0.13.0
Python 2.7.10

这是一个错误还是我遗漏了一些明显的东西??这是一个非常成熟的模块中非常基本的功能

注意:此功能在中有明确的说明

如果缩写明确(前缀匹配唯一选项),则允许将长选项缩写为前缀


它看起来像是
ConfigArgParse
中的一个bug。当它从配置文件中加载选项时,它将丢弃任何已加载的选项

错误在于只检查完整的参数名,而不检查前缀

def already_on_command_line(existing_args_list, potential_command_line_args):
    """Utility method for checking if any of the potential_command_line_args is
    already present in existing_args.
    """
    return any(potential_arg in existing_args_list
               for potential_arg in potential_command_line_args)

这将在列表中留下两个参数副本,第二个是配置文件的值
ArgumentParser
接受第二个值。

@Chris\u Rands-我确实更改了标志
--ban new_banana
--banana new_banana
@Chris_Rands-注意argparse理解这个缩写,因为如果我只是键入一个未知选项
python test\u configargparse.py--bazinga new_banana
,我会得到
错误:无法识别的参数:--bazinga
好的,谢谢,我不知道这个,但是它看起来像是在Python3.5中添加的
allow_abbrev
,您使用的是2。7@Chris_Rands-谢谢,但我对禁用
allow_abbrev
不感兴趣,我感兴趣的是保持此功能不出现错误:)听起来像是
argparse
功能,
ConfigArgParse
不支持。文件里有什么吗?
def already_on_command_line(existing_args_list, potential_command_line_args):
    """Utility method for checking if any of the potential_command_line_args is
    already present in existing_args.
    """
    return any(potential_arg in existing_args_list
               for potential_arg in potential_command_line_args)