From 8fcd4a019ecbccd7525c690f5ca87cbebb2416b5 Mon Sep 17 00:00:00 2001 From: Windows81 Date: Wed, 28 Jul 2021 22:34:52 +0000 Subject: [PATCH 1/4] Added additional unit flexibility for download/upload speeds. --- speedtest.py | 46 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/speedtest.py b/speedtest.py index 186b529..2e4f06c 100755 --- a/speedtest.py +++ b/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) From f317af3bf42729616b538e6227cdca29c1cb1578 Mon Sep 17 00:00:00 2001 From: Windows81 Date: Sun, 19 Sep 2021 16:47:03 +0000 Subject: [PATCH 2/4] Fixed cases where --bytes and --units are both not supplied. --- speedtest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/speedtest.py b/speedtest.py index 2e4f06c..7a5cc60 100755 --- a/speedtest.py +++ b/speedtest.py @@ -1865,7 +1865,7 @@ def shell(): raise SpeedtestCLIError('Cannot supply both --no-download and ' '--no-upload') - if not args.bytes and not args.units: + if args.bytes and args.units: raise SpeedtestCLIError('Cannot supply both --bytes and ' '--units') From 12d868f8d9420607f5f673bc77d8a28190376677 Mon Sep 17 00:00:00 2001 From: Windows81 Date: Fri, 12 Apr 2024 22:19:18 +0000 Subject: [PATCH 3/4] 2024-04-12T22:19Z --- speedtest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/speedtest.py b/speedtest.py index 7a5cc60..b5a37b5 100755 --- a/speedtest.py +++ b/speedtest.py @@ -969,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 From 0621c291896ab32602afbdd5f58ea09cdcd15499 Mon Sep 17 00:00:00 2001 From: VisualPlugin Date: Wed, 16 Oct 2024 02:39:22 +0000 Subject: [PATCH 4/4] Update README.rst --- README.rst | 61 ++++++++++++++++++++---------------------------------- 1 file changed, 22 insertions(+), 39 deletions(-) diff --git a/README.rst b/README.rst index 7a98f31..528ce57 100644 --- a/README.rst +++ b/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