Added additional unit flexibility for download/upload speeds.
This commit is contained in:
		
							parent
							
								
									22210ca352
								
							
						
					
					
						commit
						8fcd4a019e
					
				
							
								
								
									
										46
									
								
								speedtest.py
								
								
								
								
							
							
						
						
									
										46
									
								
								speedtest.py
								
								
								
								
							| 
						 | 
				
			
			@ -59,6 +59,18 @@ PY25PLUS = sys.version_info[:2] >= (2, 5)
 | 
			
		|||
PY26PLUS = sys.version_info[:2] >= (2, 6)
 | 
			
		||||
PY32PLUS = sys.version_info[:2] >= (3, 2)
 | 
			
		||||
PY310PLUS = sys.version_info[:2] >= (3, 10)
 | 
			
		||||
SIZEMAP = {
 | 
			
		||||
    "Mibyte": 8. * 1024 * 1024,
 | 
			
		||||
    "Mbyte": 8. * 1000 * 1000,
 | 
			
		||||
    "Mibit": 1. * 1024 * 1024,
 | 
			
		||||
    "Mbit": 1. * 1000 * 1000,
 | 
			
		||||
    "Kibyte": 8. * 1024,
 | 
			
		||||
    "Kbyte": 8. * 1000,
 | 
			
		||||
    "Kibit": 1. * 1024,
 | 
			
		||||
    "Kbit": 1. * 1000,
 | 
			
		||||
    "byte": 8.,
 | 
			
		||||
    "bit": 1.,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Begin import game to handle Python 2 and Python 3
 | 
			
		||||
try:
 | 
			
		||||
| 
						 | 
				
			
			@ -1733,11 +1745,14 @@ def parse_args():
 | 
			
		|||
                        help='Only use a single connection instead of '
 | 
			
		||||
                             'multiple. This simulates a typical file '
 | 
			
		||||
                             'transfer.')
 | 
			
		||||
    parser.add_argument('--bytes', dest='units', action='store_const',
 | 
			
		||||
                        const=('byte', 8), default=('bit', 1),
 | 
			
		||||
    parser.add_argument('--bytes', default=False, action='store_true',
 | 
			
		||||
                        help='Display values in bytes instead of bits. Does '
 | 
			
		||||
                             'not affect the image generated by --share, nor '
 | 
			
		||||
                             'output from --json or --csv')
 | 
			
		||||
    parser.add_argument('--units', choices=tuple(SIZEMAP),
 | 
			
		||||
                        help='Determines which units to display values in. Does '
 | 
			
		||||
                             'not affect the image generated by --share, nor '
 | 
			
		||||
                             'output from --json or --csv')
 | 
			
		||||
    parser.add_argument('--share', action='store_true',
 | 
			
		||||
                        help='Generate and provide a URL to the speedtest.net '
 | 
			
		||||
                             'share results image, not displayed with --csv')
 | 
			
		||||
| 
						 | 
				
			
			@ -1747,7 +1762,7 @@ def parse_args():
 | 
			
		|||
    parser.add_argument('--csv', action='store_true', default=False,
 | 
			
		||||
                        help='Suppress verbose output, only show basic '
 | 
			
		||||
                             'information in CSV format. Speeds listed in '
 | 
			
		||||
                             'bit/s and not affected by --bytes')
 | 
			
		||||
                             'bit/s and not affected by --bytes or --units')
 | 
			
		||||
    parser.add_argument('--csv-delimiter', default=',', type=PARSER_TYPE_STR,
 | 
			
		||||
                        help='Single character delimiter to use in CSV '
 | 
			
		||||
                             'output. Default ","')
 | 
			
		||||
| 
						 | 
				
			
			@ -1756,7 +1771,7 @@ def parse_args():
 | 
			
		|||
    parser.add_argument('--json', action='store_true', default=False,
 | 
			
		||||
                        help='Suppress verbose output, only show basic '
 | 
			
		||||
                             'information in JSON format. Speeds listed in '
 | 
			
		||||
                             'bit/s and not affected by --bytes')
 | 
			
		||||
                             'bit/s and not affected by --bytes or --units')
 | 
			
		||||
    parser.add_argument('--list', action='store_true',
 | 
			
		||||
                        help='Display a list of speedtest.net servers '
 | 
			
		||||
                             'sorted by distance')
 | 
			
		||||
| 
						 | 
				
			
			@ -1850,6 +1865,10 @@ def shell():
 | 
			
		|||
        raise SpeedtestCLIError('Cannot supply both --no-download and '
 | 
			
		||||
                                '--no-upload')
 | 
			
		||||
 | 
			
		||||
    if not args.bytes and not args.units:
 | 
			
		||||
        raise SpeedtestCLIError('Cannot supply both --bytes and '
 | 
			
		||||
                                '--units')
 | 
			
		||||
 | 
			
		||||
    if len(args.csv_delimiter) != 1:
 | 
			
		||||
        raise SpeedtestCLIError('--csv-delimiter must be a single character')
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1864,6 +1883,13 @@ def shell():
 | 
			
		|||
    if debug:
 | 
			
		||||
        DEBUG = True
 | 
			
		||||
 | 
			
		||||
    if args.bytes:
 | 
			
		||||
        units = 'Mbyte'
 | 
			
		||||
    elif args.units:
 | 
			
		||||
        units = args.units
 | 
			
		||||
    else:
 | 
			
		||||
        units = 'Mbit'
 | 
			
		||||
 | 
			
		||||
    if args.simple or args.csv or args.json:
 | 
			
		||||
        quiet = True
 | 
			
		||||
    else:
 | 
			
		||||
| 
						 | 
				
			
			@ -1951,9 +1977,9 @@ def shell():
 | 
			
		|||
            callback=callback,
 | 
			
		||||
            threads=(None, 1)[args.single]
 | 
			
		||||
        )
 | 
			
		||||
        printer('Download: %0.2f M%s/s' %
 | 
			
		||||
                ((results.download / 1000.0 / 1000.0) / args.units[1],
 | 
			
		||||
                 args.units[0]),
 | 
			
		||||
        printer('Download: %0.2f %s/s' %
 | 
			
		||||
                (results.download / SIZEMAP[units],
 | 
			
		||||
                 units),
 | 
			
		||||
                quiet)
 | 
			
		||||
    else:
 | 
			
		||||
        printer('Skipping download test', quiet)
 | 
			
		||||
| 
						 | 
				
			
			@ -1966,9 +1992,9 @@ def shell():
 | 
			
		|||
            pre_allocate=args.pre_allocate,
 | 
			
		||||
            threads=(None, 1)[args.single]
 | 
			
		||||
        )
 | 
			
		||||
        printer('Upload: %0.2f M%s/s' %
 | 
			
		||||
                ((results.upload / 1000.0 / 1000.0) / args.units[1],
 | 
			
		||||
                 args.units[0]),
 | 
			
		||||
        printer('Upload: %0.2f %s/s' %
 | 
			
		||||
                (results.upload / SIZEMAP[units],
 | 
			
		||||
                 units),
 | 
			
		||||
                quiet)
 | 
			
		||||
    else:
 | 
			
		||||
        printer('Skipping upload test', quiet)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue