--- /dev/null
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python3_{6,7,8} )
+
+inherit distutils-r1
+
+DESCRIPTION="Python client for Docker"
+HOMEPAGE="https://github.com/docker/docker-py"
+SRC_URI="https://github.com/docker/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="doc test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ !~dev-python/requests-2.18.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.14.2[${PYTHON_USEDEP}]
+ >=dev-python/six-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/websocket-client-0.32.0[${PYTHON_USEDEP}]
+"
+DEPEND="
+ test? (
+ ${RDEPEND}
+ >=dev-python/mock-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/paramiko-2.4.2[${PYTHON_USEDEP}]
+ >=dev-python/pytest-2.9.1[${PYTHON_USEDEP}]
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-fix_splitnport.patch
+)
+
+distutils_enable_sphinx docs \
+ 'dev-python/recommonmark' \
+ '>=dev-python/sphinx-1.4.6'
+
+python_test() {
+ pytest -vv tests/unit/ || die "tests failed under ${EPYTHON}"
+}
--- /dev/null
+diff --git a/docker/utils/utils.py b/docker/utils/utils.py
+index 447760b..3996d08 100644
+--- a/docker/utils/utils.py
++++ b/docker/utils/utils.py
+@@ -17,10 +17,9 @@ from ..constants import DEFAULT_NPIPE
+ from ..constants import BYTE_UNITS
+
+ if six.PY2:
+- from urllib import splitnport
+ from urlparse import urlparse
+ else:
+- from urllib.parse import splitnport, urlparse
++ from urllib.parse import urlparse
+
+
+ def create_ipam_pool(*args, **kwargs):
+@@ -278,7 +277,7 @@ def parse_host(addr, is_win32=False, tls=False):
+ if proto != 'ssh':
+ raise errors.DockerException(
+ 'Invalid bind address format: port is required:'
+- ' {}'.format(addr)
++ ' {}://{}'.format(proto, addr)
+ )
+ port = 22
+
+@@ -295,6 +294,33 @@ def parse_host(addr, is_win32=False, tls=False):
+ return "{}://{}".format(proto, path).rstrip('/')
+ return '{0}://{1}:{2}{3}'.format(proto, host, port, path).rstrip('/')
+
++def splitnport(netloc):
++ import re
++
++ host_port_re1 = re.compile(r"^(.*):([0-9]*)$", re.DOTALL)
++ host_port_re2 = re.compile(r"^(.*)$", re.DOTALL)
++
++ host = None
++ port = None
++
++ match = host_port_re1.match(netloc)
++
++ if match:
++ host, port = match.groups()
++ else:
++ match = host_port_re2.match(netloc)
++ if match:
++ host = match.groups()[0]
++ port = None
++
++ if host == '':
++ host = None
++ if port == '':
++ port = None
++
++ port = int(port) if port else 0
++
++ return host, port or None
+
+ def parse_devices(devices):
+ device_list = []