Compare commits

...

82 Commits

Author SHA1 Message Date
Matt Martz 22210ca352
Python 3.10 support 2021-07-07 14:50:15 -05:00
Matt Martz 42e96b13dd
Bump to 2.1.3 2021-04-08 08:45:29 -05:00
Matt Martz cadc68b5ae
Handle case where ignoreids is empty or contains empty ids 2021-04-08 08:44:32 -05:00
Matt Martz db46af8bcd
Ensure we catch HTTP errors on upload/download. Fixes #752 2021-01-19 17:04:47 -06:00
Matt Martz c58ad3367b Bump release 2019-08-22 09:48:18 -05:00
Matt Martz 266e53c256 Fix proxy support. Fixes #610 2019-08-22 09:45:01 -05:00
Matt Martz 7ebb9965dd Ensure threads don't start before a position in the queue is available.
Fixes #628
2019-08-22 09:43:19 -05:00
Matt Martz 2658bd50b4 Bump devel version 2019-03-13 15:57:05 -05:00
Matt Martz 81bba6070c
Add support for py38 without deprecation warnings (#585)
* Add support for py38 without deprecation warnings

* Address Py2.5 issue

* Add py3.7 and 3.8

* xenial

* pypy trusty
2019-03-13 15:56:00 -05:00
Matt Martz 681cdf20a5 Re-enable python 2.4 and 2.5 testing 2019-03-12 11:01:31 -05:00
Matt Martz cdf6002865 Bump to 2.1.1 2019-03-12 10:58:17 -05:00
Matt Martz 9af203652b Python2.4/2.5 SSL support 2019-03-12 10:55:23 -05:00
Matt Martz 2d5a9ef364 Switch copyright from range, to date started 2019-03-11 10:03:12 -05:00
Matt Martz 3109fcf407 Update usage 2019-03-11 09:57:19 -05:00
Matt Martz 69ddff1a11 Disable py2.4/2.5 tests for now 2019-03-05 11:44:19 -06:00
Matt Martz fb0569946d Bump to 2.1.0 for upcoming release 2019-03-05 10:55:57 -06:00
Matt Martz f356c7b02d ensure ERROR doesn't print an empty string 2019-02-19 17:17:25 -06:00
Matt Martz 6cf43b2ff7 linting fix 2019-02-19 16:58:50 -06:00
Matt Martz 217ce8eff1 ssl.wrap_socket doesn't support server_hostname. See #572 2019-02-19 16:56:26 -06:00
Matt Martz b43334f1ec Switch from platform.system to platform.platform. Fixes #574 2019-02-19 16:38:15 -06:00
Matt Martz b0b826c870 Add the python version to the version output 2019-01-23 11:34:23 -06:00
Matt Martz 9ac1091eae Add debug support to show if a URL request resulted in a redirect 2019-01-23 11:34:00 -06:00
Matt Martz ca2250f700 Add functionality for single threaded testing. Fixes #571 2019-01-23 11:33:30 -06:00
Matt Martz ddb8db0c94 Fix install instructions with git clone. Fixes #566 2019-01-02 09:18:21 -06:00
Matt Martz 72bf53affa Fix linting error 2018-12-03 10:44:49 -06:00
liuxu a8a3265001 Fix python3 upload problem
In python3, if Content-length is not set,urllib.request.AbstractHTTPHandler::do_request_() will use "Transfer-encoding:chunked", which will cause HTTPUploader not to exit until timeout
2018-12-03 10:26:09 -06:00
Alex Ward b2654de410 Automatically resolve .best property (#514)
* automatically call get_best_server

* add back SpeedtestBestServerFailer exception
2018-12-03 10:20:28 -06:00
Matt Martz 72ed585c6f Bump to v2.0.2 2018-05-24 11:06:29 -05:00
Matt Martz 41e599f9c3 Ensure we are utilizing the context created by HTTPSConnection, or falling back to ssl. Fixes #517 2018-05-24 09:37:39 -05:00
Matt Martz c7530bb143 Bump to 2.0.1 for release 2018-05-23 15:26:20 -05:00
Matt Martz 4ceae77401 Handle virtualenv and tox versions for py2.6/3.3 2018-05-22 16:38:10 -05:00
Matt Martz 9e185e8f88 Properly handle older HTTPSConnection. Fixes #513 2018-05-22 15:28:00 -05:00
Matt Martz 9c2977acfc Gracefully handle XML parsing errors. Fixes #490 #491 2018-03-09 09:46:10 -06:00
Matt Martz f8aa20ecdf Move results.share() to ensure csv and json have access to it. Fixes #483 2018-02-20 14:59:08 -06:00
Matt Martz 8ff923b0fb Bump to 2.0.1a 2018-02-13 16:22:23 -06:00
Matt Martz 35c3ee20ed Exit with nicer error if lat/lon is not valid 2018-02-13 16:21:57 -06:00
Matt Martz 0a7823db7a Tested through 3.7 2018-02-05 16:33:07 -06:00
Matt Martz 27a8301192 Replace downloads badge with travis 2018-02-05 16:33:01 -06:00
Matt Martz ee2e647b9b Remove deprecated speedtest_cli.py 2018-02-05 16:25:59 -06:00
Matt Martz 831c079113 Bump for release 2018-02-05 16:17:03 -06:00
Matt Martz 4f4c1dd8d1 Update man page 2018-02-05 16:16:51 -06:00
Matt Martz 2c847a1849 Add some guard code for places where sys.stdout and stderr are replaced with some other incompatible object 2018-01-26 15:52:06 -06:00
Matt Martz e1bab1ab55 Only add terminal colors with DEBUG if stdout is a tty 2018-01-08 16:57:26 -06:00
Matt Martz 48a3d33ae4 Bump to beta 2018-01-03 09:16:51 -06:00
Matt Martz c16ffd4ae7 Catch OSError and EOFError while reading from gzip stream 2018-01-02 18:32:03 -06:00
Matt Martz 9848481d06 Use the printer everywhere, leaving print_ to only be used within printer 2018-01-02 18:22:16 -06:00
Matt Martz 4737a69f10 Add a few additional tests, specifically around --source 2018-01-02 17:16:52 -06:00
Matt Martz 6381ba3742 Eliminate SHUTDOWN_EVENT global 2018-01-02 16:07:46 -06:00
Matt Martz fa2e15ee08 Skipping test should be quiet 2017-12-11 09:36:03 -06:00
Matt Martz eab354603f Don't display ERROR: 2 when argparse exits with non-0 2017-12-11 09:35:41 -06:00
Matt Martz e80ccc4647 update README for usage changes 2017-11-23 10:30:31 -06:00
Matt Martz 5fbe593fc8 Get travis working properly again 2017-11-23 10:18:16 -06:00
Matt Martz f70cc86222 No bare except 2017-11-23 10:16:23 -06:00
Matt Martz 5c061da8e0 Move the majority of the csv_header functionality to SpeedtestResults 2017-11-23 10:16:23 -06:00
Matt Martz 4457fe9fb8 Support csv-delimiter for csv-header 2017-11-23 10:16:17 -06:00
Matt Martz b27f69d1ad Output a different message when only 1 server is provided 2017-11-23 10:15:48 -06:00
Matt Martz 5a9f82a20a Add additional information to machine parsable outputs 2017-11-23 10:15:46 -06:00
Matt Martz 3cb44f5630 Attempt to catch MemoryError if possible 2017-11-23 10:15:09 -06:00
Matt Martz 16054cc3bc Print errors to stderr 2017-11-23 10:15:09 -06:00
Matt Martz d9642b2047 Always flush in py2 print_ 2017-11-23 10:15:09 -06:00
Matt Martz f3a607feb2 Allow timeout to be a float 2017-11-23 10:15:09 -06:00
Matt Martz 6bfa5922c3 Add option to exclude servers, and allow --server and --exclude to be specified multiple times 2017-11-23 10:15:09 -06:00
Matt Martz ca72d40033 Create a getter for Speedtest.best to raise an exception is get_best_server has not found a best server 2017-11-23 10:15:09 -06:00
Matt Martz 3ebb9734a2 Indicate speedtest-cli supports python 3.6, and ensure py3.2 has an appropriate setuptools version 2017-11-23 10:15:09 -06:00
Matt Martz 8854d82049 More and better debugging 2017-11-23 10:15:09 -06:00
Matt Martz f2a97baf1e Revert "Test failing --source"
This reverts commit be7d7f6a1c2448cc60342142a405945817817115.
2017-11-23 10:15:09 -06:00
Matt Martz 6531677346 Test failing --source 2017-11-23 10:15:09 -06:00
Matt Martz 6556be190a Switch to using matrix for travis 2017-11-23 10:15:09 -06:00
Matt Martz 2fe34ecf4e Remove debug print 2017-11-23 10:15:09 -06:00
Matt Martz 0e585cbf64 Docstrings and version bump 2017-11-23 10:15:07 -06:00
Matt Martz 2fe369fdf8 Remove SCHEME global 2017-11-23 10:14:35 -06:00
Matt Martz b33c7533df flake8 fixes 2017-11-23 10:14:35 -06:00
Matt Martz fe864f6dce Use vendored create_connection when socket doesn't have it, or socket.create_connection is too old 2017-11-23 10:14:35 -06:00
Matt Martz 10b3b09f02 Don't override socket.socket for binding, eliminiate globals SOURCE and USER_AGENT 2017-11-23 10:14:35 -06:00
Matt Martz 20e5d12a5c Support csv-delimiter for csv-header 2017-10-16 09:28:35 -05:00
Matt Martz 6603954e45 Bump to v1.0.6 2017-04-25 11:49:26 -05:00
Matt Martz e982830350 Revert "Be consistent, use the shorter var"
This reverts commit 3c1c9d3179.
2017-04-25 10:52:40 -05:00
Matt Martz 2c89c53a79 Switch upload pre-allocation to true, but allow disabling 2017-04-25 10:34:20 -05:00
Matt Martz 401c469991 Do better calculations of the number of uploads per size to perform 2017-04-25 10:08:14 -05:00
Matt Martz 3c1c9d3179 Be consistent, use the shorter var 2017-04-25 10:07:34 -05:00
Matt Martz e2f815618b Be consistent, explicitly instantiate all exceptions 2017-04-25 10:07:05 -05:00
Matt Martz 955a756c96 Ensure to specify Z for UTC in iso8601 date. Fixes #388 2017-04-24 13:32:35 -05:00
7 changed files with 892 additions and 298 deletions

View File

@ -1,7 +1,6 @@
language: python language: python
sudo: required
python: dist: xenial
- 2.7
addons: addons:
apt: apt:
@ -11,26 +10,52 @@ addons:
- python2.4 - python2.4
- python2.5 - python2.5
- python2.6 - python2.6
- pypy - python3.2
- python3.3
env: matrix:
- TOXENV=py24 include:
- TOXENV=py25 - python: 2.7
- TOXENV=py26 env: TOXENV=flake8
- TOXENV=py27 - python: 2.7
- TOXENV=py32 env: TOXENV=py24
- TOXENV=py33 - python: 2.7
- TOXENV=py34 env: TOXENV=py25
- TOXENV=py35 - python: 2.7
- TOXENV=pypy env: TOXENV=py26
- TOXENV=flake8 - python: 2.7
env: TOXENV=py27
- python: 2.7
env: TOXENV=py32
- python: 2.7
env: TOXENV=py33
- python: 3.4
env: TOXENV=py34
- python: 3.5
env: TOXENV=py35
- python: 3.6
env: TOXENV=py36
- python: 3.7
env: TOXENV=py37
- python: 3.8-dev
env: TOXENV=py38
- python: pypy
env: TOXENV=pypy
dist: trusty
before_install:
- if [[ $(echo "$TOXENV" | egrep -c "py35") != 0 ]]; then pyenv global system 3.5; fi;
install: install:
- if [[ $(echo "$TOXENV" | egrep -c "(py2[45]|py3[12])") != 0 ]]; then pip install virtualenv==1.7.2 tox==1.3; fi; - if [[ $(echo "$TOXENV" | egrep -c "py32") != 0 ]]; then pip install setuptools==17.1.1; fi;
- if [[ $(echo "$TOXENV" | egrep -c "(py2[45]|py3[12])") == 0 ]]; then pip install tox; fi; - if [[ $(echo "$TOXENV" | egrep -c "(py2[45]|py3[12])") != 0 ]]; then pip install virtualenv==1.7.2 tox==1.3; fi;
- if [[ $(echo "$TOXENV" | egrep -c "(py26|py33)") != 0 ]]; then pip install virtualenv==15.2.0 tox==2.9.1; fi;
- if [[ $(echo "$TOXENV" | egrep -c "(py2[456]|py3[123])") == 0 ]]; then pip install tox; fi;
script: script:
- tox - tox
notifications: notifications:
email: email:

View File

@ -7,9 +7,9 @@ speedtest.net
.. image:: https://img.shields.io/pypi/v/speedtest-cli.svg .. image:: https://img.shields.io/pypi/v/speedtest-cli.svg
:target: https://pypi.python.org/pypi/speedtest-cli/ :target: https://pypi.python.org/pypi/speedtest-cli/
:alt: Latest Version :alt: Latest Version
.. image:: https://img.shields.io/pypi/dm/speedtest-cli.svg .. image:: https://img.shields.io/travis/sivel/speedtest-cli.svg
:target: https://pypi.python.org/pypi/speedtest-cli/ :target: https://pypi.python.org/pypi/speedtest-cli/
:alt: Downloads :alt: Travis
.. image:: https://img.shields.io/pypi/l/speedtest-cli.svg .. image:: https://img.shields.io/pypi/l/speedtest-cli.svg
:target: https://pypi.python.org/pypi/speedtest-cli/ :target: https://pypi.python.org/pypi/speedtest-cli/
:alt: License :alt: License
@ -17,7 +17,7 @@ speedtest.net
Versions Versions
-------- --------
speedtest-cli works with Python 2.4-3.5 speedtest-cli works with Python 2.4-3.7
.. 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/
@ -51,7 +51,8 @@ or
:: ::
git clone https://github.com/sivel/speedtest-cli.git git clone https://github.com/sivel/speedtest-cli.git
python speedtest-cli/setup.py install cd speedtest-cli
python setup.py install
Just download (Like the way it used to be) Just download (Like the way it used to be)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -74,11 +75,12 @@ Usage
:: ::
$ speedtest-cli -h $ speedtest-cli -h
usage: speedtest-cli [-h] [--no-download] [--no-upload] [--bytes] [--share] usage: speedtest-cli [-h] [--no-download] [--no-upload] [--single] [--bytes]
[--simple] [--csv] [--csv-delimiter CSV_DELIMITER] [--share] [--simple] [--csv]
[--csv-header] [--json] [--list] [--server SERVER] [--csv-delimiter CSV_DELIMITER] [--csv-header] [--json]
[--list] [--server SERVER] [--exclude EXCLUDE]
[--mini MINI] [--source SOURCE] [--timeout TIMEOUT] [--mini MINI] [--source SOURCE] [--timeout TIMEOUT]
[--secure] [--version] [--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.
-------------------------------------------------------------------------- --------------------------------------------------------------------------
@ -88,6 +90,8 @@ Usage
-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
simulates a typical file transfer.
--bytes Display values in bytes instead of bits. Does not --bytes Display values in bytes instead of bits. Does not
affect the image generated by --share, nor output from affect the image generated by --share, nor output from
--json or --csv --json or --csv
@ -106,12 +110,19 @@ Usage
affected by --bytes affected by --bytes
--list Display a list of speedtest.net servers sorted by --list Display a list of speedtest.net servers sorted by
distance distance
--server SERVER Specify a server ID to test against --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 insufficient memory, use this
option to avoid a MemoryError
--version Show the version number and exit --version Show the version number and exit

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Copyright 2012-2016 Matt Martz # Copyright 2012 Matt Martz
# All Rights Reserved. # All Rights Reserved.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may # Licensed under the Apache License, Version 2.0 (the "License"); you may
@ -66,7 +66,7 @@ setup(
author_email='matt@sivel.net', author_email='matt@sivel.net',
url='https://github.com/sivel/speedtest-cli', url='https://github.com/sivel/speedtest-cli',
license='Apache License, Version 2.0', license='Apache License, Version 2.0',
py_modules=['speedtest', 'speedtest_cli'], py_modules=['speedtest'],
entry_points={ entry_points={
'console_scripts': [ 'console_scripts': [
'speedtest=speedtest:main', 'speedtest=speedtest:main',
@ -90,5 +90,10 @@ setup(
'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
] ]
) )

View File

@ -1,4 +1,4 @@
.TH "speedtest-cli" 1 "2014-04-23" "speedtest-cli" .TH "speedtest-cli" 1 "2018-01-05" "speedtest-cli"
.SH NAME .SH NAME
speedtest\-cli \- Command line interface for testing internet bandwidth using speedtest.net speedtest\-cli \- Command line interface for testing internet bandwidth using speedtest.net
.SH SYNOPSIS .SH SYNOPSIS
@ -23,14 +23,29 @@ Displays usage for the tool.
.B Options .B Options
\fB\-\-no\-download\fR
.RS
Do not perform download test
.RE
\fB\-\-no\-upload\fR
.RS
Do not perform upload test
.RE
\fB\-\-single\fR
.RS
Only use a single connection instead of multiple. This simulates a typical file transfer.
.RE
\fB\-\-bytes\fR \fB\-\-bytes\fR
.RS .RS
Display values in bytes instead of bits. Does not affect the image generated by \-\-share Display values in bytes instead of bits. Does not affect the image generated by \-\-share, nor output from \-\-json or \-\-csv
.RE .RE
\fB\-\-share\fR \fB\-\-share\fR
.RS .RS
Generate and provide a URL to the speedtest.net share results image Generate and provide a URL to the speedtest.net share results image, not displayed with \-\-csv
.RE .RE
\fB\-\-simple\fR \fB\-\-simple\fR
@ -43,12 +58,12 @@ Suppress verbose output, only show basic information
Suppress verbose output, only show basic information in CSV format. Speeds listed in bit/s and not affected by \-\-bytes Suppress verbose output, only show basic information in CSV format. Speeds listed in bit/s and not affected by \-\-bytes
.RE .RE
\fB\-\-csv-delimiter CSV_DELIMITER\fR \fB\-\-csv\-delimiter CSV_DELIMITER\fR
.RS .RS
Single character delimiter to use in CSV output. Default "," Single character delimiter to use in CSV output. Default ","
.RE .RE
\fB\-\-csv-header\fR \fB\-\-csv\-header\fR
.RS .RS
Print CSV headers Print CSV headers
.RE .RE
@ -65,7 +80,12 @@ Display a list of speedtest.net servers sorted by distance
\fB\-\-server SERVER\fR \fB\-\-server SERVER\fR
.RS .RS
Specify a server ID to test against Specify a server ID to test against. Can be supplied multiple times
.RE
\fB\-\-exclude EXCLUDE\fR
.RS
Exclude a server from selection. Can be supplied multiple times
.RE .RE
\fB\-\-mini MINI\fR \fB\-\-mini MINI\fR
@ -88,6 +108,11 @@ HTTP timeout in seconds. Default 10
Use HTTPS instead of HTTP when communicating with speedtest.net operated servers Use HTTPS instead of HTTP when communicating with speedtest.net operated servers
.RE .RE
\fB\-\-no\-pre\-allocate\fR
.RS
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
.RE
\fB\-\-version\fR \fB\-\-version\fR
.RS .RS
Show the version number and exit Show the version number and exit

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Copyright 2012-2016 Matt Martz # Copyright 2018 Matt Martz
# All Rights Reserved. # All Rights Reserved.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may # Licensed under the Apache License, Version 2.0 (the "License"); you may
@ -15,20 +15,23 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import warnings import sys
import subprocess
DEPRECATED_MSG = ('The file speedtest_cli.py has been deprecated in favor of ' cmd = [sys.executable, 'speedtest.py', '--source', '127.0.0.1']
'speedtest.py\nand is available for download at:\n\n'
'https://raw.githubusercontent.com/sivel/speedtest-cli/'
'master/speedtest.py')
p = subprocess.Popen(
cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
if __name__ == '__main__': stdout, stderr = p.communicate()
raise SystemExit(DEPRECATED_MSG)
else: if p.returncode != 1:
try: raise SystemExit('%s did not fail with exit code 1' % ' '.join(cmd))
from speedtest import *
except ImportError: if 'Invalid argument'.encode() not in stderr:
raise SystemExit(DEPRECATED_MSG) raise SystemExit(
else: '"Invalid argument" not found in stderr:\n%s' % stderr.decode()
warnings.warn(DEPRECATED_MSG, UserWarning) )

View File

@ -6,6 +6,8 @@ commands =
{envpython} -V {envpython} -V
{envpython} -m compileall speedtest.py {envpython} -m compileall speedtest.py
{envpython} speedtest.py {envpython} speedtest.py
{envpython} speedtest.py --source 172.17.0.1
{envpython} tests/scripts/source.py
[testenv:flake8] [testenv:flake8]
basepython=python basepython=python
@ -19,3 +21,5 @@ commands =
pypy -V pypy -V
pypy -m compileall speedtest.py pypy -m compileall speedtest.py
pypy speedtest.py pypy speedtest.py
pypy speedtest.py --source 172.17.0.1
pypy tests/scripts/source.py