Metadata-Version: 2.1
Name: typed-args
Version: 0.4.1a1
Summary: argparse with type annotations
Home-page: https://github.com/SunDoge/typedargs
Author: SunDoge
Author-email: 384813529@qq.com
License: UNKNOWN
Description: # TypedArgs
        
        [![Build Status](https://travis-ci.org/SunDoge/typed-args.svg?branch=master)](https://travis-ci.org/SunDoge/typed-args)
        [![Version](https://img.shields.io/pypi/v/typed-args)](https://pypi.org/project/typed-args/)
        
        Strong type args.
        
        This project is inspired by [TeXitoi/structopt](https://github.com/TeXitoi/structopt).
        
        ## Install
        
        From pypi
        
        ```bash
        pip install typed-args
        ```
        
        If you want to use it on python 3.5 and 3.6 please install `dataclasses`:
        
        ```bash
        pip install dataclasses
        ```
        
        ## Usage
        
        
        ```python
        import argparse
        from dataclasses import dataclass
        
        from typed_args import TypedArgs, add_argument
        
        """
        argparse
        """
        parser = argparse.ArgumentParser(prog='PROG')
        parser.add_argument(
            'data', metavar='DIR', type=str,
            help='path to dataset'
        )
        parser.add_argument(
            '-a', '--arch', metavar='ARCH', default='resnet18', type=str,
            help='model architecture (default: resnet18)'
        )
        parser.add_argument(
            '-j', '--workers', default=4, metavar='N', type=int, dest='num_workers',
            help='number of data loading workers (default: 4)'
        )
        
        """
        TypedArgs
        """
        
        
        @dataclass
        class Args(TypedArgs):
            data: str = add_argument(metavar='DIR', help='path to dataset')
            arch: str = add_argument('-a', '--arch', metavar='ARCH', default='resnet18',
                                     help='model architecture (default: resnet18)')
            num_workers: int = add_argument('-j', '--workers', default=4, metavar='N',
                                            help='number of data loading workers (default: 4)')
        
            def parser_factory(self):
                return argparse.ArgumentParser('PROG')
        
        
        def test_args():
            data = '/path/to/dataset'
            arch = 'resnet50'
            num_workers = 8
        
            argv = f'{data} -a {arch} --workers {num_workers}'.split()
        
            """
            from_args = parse_args, from_known_args = parse_known_args
            """
            typed_args = Args.from_args(argv)
            args = parser.parse_args(argv)
        
            assert args.arch == typed_args.arch
            assert args.data == typed_args.data
            assert args.num_workers == typed_args.num_workers
        
        
        if __name__ == "__main__":
            test_args()
        ```
        
        ## Limitation
        
        Currently, we don't support `add_group` and `sub parser`.
Platform: UNKNOWN
Description-Content-Type: text/markdown
