Merge 0621c29189 into 22210ca352
				
					
				
			This commit is contained in:
		
						commit
						44bb7c036f
					
				
							
								
								
									
										57
									
								
								README.rst
								
								
								
								
							
							
						
						
									
										57
									
								
								README.rst
								
								
								
								
							|  | @ -17,7 +17,7 @@ speedtest.net | ||||||
| Versions | 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 | .. image:: https://img.shields.io/pypi/pyversions/speedtest-cli.svg | ||||||
|         :target: https://pypi.python.org/pypi/speedtest-cli/ |         :target: https://pypi.python.org/pypi/speedtest-cli/ | ||||||
|  | @ -75,54 +75,37 @@ Usage | ||||||
| :: | :: | ||||||
| 
 | 
 | ||||||
|     $ speedtest-cli -h |     $ speedtest-cli -h | ||||||
|     usage: speedtest-cli [-h] [--no-download] [--no-upload] [--single] [--bytes] |     usage: speedtest.py [-h] [--no-download] [--no-upload] [--single] [--bytes] [--units {Mibyte,Mbyte,Mibit,Mbit,Kibyte,Kbyte,Kibit,Kbit,byte,bit}] [--share] | ||||||
|                          [--share] [--simple] [--csv] |                         [--simple] [--csv] [--csv-delimiter CSV_DELIMITER] [--csv-header] [--json] [--list] [--server SERVER] [--exclude EXCLUDE] [--mini MINI] | ||||||
|                          [--csv-delimiter CSV_DELIMITER] [--csv-header] [--json] |                         [--source SOURCE] [--timeout TIMEOUT] [--secure] [--no-pre-allocate] [--version] | ||||||
|                          [--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. |     Command line interface for testing internet bandwidth using speedtest.net. -------------------------------------------------------------------------- | ||||||
|     -------------------------------------------------------------------------- |  | ||||||
|     https://github.com/sivel/speedtest-cli |     https://github.com/sivel/speedtest-cli | ||||||
|      |      | ||||||
|     optional arguments: |     options: | ||||||
|       -h, --help            show this help message and exit |       -h, --help            show this help message and exit | ||||||
|       --no-download         Do not perform download test |       --no-download         Do not perform download test | ||||||
|       --no-upload           Do not perform upload test |       --no-upload           Do not perform upload test | ||||||
|       --single              Only use a single connection instead of multiple. This |       --single              Only use a single connection instead of multiple. This simulates a typical file transfer. | ||||||
|                             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 | ||||||
|       --bytes               Display values in bytes instead of bits. Does not |       --units {Mibyte,Mbyte,Mibit,Mbit,Kibyte,Kbyte,Kibit,Kbit,byte,bit} | ||||||
|                             affect the image generated by --share, nor output from |                             Determines which units to display values in. Does not affect the image generated by --share, nor output from --json or --csv | ||||||
|                             --json or --csv |       --share               Generate and provide a URL to the speedtest.net share results image, not displayed with --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 |       --simple              Suppress verbose output, only show basic information | ||||||
|       --csv                 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 or --units | ||||||
|                             in CSV format. Speeds listed in bit/s and not affected |  | ||||||
|                             by --bytes |  | ||||||
|       --csv-delimiter CSV_DELIMITER |       --csv-delimiter CSV_DELIMITER | ||||||
|                             Single character delimiter to use in CSV output. |                             Single character delimiter to use in CSV output. Default "," | ||||||
|                             Default "," |  | ||||||
|       --csv-header          Print CSV headers |       --csv-header          Print CSV headers | ||||||
|       --json                Suppress verbose output, only show basic information |       --json                Suppress verbose output, only show basic information in JSON format. Speeds listed in bit/s and not affected by --bytes or --units | ||||||
|                             in JSON format. Speeds listed in bit/s and not |       --list                Display a list of speedtest.net servers sorted by distance | ||||||
|                             affected by --bytes |       --server SERVER       Specify a server ID to test against. Can be supplied multiple times | ||||||
|       --list                Display a list of speedtest.net servers sorted by |       --exclude EXCLUDE     Exclude a server from selection. Can be supplied multiple times | ||||||
|                             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 |       --mini MINI           URL of the Speedtest Mini server | ||||||
|       --source SOURCE       Source IP address to bind to |       --source SOURCE       Source IP address to bind to | ||||||
|       --timeout TIMEOUT     HTTP timeout in seconds. Default 10 |       --timeout TIMEOUT     HTTP timeout in seconds. Default 10 | ||||||
|       --secure              Use HTTPS instead of HTTP when communicating with |       --secure              Use HTTPS instead of HTTP when communicating with speedtest.net operated servers | ||||||
|                             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 | ||||||
|       --no-pre-allocate     Do not pre allocate upload data. Pre allocation is |                             insufficient memory, use this option to avoid a MemoryError | ||||||
|                             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 |       --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) | PY26PLUS = sys.version_info[:2] >= (2, 6) | ||||||
| PY32PLUS = sys.version_info[:2] >= (3, 2) | PY32PLUS = sys.version_info[:2] >= (3, 2) | ||||||
| PY310PLUS = sys.version_info[:2] >= (3, 10) | 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 | # Begin import game to handle Python 2 and Python 3 | ||||||
| try: | try: | ||||||
|  | @ -957,7 +969,7 @@ class SpeedtestResults(object): | ||||||
|         self.client = client or {} |         self.client = client or {} | ||||||
| 
 | 
 | ||||||
|         self._share = None |         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_received = 0 | ||||||
|         self.bytes_sent = 0 |         self.bytes_sent = 0 | ||||||
| 
 | 
 | ||||||
|  | @ -1733,11 +1745,14 @@ def parse_args(): | ||||||
|                         help='Only use a single connection instead of ' |                         help='Only use a single connection instead of ' | ||||||
|                              'multiple. This simulates a typical file ' |                              'multiple. This simulates a typical file ' | ||||||
|                              'transfer.') |                              'transfer.') | ||||||
|     parser.add_argument('--bytes', dest='units', action='store_const', |     parser.add_argument('--bytes', default=False, action='store_true', | ||||||
|                         const=('byte', 8), default=('bit', 1), |  | ||||||
|                         help='Display values in bytes instead of bits. Does ' |                         help='Display values in bytes instead of bits. Does ' | ||||||
|                              'not affect the image generated by --share, nor ' |                              'not affect the image generated by --share, nor ' | ||||||
|                              'output from --json or --csv') |                              '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', |     parser.add_argument('--share', action='store_true', | ||||||
|                         help='Generate and provide a URL to the speedtest.net ' |                         help='Generate and provide a URL to the speedtest.net ' | ||||||
|                              'share results image, not displayed with --csv') |                              'share results image, not displayed with --csv') | ||||||
|  | @ -1747,7 +1762,7 @@ def parse_args(): | ||||||
|     parser.add_argument('--csv', action='store_true', default=False, |     parser.add_argument('--csv', action='store_true', default=False, | ||||||
|                         help='Suppress verbose output, only show basic ' |                         help='Suppress verbose output, only show basic ' | ||||||
|                              'information in CSV format. Speeds listed in ' |                              '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, |     parser.add_argument('--csv-delimiter', default=',', type=PARSER_TYPE_STR, | ||||||
|                         help='Single character delimiter to use in CSV ' |                         help='Single character delimiter to use in CSV ' | ||||||
|                              'output. Default ","') |                              'output. Default ","') | ||||||
|  | @ -1756,7 +1771,7 @@ def parse_args(): | ||||||
|     parser.add_argument('--json', action='store_true', default=False, |     parser.add_argument('--json', action='store_true', default=False, | ||||||
|                         help='Suppress verbose output, only show basic ' |                         help='Suppress verbose output, only show basic ' | ||||||
|                              'information in JSON format. Speeds listed in ' |                              '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', |     parser.add_argument('--list', action='store_true', | ||||||
|                         help='Display a list of speedtest.net servers ' |                         help='Display a list of speedtest.net servers ' | ||||||
|                              'sorted by distance') |                              'sorted by distance') | ||||||
|  | @ -1850,6 +1865,10 @@ def shell(): | ||||||
|         raise SpeedtestCLIError('Cannot supply both --no-download and ' |         raise SpeedtestCLIError('Cannot supply both --no-download and ' | ||||||
|                                 '--no-upload') |                                 '--no-upload') | ||||||
| 
 | 
 | ||||||
|  |     if args.bytes and args.units: | ||||||
|  |         raise SpeedtestCLIError('Cannot supply both --bytes and ' | ||||||
|  |                                 '--units') | ||||||
|  | 
 | ||||||
|     if len(args.csv_delimiter) != 1: |     if len(args.csv_delimiter) != 1: | ||||||
|         raise SpeedtestCLIError('--csv-delimiter must be a single character') |         raise SpeedtestCLIError('--csv-delimiter must be a single character') | ||||||
| 
 | 
 | ||||||
|  | @ -1864,6 +1883,13 @@ def shell(): | ||||||
|     if debug: |     if debug: | ||||||
|         DEBUG = True |         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: |     if args.simple or args.csv or args.json: | ||||||
|         quiet = True |         quiet = True | ||||||
|     else: |     else: | ||||||
|  | @ -1951,9 +1977,9 @@ def shell(): | ||||||
|             callback=callback, |             callback=callback, | ||||||
|             threads=(None, 1)[args.single] |             threads=(None, 1)[args.single] | ||||||
|         ) |         ) | ||||||
|         printer('Download: %0.2f M%s/s' % |         printer('Download: %0.2f %s/s' % | ||||||
|                 ((results.download / 1000.0 / 1000.0) / args.units[1], |                 (results.download / SIZEMAP[units], | ||||||
|                  args.units[0]), |                  units), | ||||||
|                 quiet) |                 quiet) | ||||||
|     else: |     else: | ||||||
|         printer('Skipping download test', quiet) |         printer('Skipping download test', quiet) | ||||||
|  | @ -1966,9 +1992,9 @@ def shell(): | ||||||
|             pre_allocate=args.pre_allocate, |             pre_allocate=args.pre_allocate, | ||||||
|             threads=(None, 1)[args.single] |             threads=(None, 1)[args.single] | ||||||
|         ) |         ) | ||||||
|         printer('Upload: %0.2f M%s/s' % |         printer('Upload: %0.2f %s/s' % | ||||||
|                 ((results.upload / 1000.0 / 1000.0) / args.units[1], |                 (results.upload / SIZEMAP[units], | ||||||
|                  args.units[0]), |                  units), | ||||||
|                 quiet) |                 quiet) | ||||||
|     else: |     else: | ||||||
|         printer('Skipping upload test', quiet) |         printer('Skipping upload test', quiet) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue