Merge pull request #3025 from Kriechi/py36

Python 3.5 is dead -- long live Python 3.6!
This commit is contained in:
Aldo Cortesi 2018-04-01 08:59:47 +12:00 committed by GitHub
commit 53827a36ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 21 additions and 49 deletions

View File

@ -22,9 +22,6 @@ matrix:
osx_image: xcode7.3
language: generic
env: TOXENV=py36 BDIST=1
- python: 3.5
env: TOXENV=py35
dist: precise
- python: 3.6
env: TOXENV=py36 BDIST=1 WHEEL=1
- python: 3.6
@ -61,9 +58,9 @@ install:
brew update || brew update
brew outdated pyenv || brew upgrade pyenv
eval "$(pyenv init -)"
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install --skip-existing 3.6.4
pyenv global 3.6.4
pyenv shell 3.6.4
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install --skip-existing 3.6.5
pyenv global 3.6.5
pyenv shell 3.6.5
fi
- pip install tox virtualenv setuptools

View File

@ -73,14 +73,14 @@ security considerations apply as for our binary packages.
## Installation on Linux via pip3
Please make sure to install Python 3.5 (or higher) and pip3 for your
Please make sure to install Python 3.6 (or higher) and pip3 for your
distribution. If your distribution does not provide a suitable Python
version, you can use [pyenv](https://github.com/yyuu/pyenv) to get a
recent Python environment.
{{< highlight bash >}}
sudo apt install python3-pip # Debian 8 or higher, Ubuntu 16.04 or higher
sudo dnf install python3-pip # Fedora 24 or higher
sudo apt install python3-pip # Debian 10 or higher, Ubuntu 17.10 or higher
sudo dnf install python3-pip # Fedora 26 or higher
sudo pacman -S python-pip # Arch Linux
{{< / highlight >}}
@ -98,7 +98,7 @@ sudo pip3 install mitmproxy
## Installation on Windows via pip3
First, install the latest version of Python 3.5 or higher from the
First, install the latest version of Python 3.6 or higher from the
[Python website](https://www.python.org/downloads/windows/). During
installation, make sure to select Add Python to PATH. There are no other
dependencies on Windows.

View File

@ -19,7 +19,7 @@ from mitmproxy.coretypes import basethread
socket_fileobject = socket.SocketIO
# workaround for https://bugs.python.org/issue29515
# Python 3.5 and 3.6 for Windows is missing a constant
# Python 3.6 for Windows is missing a constant
IPPROTO_IPV6 = getattr(socket, "IPPROTO_IPV6", 41)
EINTR = 4

View File

@ -2,11 +2,11 @@ from __future__ import print_function # this is here for the version check to w
import sys
if sys.version_info < (3, 5):
if sys.version_info < (3, 6):
# This must be before any mitmproxy imports, as they already break!
# Keep all other imports below with the 'noqa' magic comment.
print("#" * 49, file=sys.stderr)
print("# mitmproxy only supports Python 3.5 and above! #", file=sys.stderr)
print("# mitmproxy requires Python 3.6 or higher! #", file=sys.stderr)
print("#" * 49, file=sys.stderr)
import argparse # noqa

View File

@ -7,26 +7,17 @@ Type = typing.Union[
def sequence_type(typeinfo: typing.Type[typing.List]) -> Type:
"""Return the type of a sequence, e.g. typing.List"""
try:
return typeinfo.__args__[0] # type: ignore
except AttributeError: # Python 3.5.0
return typeinfo.__parameters__[0] # type: ignore
return typeinfo.__args__[0] # type: ignore
def tuple_types(typeinfo: typing.Type[typing.Tuple]) -> typing.Sequence[Type]:
"""Return the types of a typing.Tuple"""
try:
return typeinfo.__args__ # type: ignore
except AttributeError: # Python 3.5.x
return typeinfo.__tuple_params__ # type: ignore
return typeinfo.__args__ # type: ignore
def union_types(typeinfo: typing.Type[typing.Tuple]) -> typing.Sequence[Type]:
"""return the types of a typing.Union"""
try:
return typeinfo.__args__ # type: ignore
except AttributeError: # Python 3.5.x
return typeinfo.__union_params__ # type: ignore
return typeinfo.__args__ # type: ignore
def mapping_types(typeinfo: typing.Type[typing.Mapping]) -> typing.Tuple[Type, Type]:

View File

@ -27,7 +27,7 @@ Make sure run all these steps on the correct branch you want to create a new rel
- Create a new branch based of master for major versions.
- Update the dependencies in [alpine/requirements.txt](https://github.com/mitmproxy/docker-releases/commit/3d6a9989fde068ad0aea257823ac3d7986ff1613#diff-9b7e0eea8ae74688b1ac13ea080549ba)
* Creating a fresh venv, pip-installing the new wheel in there, and then export all packages:
* `virtualenv -ppython3.5 venv && source venv/bin/activate && pip install mitmproxy && pip freeze`
* `virtualenv -ppython3.6 venv && source venv/bin/activate && pip install mitmproxy && pip freeze`
- Tag the commit with the correct version
* `2.0.0` for new major versions
* `2.0.2` for new patch versions

View File

@ -35,7 +35,6 @@ setup(
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Security",

2
test/filename_matching.py Normal file → Executable file
View File

@ -1,3 +1,5 @@
#!/usr/bin/env python3
import os
import re
import glob

2
test/individual_coverage.py Normal file → Executable file
View File

@ -1,3 +1,5 @@
#!/usr/bin/env python3
import io
import contextlib
import os

View File

@ -1,6 +1,5 @@
import io
import typing
from unittest import mock
import pytest
from mitmproxy.utils import typecheck
@ -32,12 +31,6 @@ def test_check_union():
with pytest.raises(TypeError):
typecheck.check_option_type("foo", [], typing.Union[int, str])
# Python 3.5 only defines __union_params__
m = mock.Mock()
m.__str__ = lambda self: "typing.Union"
m.__union_params__ = (int,)
typecheck.check_option_type("foo", 42, m)
def test_check_tuple():
typecheck.check_option_type("foo", (42, "42"), typing.Tuple[int, str])
@ -50,12 +43,6 @@ def test_check_tuple():
with pytest.raises(TypeError):
typecheck.check_option_type("foo", ("42", 42), typing.Tuple[int, str])
# Python 3.5 only defines __tuple_params__
m = mock.Mock()
m.__str__ = lambda self: "typing.Tuple"
m.__tuple_params__ = (int, str)
typecheck.check_option_type("foo", (42, "42"), m)
def test_check_sequence():
typecheck.check_option_type("foo", [10], typing.Sequence[int])
@ -68,12 +55,6 @@ def test_check_sequence():
with pytest.raises(TypeError):
typecheck.check_option_type("foo", "foo", typing.Sequence[str])
# Python 3.5 only defines __parameters__
m = mock.Mock()
m.__str__ = lambda self: "typing.Sequence"
m.__parameters__ = (int,)
typecheck.check_option_type("foo", [10], m)
def test_check_io():
typecheck.check_option_type("foo", io.StringIO(), typing.IO[str])

View File

@ -1,5 +1,5 @@
[tox]
envlist = py35, py36, lint
envlist = py36, lint
skipsdist = True
toxworkdir={env:TOX_WORK_DIR:.tox}
@ -21,7 +21,7 @@ commands =
commands =
mitmdump --version
flake8 --jobs 8 mitmproxy pathod examples test release
python test/filename_matching.py
python ./test/filename_matching.py
rstcheck README.rst
mypy --ignore-missing-imports ./mitmproxy ./pathod
mypy --ignore-missing-imports --follow-imports=skip ./examples/simple/ ./examples/pathod/ ./examples/complex/
@ -30,7 +30,7 @@ commands =
deps =
-rrequirements.txt
commands =
python test/individual_coverage.py
python ./test/individual_coverage.py
[testenv:cibuild]
passenv = TRAVIS_* AWS_* APPVEYOR_* RTOOL_KEY WHEEL