def test_decode_input(): encoded_inputs = [str("/home/user/темп"), str("22少女時代22")] for encoded_input in encoded_inputs: decoded_input = utils.decode_input(encoded_input) assert isinstance(decoded_input, six.text_type), "Decoded input is not a text type."
def test_decode_input(): encoded_inputs = [ str("/home/user/темп"), str("22少女時代22")] for encoded_input in encoded_inputs: decoded_input = utils.decode_input(encoded_input) assert isinstance(decoded_input, six.text_type), "Decoded input is not a text type."
def parse_args(args=None): """ Parse the arguments/options passed to the program on the command line. """ parser = argparse.ArgumentParser( description='Download Coursera.org lecture material and resources.') # Basic options group_basic = parser.add_argument_group('Basic options') group_basic.add_argument('class_names', action='store', nargs='+', help='name(s) of the class(es) (e.g. "ml-005")') group_basic.add_argument('-u', '--username', dest='username', action='store', default=None, help='coursera username') group_basic.add_argument('-p', '--password', dest='password', action='store', default=None, help='coursera password') group_basic.add_argument('--path', dest='path', action='store', default='', help='path to where to save the file. (Default: current directory)') # Advanced authentication group_adv_auth = parser.add_argument_group('Advanced authentication options') group_adv_auth.add_argument('-c', '--cookies_file', dest='cookies_file', action='store', default=None, help='full path to the cookies.txt file') group_adv_auth.add_argument('-n', '--netrc', dest='netrc', nargs='?', action='store', const=True, default=False, help='use netrc for reading passwords, uses default' ' location if no path specified') group_adv_auth.add_argument('-k', '--keyring', dest='use_keyring', action='store_true', default=False, help='use keyring provided by operating system to ' 'save and load credentials') group_adv_auth.add_argument('--clear-cache', dest='clear_cache', action='store_true', default=False, help='clear cached cookies') # Debug options group_debug = parser.add_argument_group('Debugging options') group_debug.add_argument('--skip-download', dest='skip_download', action='store_true', default=False, help='for debugging: skip actual downloading of files') group_debug.add_argument('--debug', dest='debug', action='store_true', default=False, help='print lots of debug information') group_debug.add_argument('--version', dest='version', action='store_true', default=False, help='display version and exit') group_debug.add_argument('-l', # FIXME: remove short option from rarely used ones '--process_local_page', dest='local_page', help='uses or creates local cached version of syllabus' ' page') # Final parsing of the options args = parser.parse_args(args) # Initialize the logging system first so that other functions # can use it right away if args.debug: logging.basicConfig(level=logging.DEBUG, format='%(name)s[%(funcName)s] %(message)s') else: logging.basicConfig(level=logging.INFO, format='%(message)s') # show version? if args.version: # we use print (not logging) function because version may be used # by some external script while logging may output excessive information print(__version__) sys.exit(0) # decode path so we can work properly with cyrillic symbols on different # versions on Python args.path = decode_input(args.path) # check arguments if args.use_keyring and args.password: logging.warning('--keyring and --password cannot be specified together') args.use_keyring = False if args.use_keyring and not keyring: logging.warning('The python module `keyring` not found.') args.use_keyring = False if args.cookies_file and not os.path.exists(args.cookies_file): logging.error('Cookies file not found: %s', args.cookies_file) sys.exit(1) if not args.cookies_file: try: args.username, args.password = get_credentials( username=args.username, password=args.password, netrc=args.netrc, use_keyring=args.use_keyring) except CredentialsError as e: logging.error(e) sys.exit(1) return args