Support PEP 563 for HfArgumentParser (#15795)
* Support PEP 563 for HfArgumentParser * Fix issues for Python 3.6 * Add test for string literal annotation for HfArgumentParser * Remove wrong comment * Fix typo * Improve code readability Co-authored-by: Sylvain Gugger <35901082+sgugger@users.noreply.github.com> * Use `isinstance` to compare types to pass quality check * Fix style Co-authored-by: Sylvain Gugger <35901082+sgugger@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
93d3fd8645
commit
81643edda5
@@ -88,8 +88,17 @@ class RequiredExample:
|
||||
self.required_enum = BasicEnum(self.required_enum)
|
||||
|
||||
|
||||
@dataclass
|
||||
class StringLiteralAnnotationExample:
|
||||
foo: int
|
||||
required_enum: "BasicEnum" = field()
|
||||
opt: "Optional[bool]" = None
|
||||
baz: "str" = field(default="toto", metadata={"help": "help message"})
|
||||
foo_str: "List[str]" = list_field(default=["Hallo", "Bonjour", "Hello"])
|
||||
|
||||
|
||||
class HfArgumentParserTest(unittest.TestCase):
|
||||
def argparsersEqual(self, a: argparse.ArgumentParser, b: argparse.ArgumentParser) -> bool:
|
||||
def argparsersEqual(self, a: argparse.ArgumentParser, b: argparse.ArgumentParser):
|
||||
"""
|
||||
Small helper to check pseudo-equality of parsed arguments on `ArgumentParser` instances.
|
||||
"""
|
||||
@@ -211,6 +220,17 @@ class HfArgumentParserTest(unittest.TestCase):
|
||||
expected.add_argument("--required_enum", type=str, choices=["titi", "toto"], required=True)
|
||||
self.argparsersEqual(parser, expected)
|
||||
|
||||
def test_with_string_literal_annotation(self):
|
||||
parser = HfArgumentParser(StringLiteralAnnotationExample)
|
||||
|
||||
expected = argparse.ArgumentParser()
|
||||
expected.add_argument("--foo", type=int, required=True)
|
||||
expected.add_argument("--required_enum", type=str, choices=["titi", "toto"], required=True)
|
||||
expected.add_argument("--opt", type=string_to_bool, default=None)
|
||||
expected.add_argument("--baz", default="toto", type=str, help="help message")
|
||||
expected.add_argument("--foo_str", nargs="+", default=["Hallo", "Bonjour", "Hello"], type=str)
|
||||
self.argparsersEqual(parser, expected)
|
||||
|
||||
def test_parse_dict(self):
|
||||
parser = HfArgumentParser(BasicExample)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user