diff --git a/README.md b/README.md index 4d445ef..853c447 100644 --- a/README.md +++ b/README.md @@ -40,14 +40,14 @@ class MyParser(ArgumentParser): epilog = "Text at the bottom of help" # You can define arguments directly - filename = Argument() # positional argument - encoding = Argument(positional=False) # keyword argument '--encoding' + filename = Argument(positional=True) # positional argument + encoding = Argument() # keyword argument '--encoding' # or pass the 'name_or_flags' argument count = Argument("-c", "--count") verbose = Argument("-v", "--verbose", action="store_true") - # for boolean types annotations are also supported + # annotations are also supported for boolean arguments debug: bool = Argument() # --debug with action="store_true" parser: argparse.ArgumentParser = MyParser.get_parser() diff --git a/aaargs/__init__.py b/aaargs/__init__.py index bd4a339..95cd6b8 100644 --- a/aaargs/__init__.py +++ b/aaargs/__init__.py @@ -108,7 +108,7 @@ def __init__( nargs=None, required=None, type=None, - positional=None, + positional=False, ): """Replace the argparse.ArgumentParser.add_argument method. @@ -183,9 +183,6 @@ def __get__(self, instance, owner=None): ) self.name_or_flags = (f"--{self.name}",) - if self.positional is None: - self.positional = True - if len(self.name_or_flags) == 0: self.name_or_flags = (self.name if self.positional else f"--{self.name}",) diff --git a/pyproject.toml b/pyproject.toml index c9ab0f5..7ba7fd8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,10 +1,11 @@ [tool.poetry] name = "aaargs" -version = "0.1.1" -description = "autocompletion and argument parsing" +version = "0.1.2" +description = "attribute autocompletion and argument parsing" authors = ["zincwarecode "] license = "Apache-2.0" readme = "README.md" +keywords = ["argparse", "dataclass", "zninit"] [tool.poetry.dependencies] python = "^3.8" diff --git a/tests/test_aaargs.py b/tests/test_aaargs.py index 23f6e14..9d960de 100644 --- a/tests/test_aaargs.py +++ b/tests/test_aaargs.py @@ -7,7 +7,7 @@ def test_version(): - assert aaargs.__version__ == "0.1.1" + assert aaargs.__version__ == "0.1.2" def test_subinit_kwargs(): @@ -41,14 +41,14 @@ class Parser(ArgumentParser): def test_parse_args(): class Parser(ArgumentParser): description = "Lorem Ipsum" - filename = Argument() + filename = Argument(positional=True) args = Parser.parse_args(["myfile"]) assert args.filename == "myfile" class Parser(ArgumentParser): description = "Lorem Ipsum" - filename = Argument() + filename = Argument(positional=True) encoding = Argument("-e", "--encoding") args = Parser.parse_args(["myfile", "-e", "utf-8"]) @@ -61,7 +61,7 @@ class Parser(ArgumentParser): class Parser(ArgumentParser): description = "Lorem Ipsum" - filename = Argument() + filename = Argument(positional=True) e = Argument("-e") args = Parser.parse_args(["myfile", "-e", "utf-8"]) @@ -131,7 +131,7 @@ class Parser(ArgumentParser): @pytest.mark.parametrize("annotation", (bool, "bool")) # test future implementation. def test_store_true(annotation): class Parser(ArgumentParser): - name: str = Argument() + name: str = Argument(positional=True) verbose: annotation = Argument() parser = Parser.parse_args(["someone", "--verbose"]) @@ -151,13 +151,13 @@ class Parser(ArgumentParser): with pytest.raises(AttributeError): class Parser(ArgumentParser): - name: str = Argument() + name: str = Argument(positional=True) verbose: annotation = Argument("--verb") Parser.parse_args(["someone"]) class Parser(ArgumentParser): - name: str = Argument() + name: str = Argument(positional=True) verbose: annotation = Argument("--verbose") parser = Parser.parse_args(["someone", "--verbose"]) @@ -169,7 +169,7 @@ class Parser(ArgumentParser): assert parser.name == "someone" class Parser(ArgumentParser): - name: str = Argument() + name: str = Argument(positional=True) verbose: annotation = Argument(default=True) parser = Parser.parse_args(["someone"])