docs: def parse_args(options={}, *args, **kwds):
      """
      Parser of arguments.
  
      dict options {
          int min_items: Min of required items to fold one tuple. (default: 1)
          int max_items: Count of items in one tuple. Last `max_items-min_items`
              items is by default set to None. (default: 1)
          bool allow_dict: Flag allowing dictionary as first (and only one)
              argument or dictinary as **kwds. (default: False)
          bool allow_list: Flag allowing list as first (and only one) argument.
              (default: False)
      }
  
      Examples:
  
      calling with min_items=1, max_items=2, allow_dict=False:
          arg1, arg2              => ((arg1, None), (arg2, None))
          (arg1a, arg1b), arg2    => ((arg1a, arg1b), arg2, None))
          arg1=val1               => FAIL
          {key1: val1}            => FAIL
  
      calling with min_items=2, max_items=3, allow_dict=True:
          arg1, arg2              => ((arg1, arg2, None),)
          arg1, arg2, arg3        => ((arg1, arg2, arg3),)
          (arg1a, arg1b, arg1c)   => ((arg1a, arg1b, arg1c),)
          arg1=val1, arg2=val2    => ((arg1, val1, None), (arg2, val2, None))
          {key1: val1, key2: val2} => ((key1, val1, None), (key2, val2, None))
          (arg1a, arg1b), arg2a, arg2b => FAIL
      """
      parser_options = ParserOptions(options)
      parser_input = ParserInput(args, kwds)
  
      parser = Parser(parser_options, parser_input)
      parser.parse()
      return parser.output_data