Kaydet (Commit) 88811a26 authored tarafından Daniel Nephin's avatar Daniel Nephin

Merge pull request #1071 from graingert/support-py35

support Python 3.5
sudo: false sudo: false
language: python language: python
python: python:
- "2.7" - "3.5"
env: env:
- TOX_ENV=py26 - TOX_ENV=py26
- TOX_ENV=py27 - TOX_ENV=py27
- TOX_ENV=py33 - TOX_ENV=py33
- TOX_ENV=py34 - TOX_ENV=py34
- TOX_ENV=py35
- TOX_ENV=flake8 - TOX_ENV=flake8
install: install:
- pip install tox - pip install tox
......
FROM python:3.4 FROM python:3.5
MAINTAINER Joffrey F <joffrey@docker.com> MAINTAINER Joffrey F <joffrey@docker.com>
RUN mkdir /home/docker-py RUN mkdir /home/docker-py
......
...@@ -187,7 +187,7 @@ class ContainerApiMixin(object): ...@@ -187,7 +187,7 @@ class ContainerApiMixin(object):
url = self._url("/containers/{0}/kill", container) url = self._url("/containers/{0}/kill", container)
params = {} params = {}
if signal is not None: if signal is not None:
params['signal'] = signal params['signal'] = int(signal)
res = self._post(url, params=params) res = self._post(url, params=params)
self._raise_for_status(res) self._raise_for_status(res)
......
...@@ -546,12 +546,6 @@ def datetime_to_timestamp(dt): ...@@ -546,12 +546,6 @@ def datetime_to_timestamp(dt):
return delta.seconds + delta.days * 24 * 3600 return delta.seconds + delta.days * 24 * 3600
def longint(n):
if six.PY3:
return int(n)
return long(n)
def parse_bytes(s): def parse_bytes(s):
if isinstance(s, six.integer_types + (float,)): if isinstance(s, six.integer_types + (float,)):
return s return s
...@@ -574,7 +568,7 @@ def parse_bytes(s): ...@@ -574,7 +568,7 @@ def parse_bytes(s):
if suffix in units.keys() or suffix.isdigit(): if suffix in units.keys() or suffix.isdigit():
try: try:
digits = longint(digits_part) digits = int(digits_part)
except ValueError: except ValueError:
raise errors.DockerException( raise errors.DockerException(
'Failed converting the string value for memory ({0}) to' 'Failed converting the string value for memory ({0}) to'
...@@ -582,7 +576,7 @@ def parse_bytes(s): ...@@ -582,7 +576,7 @@ def parse_bytes(s):
) )
# Reconvert to long for the final result # Reconvert to long for the final result
s = longint(digits * units[suffix]) s = int(digits * units[suffix])
else: else:
raise errors.DockerException( raise errors.DockerException(
'The specified value for memory ({0}) should specify the' 'The specified value for memory ({0}) should specify the'
......
...@@ -109,7 +109,7 @@ correct value (e.g `gzip`). ...@@ -109,7 +109,7 @@ correct value (e.g `gzip`).
``` ```
**Raises:** [TypeError]( **Raises:** [TypeError](
https://docs.python.org/3.4/library/exceptions.html#TypeError) if `path` nor https://docs.python.org/3.5/library/exceptions.html#TypeError) if `path` nor
`fileobj` are specified `fileobj` are specified
## commit ## commit
...@@ -207,7 +207,7 @@ of the created container in bytes) or a string with a units identification char ...@@ -207,7 +207,7 @@ of the created container in bytes) or a string with a units identification char
character, bytes are assumed as an intended unit. character, bytes are assumed as an intended unit.
`volumes_from` and `dns` arguments raise [TypeError]( `volumes_from` and `dns` arguments raise [TypeError](
https://docs.python.org/3.4/library/exceptions.html#TypeError) exception if https://docs.python.org/3.5/library/exceptions.html#TypeError) exception if
they are used against v1.10 and above of the Docker remote API. Those they are used against v1.10 and above of the Docker remote API. Those
arguments should be passed as part of the `host_config` dictionary. arguments should be passed as part of the `host_config` dictionary.
......
...@@ -12,7 +12,7 @@ first.* ...@@ -12,7 +12,7 @@ first.*
* ca_cert (str): Path to CA cert file * ca_cert (str): Path to CA cert file
* verify (bool or str): This can be `False` or a path to a CA Cert file * verify (bool or str): This can be `False` or a path to a CA Cert file
* ssl_version (int): A valid [SSL version]( * ssl_version (int): A valid [SSL version](
https://docs.python.org/3.4/library/ssl.html#ssl.PROTOCOL_TLSv1) https://docs.python.org/3.5/library/ssl.html#ssl.PROTOCOL_TLSv1)
* assert_hostname (bool): Verify hostname of docker daemon * assert_hostname (bool): Verify hostname of docker daemon
### configure_client ### configure_client
......
...@@ -16,6 +16,7 @@ extras_require = { ...@@ -16,6 +16,7 @@ extras_require = {
':python_version < "3.3"': 'ipaddress >= 1.0.16', ':python_version < "3.3"': 'ipaddress >= 1.0.16',
} }
version = None
exec(open('docker/version.py').read()) exec(open('docker/version.py').read())
with open('./test-requirements.txt') as test_reqs_txt: with open('./test-requirements.txt') as test_reqs_txt:
...@@ -42,10 +43,13 @@ setup( ...@@ -42,10 +43,13 @@ setup(
'Intended Audience :: Developers', 'Intended Audience :: Developers',
'Operating System :: OS Independent', 'Operating System :: OS Independent',
'Programming Language :: Python', 'Programming Language :: Python',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'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',
'Topic :: Utilities', 'Topic :: Utilities',
'License :: OSI Approved :: Apache Software License', 'License :: OSI Approved :: Apache Software License',
], ],
......
mock==1.0.1 mock==1.0.1
pytest==2.7.2 pytest==2.9.1
coverage==3.7.1 coverage==3.7.1
pytest-cov==2.1.0 pytest-cov==2.1.0
flake8==2.4.1 flake8==2.4.1
\ No newline at end of file
...@@ -299,56 +299,30 @@ class ConverVolumeBindsTest(base.BaseTestCase): ...@@ -299,56 +299,30 @@ class ConverVolumeBindsTest(base.BaseTestCase):
self.assertEqual(convert_volume_binds(data), ['/mnt/vol1:/data:rw']) self.assertEqual(convert_volume_binds(data), ['/mnt/vol1:/data:rw'])
def test_convert_volume_binds_unicode_bytes_input(self): def test_convert_volume_binds_unicode_bytes_input(self):
if six.PY2: expected = [u'/mnt/지연:/unicode/박:rw']
expected = [unicode('/mnt/지연:/unicode/박:rw', 'utf-8')]
data = {
'/mnt/지연': {
'bind': '/unicode/박',
'mode': 'rw'
}
}
self.assertEqual(
convert_volume_binds(data), expected
)
else:
expected = ['/mnt/지연:/unicode/박:rw']
data = { data = {
bytes('/mnt/지연', 'utf-8'): { u'/mnt/지연'.encode('utf-8'): {
'bind': bytes('/unicode/박', 'utf-8'), 'bind': u'/unicode/박'.encode('utf-8'),
'mode': 'rw' 'mode': 'rw'
}
} }
self.assertEqual( }
convert_volume_binds(data), expected self.assertEqual(
) convert_volume_binds(data), expected
)
def test_convert_volume_binds_unicode_unicode_input(self): def test_convert_volume_binds_unicode_unicode_input(self):
if six.PY2: expected = [u'/mnt/지연:/unicode/박:rw']
expected = [unicode('/mnt/지연:/unicode/박:rw', 'utf-8')]
data = {
unicode('/mnt/지연', 'utf-8'): {
'bind': unicode('/unicode/박', 'utf-8'),
'mode': 'rw'
}
}
self.assertEqual(
convert_volume_binds(data), expected
)
else:
expected = ['/mnt/지연:/unicode/박:rw']
data = { data = {
'/mnt/지연': { u'/mnt/지연': {
'bind': '/unicode/박', 'bind': u'/unicode/박',
'mode': 'rw' 'mode': 'rw'
}
} }
self.assertEqual( }
convert_volume_binds(data), expected self.assertEqual(
) convert_volume_binds(data), expected
)
class ParseEnvFileTest(base.BaseTestCase): class ParseEnvFileTest(base.BaseTestCase):
...@@ -612,13 +586,7 @@ class UtilsTest(base.BaseTestCase): ...@@ -612,13 +586,7 @@ class UtilsTest(base.BaseTestCase):
class SplitCommandTest(base.BaseTestCase): class SplitCommandTest(base.BaseTestCase):
def test_split_command_with_unicode(self): def test_split_command_with_unicode(self):
if six.PY2: self.assertEqual(split_command(u'echo μμ'), ['echo', 'μμ'])
self.assertEqual(
split_command(unicode('echo μμ', 'utf-8')),
['echo', 'μμ']
)
else:
self.assertEqual(split_command('echo μμ'), ['echo', 'μμ'])
@pytest.mark.skipif(six.PY3, reason="shlex doesn't support bytes in py3") @pytest.mark.skipif(six.PY3, reason="shlex doesn't support bytes in py3")
def test_split_command_with_bytes(self): def test_split_command_with_bytes(self):
......
[tox] [tox]
envlist = py26, py27, py33, py34, flake8 envlist = py26, py27, py33, py34, py35, flake8
skipsdist=True skipsdist=True
[testenv] [testenv]
...@@ -11,5 +11,5 @@ deps = ...@@ -11,5 +11,5 @@ deps =
-r{toxinidir}/requirements.txt -r{toxinidir}/requirements.txt
[testenv:flake8] [testenv:flake8]
commands = flake8 docker tests commands = flake8 docker tests setup.py
deps = flake8 deps = flake8
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment