Merge 0621c29189 into 22210ca352
				
					
				
			This commit is contained in:
		
						commit
						44bb7c036f
					
				
							
								
								
									
										61
									
								
								README.rst
								
								
								
								
							
							
						
						
									
										61
									
								
								README.rst
								
								
								
								
							|  | @ -17,7 +17,7 @@ speedtest.net | |||
| Versions | ||||
| -------- | ||||
| 
 | ||||
| speedtest-cli works with Python 2.4-3.7 | ||||
| speedtest-cli works with Python 2.4-3.12 | ||||
| 
 | ||||
| .. image:: https://img.shields.io/pypi/pyversions/speedtest-cli.svg | ||||
|         :target: https://pypi.python.org/pypi/speedtest-cli/ | ||||
|  | @ -75,54 +75,37 @@ Usage | |||
| :: | ||||
| 
 | ||||
|     $ speedtest-cli -h | ||||
|     usage: speedtest-cli [-h] [--no-download] [--no-upload] [--single] [--bytes] | ||||
|                          [--share] [--simple] [--csv] | ||||
|                          [--csv-delimiter CSV_DELIMITER] [--csv-header] [--json] | ||||
|                          [--list] [--server SERVER] [--exclude EXCLUDE] | ||||
|                          [--mini MINI] [--source SOURCE] [--timeout TIMEOUT] | ||||
|                          [--secure] [--no-pre-allocate] [--version] | ||||
| 
 | ||||
|     Command line interface for testing internet bandwidth using speedtest.net. | ||||
|     -------------------------------------------------------------------------- | ||||
|     usage: speedtest.py [-h] [--no-download] [--no-upload] [--single] [--bytes] [--units {Mibyte,Mbyte,Mibit,Mbit,Kibyte,Kbyte,Kibit,Kbit,byte,bit}] [--share] | ||||
|                         [--simple] [--csv] [--csv-delimiter CSV_DELIMITER] [--csv-header] [--json] [--list] [--server SERVER] [--exclude EXCLUDE] [--mini MINI] | ||||
|                         [--source SOURCE] [--timeout TIMEOUT] [--secure] [--no-pre-allocate] [--version] | ||||
|      | ||||
|     Command line interface for testing internet bandwidth using speedtest.net. -------------------------------------------------------------------------- | ||||
|     https://github.com/sivel/speedtest-cli | ||||
| 
 | ||||
|     optional arguments: | ||||
|      | ||||
|     options: | ||||
|       -h, --help            show this help message and exit | ||||
|       --no-download         Do not perform download test | ||||
|       --no-upload           Do not perform upload test | ||||
|       --single              Only use a single connection instead of multiple. This | ||||
|                             simulates a typical file transfer. | ||||
|       --bytes               Display values in bytes instead of bits. Does not | ||||
|                             affect the image generated by --share, nor output from | ||||
|                             --json or --csv | ||||
|       --share               Generate and provide a URL to the speedtest.net share | ||||
|                             results image, not displayed with --csv | ||||
|       --single              Only use a single connection instead of multiple. This simulates a typical file transfer. | ||||
|       --bytes               Display values in bytes instead of bits. Does not affect the image generated by --share, nor output from --json or --csv | ||||
|       --units {Mibyte,Mbyte,Mibit,Mbit,Kibyte,Kbyte,Kibit,Kbit,byte,bit} | ||||
|                             Determines which units to display values in. Does not affect the image generated by --share, nor output from --json or --csv | ||||
|       --share               Generate and provide a URL to the speedtest.net share results image, not displayed with --csv | ||||
|       --simple              Suppress verbose output, only show basic information | ||||
|       --csv                 Suppress verbose output, only show basic information | ||||
|                             in CSV format. Speeds listed in bit/s and not affected | ||||
|                             by --bytes | ||||
|       --csv                 Suppress verbose output, only show basic information in CSV format. Speeds listed in bit/s and not affected by --bytes or --units | ||||
|       --csv-delimiter CSV_DELIMITER | ||||
|                             Single character delimiter to use in CSV output. | ||||
|                             Default "," | ||||
|                             Single character delimiter to use in CSV output. Default "," | ||||
|       --csv-header          Print CSV headers | ||||
|       --json                Suppress verbose output, only show basic information | ||||
|                             in JSON format. Speeds listed in bit/s and not | ||||
|                             affected by --bytes | ||||
|       --list                Display a list of speedtest.net servers sorted by | ||||
|                             distance | ||||
|       --server SERVER       Specify a server ID to test against. Can be supplied | ||||
|                             multiple times | ||||
|       --exclude EXCLUDE     Exclude a server from selection. Can be supplied | ||||
|                             multiple times | ||||
|       --json                Suppress verbose output, only show basic information in JSON format. Speeds listed in bit/s and not affected by --bytes or --units | ||||
|       --list                Display a list of speedtest.net servers sorted by distance | ||||
|       --server SERVER       Specify a server ID to test against. Can be supplied multiple times | ||||
|       --exclude EXCLUDE     Exclude a server from selection. Can be supplied multiple times | ||||
|       --mini MINI           URL of the Speedtest Mini server | ||||
|       --source SOURCE       Source IP address to bind to | ||||
|       --timeout TIMEOUT     HTTP timeout in seconds. Default 10 | ||||
|       --secure              Use HTTPS instead of HTTP when communicating with | ||||
|                             speedtest.net operated servers | ||||
|       --no-pre-allocate     Do not pre allocate upload data. Pre allocation is | ||||
|                             enabled by default to improve upload performance. To | ||||
|                             support systems with insufficient memory, use this | ||||
|                             option to avoid a MemoryError | ||||
|       --secure              Use HTTPS instead of HTTP when communicating with speedtest.net operated servers | ||||
|       --no-pre-allocate     Do not pre allocate upload data. Pre allocation is enabled by default to improve upload performance. To support systems with | ||||
|                             insufficient memory, use this option to avoid a MemoryError | ||||
|       --version             Show the version number and exit | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										48
									
								
								speedtest.py
								
								
								
								
							
							
						
						
									
										48
									
								
								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: | ||||
|  | @ -957,7 +969,7 @@ class SpeedtestResults(object): | |||
|         self.client = client or {} | ||||
| 
 | ||||
|         self._share = None | ||||
|         self.timestamp = '%sZ' % datetime.datetime.utcnow().isoformat() | ||||
|         self.timestamp = '%sZ' % datetime.datetime.now(datetime.UTC).isoformat() | ||||
|         self.bytes_received = 0 | ||||
|         self.bytes_sent = 0 | ||||
| 
 | ||||
|  | @ -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 args.bytes and 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