dnephin: LGTM, just a minor nit
diff --git a/docker/client.py b/docker/client.py
index d1c6ee5f..dc28ac46 100644
--- a/docker/client.py
+++ b/docker/client.py
@@ -114,7 +114,8 @@ class Client(
 
     @classmethod
     def from_env(cls, **kwargs):
-        return cls(**kwargs_from_env(**kwargs))
+        version = kwargs.pop('version', None)
+        return cls(version=version, **kwargs_from_env(**kwargs))
 
     def _retrieve_server_version(self):
         try:
@@ -268,7 +269,7 @@ class Client(
         else:
             # Response isn't chunked, meaning we probably
             # encountered an error immediately
-            yield self._result(response, json=decode)
+            yield self._result(response)
 
     def _multiplexed_buffer_helper(self, response):
         """A generator of multiplexed data blocks read from a buffered
diff --git a/docker/utils/utils.py b/docker/utils/utils.py
index c108a835..a5fbe0ba 100644
--- a/docker/utils/utils.py
+++ b/docker/utils/utils.py
@@ -623,7 +623,7 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
                        device_write_iops=None, oom_kill_disable=False,
                        shm_size=None, sysctls=None, version=None, tmpfs=None,
                        oom_score_adj=None, dns_opt=None, cpu_shares=None,
-                       cpuset_cpus=None, userns_mode=None, pids_limit=None):
+                       cpuset_cpus=None, userns_mode=None):
 
     host_config = {}
 
@@ -904,13 +904,6 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
             raise host_config_value_error("userns_mode", userns_mode)
         host_config['UsernsMode'] = userns_mode
 
-    if pids_limit:
-        if not isinstance(pids_limit, int):
-            raise host_config_type_error('pids_limit', pids_limit, 'int')
-        if version_lt(version, '1.23'):
-            raise host_config_version_error('pids_limit', '1.23')
-        host_config["PidsLimit"] = pids_limit
-
     return host_config
 
 
@@ -1000,7 +993,7 @@ def format_environment(environment):
     def format_env(key, value):
         if value is None:
             return key
-        return u'{key}={value}'.format(key=key, value=value)
+        return '{key}={value}'.format(key=key, value=value)
     return [format_env(*var) for var in six.iteritems(environment)]
 
 
diff --git a/docs/hostconfig.md b/docs/hostconfig.md
index 008d5cf2..6645bd1f 100644
--- a/docs/hostconfig.md
+++ b/docs/hostconfig.md
@@ -111,12 +111,11 @@ for example:
   CPU period.
 * cpu_shares (int): CPU shares (relative weight)
 * cpuset_cpus (str): CPUs in which to allow execution (0-3, 0,1)
-* blkio_weight: Block IO weight (relative weight), accepts a weight value
-  between 10 and 1000.
+* blkio_weight: Block IO weight (relative weight), accepts a weight value between 10 and 1000.
 * blkio_weight_device: Block IO weight (relative device weight) in the form of:
   `[{"Path": "device_path", "Weight": weight}]`
-* device_read_bps: Limit read rate (bytes per second) from a device in the
-  form of: `[{"Path": "device_path", "Rate": rate}]`
+* device_read_bps: Limit read rate (bytes per second) from a device in the form of:
+  `[{"Path": "device_path", "Rate": rate}]`
 * device_write_bps: Limit write rate (bytes per second) from a device.
 * device_read_iops: Limit read rate (IO per second) from a device.
 * device_write_iops: Limit write rate (IO per second) from a device.
@@ -129,7 +128,6 @@ for example:
 * sysctls (dict): Kernel parameters to set in the container.
 * userns_mode (str): Sets the user namespace mode for the container when user
   namespace remapping option is enabled. Supported values are: `host`
-* pids_limit (int): Tune a container’s pids limit. Set -1 for unlimited.
 
 **Returns** (dict) HostConfig dictionary
 

Feature Request: docker.from_env(version='auto')
Feature request to add auto api version support for ```docker.from_env()``` similar to ```docker.Client(version='auto')```?

I noticed that one of the suggestions from #402 for the ```version='auto'``` option was now available for ```docker.Client()``` but doesn't work for ```docker.from_env()```.
diff --git a/tests/unit/api_test.py b/tests/unit/api_test.py
index 5850afa2..712f57e0 100644
--- a/tests/unit/api_test.py
+++ b/tests/unit/api_test.py
@@ -22,11 +22,9 @@ import sys
 import tempfile
 import threading
 import time
-import io
 
 import docker
 import requests
-from requests.packages import urllib3
 import six
 
 from .. import base
@@ -44,7 +42,7 @@ DEFAULT_TIMEOUT_SECONDS = docker.constants.DEFAULT_TIMEOUT_SECONDS
 
 
 def response(status_code=200, content='', headers=None, reason=None, elapsed=0,
-             request=None, raw=None):
+             request=None):
     res = requests.Response()
     res.status_code = status_code
     if not isinstance(content, six.binary_type):
@@ -54,7 +52,6 @@ def response(status_code=200, content='', headers=None, reason=None, elapsed=0,
     res.reason = reason
     res.elapsed = datetime.timedelta(elapsed)
     res.request = request
-    res.raw = raw
     return res
 
 
@@ -331,43 +328,6 @@ class DockerApiTest(DockerClientTest):
             TypeError, self.client.create_host_config, security_opt='wrong'
         )
 
-    def test_stream_helper_decoding(self):
-        status_code, content = fake_api.fake_responses[url_prefix + 'events']()
-        content_str = json.dumps(content)
-        if six.PY3:
-            content_str = content_str.encode('utf-8')
-        body = io.BytesIO(content_str)
-
-        # mock a stream interface
-        raw_resp = urllib3.HTTPResponse(body=body)
-        setattr(raw_resp._fp, 'chunked', True)
-        setattr(raw_resp._fp, 'chunk_left', len(body.getvalue())-1)
-
-        # pass `decode=False` to the helper
-        raw_resp._fp.seek(0)
-        resp = response(status_code=status_code, content=content, raw=raw_resp)
-        result = next(self.client._stream_helper(resp))
-        self.assertEqual(result, content_str)
-
-        # pass `decode=True` to the helper
-        raw_resp._fp.seek(0)
-        resp = response(status_code=status_code, content=content, raw=raw_resp)
-        result = next(self.client._stream_helper(resp, decode=True))
-        self.assertEqual(result, content)
-
-        # non-chunked response, pass `decode=False` to the helper
-        setattr(raw_resp._fp, 'chunked', False)
-        raw_resp._fp.seek(0)
-        resp = response(status_code=status_code, content=content, raw=raw_resp)
-        result = next(self.client._stream_helper(resp))
-        self.assertEqual(result, content_str.decode('utf-8'))
-
-        # non-chunked response, pass `decode=True` to the helper
-        raw_resp._fp.seek(0)
-        resp = response(status_code=status_code, content=content, raw=raw_resp)
-        result = next(self.client._stream_helper(resp, decode=True))
-        self.assertEqual(result, content)
-
 
 class StreamTest(base.Cleanup, base.BaseTestCase):
     def setUp(self):
diff --git a/tests/unit/client_test.py b/tests/unit/client_test.py
index b21f1d6a..6ceb8cbb 100644
--- a/tests/unit/client_test.py
+++ b/tests/unit/client_test.py
@@ -25,6 +25,14 @@ class ClientTest(base.BaseTestCase):
         client = Client.from_env()
         self.assertEqual(client.base_url, "https://192.168.59.103:2376")
 
+    def test_from_env_with_version(self):
+        os.environ.update(DOCKER_HOST='tcp://192.168.59.103:2376',
+                          DOCKER_CERT_PATH=TEST_CERT_DIR,
+                          DOCKER_TLS_VERIFY='1')
+        client = Client.from_env(version='2.32')
+        self.assertEqual(client.base_url, "https://192.168.59.103:2376")
+        self.assertEqual(client._version, '2.32')
+
 
 class DisableSocketTest(base.BaseTestCase):
     class DummySocket(object):
diff --git a/tests/unit/container_test.py b/tests/unit/container_test.py
index 3cea42fb..c480462f 100644
--- a/tests/unit/container_test.py
+++ b/tests/unit/container_test.py
@@ -1,5 +1,3 @@
-# -*- coding: utf-8 -*-
-
 import datetime
 import json
 import signal
@@ -1157,24 +1155,6 @@ class CreateContainerTest(DockerClientTest):
             args[1]['timeout'], DEFAULT_TIMEOUT_SECONDS
         )
 
-    def test_create_container_with_unicode_envvars(self):
-        envvars_dict = {
-            'foo': u'☃',
-        }
-
-        expected = [
-            u'foo=☃'
-        ]
-
-        self.client.create_container(
-            'busybox', 'true',
-            environment=envvars_dict,
-        )
-
-        args = fake_request.call_args
-        self.assertEqual(args[0][1], url_prefix + 'containers/create')
-        self.assertEqual(json.loads(args[1]['data'])['Env'], expected)
-
 
 class ContainerTest(DockerClientTest):
     def test_list_containers(self):
diff --git a/tests/unit/utils_test.py b/tests/unit/utils_test.py
index 2a2759d0..3476f041 100644
--- a/tests/unit/utils_test.py
+++ b/tests/unit/utils_test.py
@@ -185,15 +185,6 @@ class HostConfigTest(base.BaseTestCase):
             InvalidVersion, lambda: create_host_config(
                 version='1.20', kernel_memory=67108864))
 
-    def test_create_host_config_with_pids_limit(self):
-        config = create_host_config(version='1.23', pids_limit=1024)
-        self.assertEqual(config.get('PidsLimit'), 1024)
-
-        with pytest.raises(InvalidVersion):
-            create_host_config(version='1.22', pids_limit=1024)
-        with pytest.raises(TypeError):
-            create_host_config(version='1.22', pids_limit='1024')
-
 
 class UlimitTest(base.BaseTestCase):
     def test_create_host_config_dict_ulimit(self):

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-cov
3.5
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
coverage==6.2
-e git+https://github.com/docker/docker-py.git@2ef02df2f06fafe7d71c96bac1e18d68217703ab#egg=docker_py
importlib-metadata==4.8.3
iniconfig==1.1.1
packaging==21.3
pluggy==1.0.0
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
pytest-cov==4.0.0
requests==2.5.3
six==1.17.0
tomli==1.2.3
typing_extensions==4.1.1
websocket-client==0.32.0
zipp==3.6.0

name: docker-py
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - coverage==6.2
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - packaging==21.3
      - pluggy==1.0.0
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-cov==4.0.0
      - requests==2.5.3
      - six==1.17.0
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - websocket-client==0.32.0
      - zipp==3.6.0
prefix: /opt/conda/envs/docker-py

tests/unit/client_test.py::ClientTest::test_from_env_with_version
tests/unit/api_test.py::DockerApiTest::test_auto_retrieve_server_version tests/unit/api_test.py::DockerApiTest::test_create_host_config_secopt tests/unit/api_test.py::DockerApiTest::test_ctor tests/unit/api_test.py::DockerApiTest::test_events tests/unit/api_test.py::DockerApiTest::test_events_with_filters tests/unit/api_test.py::DockerApiTest::test_events_with_since_until tests/unit/api_test.py::DockerApiTest::test_info tests/unit/api_test.py::DockerApiTest::test_remove_link tests/unit/api_test.py::DockerApiTest::test_retrieve_server_version tests/unit/api_test.py::DockerApiTest::test_search tests/unit/api_test.py::DockerApiTest::test_url_compatibility_http tests/unit/api_test.py::DockerApiTest::test_url_compatibility_http_unix_triple_slash tests/unit/api_test.py::DockerApiTest::test_url_compatibility_tcp tests/unit/api_test.py::DockerApiTest::test_url_compatibility_unix tests/unit/api_test.py::DockerApiTest::test_url_compatibility_unix_triple_slash tests/unit/api_test.py::DockerApiTest::test_url_invalid_resource tests/unit/api_test.py::DockerApiTest::test_url_no_resource tests/unit/api_test.py::DockerApiTest::test_url_unversioned_api tests/unit/api_test.py::DockerApiTest::test_url_valid_resource tests/unit/api_test.py::DockerApiTest::test_version tests/unit/api_test.py::DockerApiTest::test_version_no_api_version tests/unit/api_test.py::StreamTest::test_early_stream_response tests/unit/api_test.py::UserAgentTest::test_custom_user_agent tests/unit/api_test.py::UserAgentTest::test_default_user_agent tests/unit/client_test.py::ClientTest::test_from_env tests/unit/client_test.py::DisableSocketTest::test_disable_socket_timeout tests/unit/client_test.py::DisableSocketTest::test_disable_socket_timeout2 tests/unit/client_test.py::DisableSocketTest::test_disable_socket_timout_non_blocking tests/unit/container_test.py::StartContainerTest::test_start_container tests/unit/container_test.py::StartContainerTest::test_start_container_none tests/unit/container_test.py::StartContainerTest::test_start_container_privileged tests/unit/container_test.py::StartContainerTest::test_start_container_regression_573 tests/unit/container_test.py::StartContainerTest::test_start_container_with_binds_ro tests/unit/container_test.py::StartContainerTest::test_start_container_with_binds_rw tests/unit/container_test.py::StartContainerTest::test_start_container_with_dict_instead_of_id tests/unit/container_test.py::StartContainerTest::test_start_container_with_links tests/unit/container_test.py::StartContainerTest::test_start_container_with_links_as_list_of_tuples tests/unit/container_test.py::StartContainerTest::test_start_container_with_lxc_conf tests/unit/container_test.py::StartContainerTest::test_start_container_with_lxc_conf_compat tests/unit/container_test.py::StartContainerTest::test_start_container_with_multiple_links tests/unit/container_test.py::StartContainerTest::test_start_container_with_port_binds tests/unit/container_test.py::CreateContainerTest::test_create_container tests/unit/container_test.py::CreateContainerTest::test_create_container_empty_volumes_from tests/unit/container_test.py::CreateContainerTest::test_create_container_privileged tests/unit/container_test.py::CreateContainerTest::test_create_container_with_added_capabilities tests/unit/container_test.py::CreateContainerTest::test_create_container_with_aliases tests/unit/container_test.py::CreateContainerTest::test_create_container_with_binds tests/unit/container_test.py::CreateContainerTest::test_create_container_with_binds_list tests/unit/container_test.py::CreateContainerTest::test_create_container_with_binds_mode tests/unit/container_test.py::CreateContainerTest::test_create_container_with_binds_mode_and_ro_error tests/unit/container_test.py::CreateContainerTest::test_create_container_with_binds_ro tests/unit/container_test.py::CreateContainerTest::test_create_container_with_binds_rw tests/unit/container_test.py::CreateContainerTest::test_create_container_with_cgroup_parent tests/unit/container_test.py::CreateContainerTest::test_create_container_with_cpu_shares tests/unit/container_test.py::CreateContainerTest::test_create_container_with_cpuset tests/unit/container_test.py::CreateContainerTest::test_create_container_with_devices tests/unit/container_test.py::CreateContainerTest::test_create_container_with_dropped_capabilities tests/unit/container_test.py::CreateContainerTest::test_create_container_with_entrypoint tests/unit/container_test.py::CreateContainerTest::test_create_container_with_host_config_cpu_shares tests/unit/container_test.py::CreateContainerTest::test_create_container_with_host_config_cpuset tests/unit/container_test.py::CreateContainerTest::test_create_container_with_labels_dict tests/unit/container_test.py::CreateContainerTest::test_create_container_with_labels_list tests/unit/container_test.py::CreateContainerTest::test_create_container_with_links tests/unit/container_test.py::CreateContainerTest::test_create_container_with_links_as_list_of_tuples tests/unit/container_test.py::CreateContainerTest::test_create_container_with_lxc_conf tests/unit/container_test.py::CreateContainerTest::test_create_container_with_lxc_conf_compat tests/unit/container_test.py::CreateContainerTest::test_create_container_with_mac_address tests/unit/container_test.py::CreateContainerTest::test_create_container_with_mem_limit_as_int tests/unit/container_test.py::CreateContainerTest::test_create_container_with_mem_limit_as_string tests/unit/container_test.py::CreateContainerTest::test_create_container_with_mem_limit_as_string_with_g_unit tests/unit/container_test.py::CreateContainerTest::test_create_container_with_mem_limit_as_string_with_k_unit tests/unit/container_test.py::CreateContainerTest::test_create_container_with_mem_limit_as_string_with_m_unit tests/unit/container_test.py::CreateContainerTest::test_create_container_with_mem_limit_as_string_with_wrong_value tests/unit/container_test.py::CreateContainerTest::test_create_container_with_multiple_links tests/unit/container_test.py::CreateContainerTest::test_create_container_with_named_volume tests/unit/container_test.py::CreateContainerTest::test_create_container_with_port_binds tests/unit/container_test.py::CreateContainerTest::test_create_container_with_ports tests/unit/container_test.py::CreateContainerTest::test_create_container_with_restart_policy tests/unit/container_test.py::CreateContainerTest::test_create_container_with_stdin_open tests/unit/container_test.py::CreateContainerTest::test_create_container_with_stop_signal tests/unit/container_test.py::CreateContainerTest::test_create_container_with_sysctl tests/unit/container_test.py::CreateContainerTest::test_create_container_with_tmpfs_dict tests/unit/container_test.py::CreateContainerTest::test_create_container_with_tmpfs_list tests/unit/container_test.py::CreateContainerTest::test_create_container_with_volume_string tests/unit/container_test.py::CreateContainerTest::test_create_container_with_volumes_from tests/unit/container_test.py::CreateContainerTest::test_create_container_with_working_dir tests/unit/container_test.py::CreateContainerTest::test_create_named_container tests/unit/container_test.py::ContainerTest::test_container_stats tests/unit/container_test.py::ContainerTest::test_container_top tests/unit/container_test.py::ContainerTest::test_container_top_with_psargs tests/unit/container_test.py::ContainerTest::test_container_update tests/unit/container_test.py::ContainerTest::test_diff tests/unit/container_test.py::ContainerTest::test_diff_with_dict_instead_of_id tests/unit/container_test.py::ContainerTest::test_export tests/unit/container_test.py::ContainerTest::test_export_with_dict_instead_of_id tests/unit/container_test.py::ContainerTest::test_inspect_container tests/unit/container_test.py::ContainerTest::test_inspect_container_undefined_id tests/unit/container_test.py::ContainerTest::test_kill_container tests/unit/container_test.py::ContainerTest::test_kill_container_with_dict_instead_of_id tests/unit/container_test.py::ContainerTest::test_kill_container_with_signal tests/unit/container_test.py::ContainerTest::test_list_containers tests/unit/container_test.py::ContainerTest::test_log_following tests/unit/container_test.py::ContainerTest::test_log_following_backwards tests/unit/container_test.py::ContainerTest::test_log_since tests/unit/container_test.py::ContainerTest::test_log_since_with_datetime tests/unit/container_test.py::ContainerTest::test_log_streaming tests/unit/container_test.py::ContainerTest::test_log_streaming_and_following tests/unit/container_test.py::ContainerTest::test_log_tail tests/unit/container_test.py::ContainerTest::test_log_tty tests/unit/container_test.py::ContainerTest::test_logs tests/unit/container_test.py::ContainerTest::test_logs_with_dict_instead_of_id tests/unit/container_test.py::ContainerTest::test_pause_container tests/unit/container_test.py::ContainerTest::test_port tests/unit/container_test.py::ContainerTest::test_remove_container tests/unit/container_test.py::ContainerTest::test_remove_container_with_dict_instead_of_id tests/unit/container_test.py::ContainerTest::test_rename_container tests/unit/container_test.py::ContainerTest::test_resize_container tests/unit/container_test.py::ContainerTest::test_restart_container tests/unit/container_test.py::ContainerTest::test_restart_container_with_dict_instead_of_id tests/unit/container_test.py::ContainerTest::test_stop_container tests/unit/container_test.py::ContainerTest::test_stop_container_with_dict_instead_of_id tests/unit/container_test.py::ContainerTest::test_unpause_container tests/unit/container_test.py::ContainerTest::test_wait tests/unit/container_test.py::ContainerTest::test_wait_with_dict_instead_of_id tests/unit/utils_test.py::DecoratorsTest::test_update_headers tests/unit/utils_test.py::HostConfigTest::test_create_endpoint_config_with_aliases tests/unit/utils_test.py::HostConfigTest::test_create_host_config_invalid_cpu_cfs_types tests/unit/utils_test.py::HostConfigTest::test_create_host_config_no_options tests/unit/utils_test.py::HostConfigTest::test_create_host_config_no_options_newer_api_version tests/unit/utils_test.py::HostConfigTest::test_create_host_config_with_blkio_constraints tests/unit/utils_test.py::HostConfigTest::test_create_host_config_with_cpu_period tests/unit/utils_test.py::HostConfigTest::test_create_host_config_with_cpu_quota tests/unit/utils_test.py::HostConfigTest::test_create_host_config_with_dns_opt tests/unit/utils_test.py::HostConfigTest::test_create_host_config_with_kernel_memory tests/unit/utils_test.py::HostConfigTest::test_create_host_config_with_mem_reservation tests/unit/utils_test.py::HostConfigTest::test_create_host_config_with_oom_kill_disable tests/unit/utils_test.py::HostConfigTest::test_create_host_config_with_oom_score_adj tests/unit/utils_test.py::HostConfigTest::test_create_host_config_with_shm_size tests/unit/utils_test.py::HostConfigTest::test_create_host_config_with_shm_size_in_mb tests/unit/utils_test.py::HostConfigTest::test_create_host_config_with_userns_mode tests/unit/utils_test.py::UlimitTest::test_create_host_config_dict_ulimit tests/unit/utils_test.py::UlimitTest::test_create_host_config_dict_ulimit_capitals tests/unit/utils_test.py::UlimitTest::test_create_host_config_obj_ulimit tests/unit/utils_test.py::UlimitTest::test_ulimit_invalid_type tests/unit/utils_test.py::LogConfigTest::test_create_host_config_dict_logconfig tests/unit/utils_test.py::LogConfigTest::test_create_host_config_obj_logconfig tests/unit/utils_test.py::LogConfigTest::test_logconfig_invalid_config_type tests/unit/utils_test.py::KwargsFromEnvTest::test_kwargs_from_env_alternate_env tests/unit/utils_test.py::KwargsFromEnvTest::test_kwargs_from_env_empty tests/unit/utils_test.py::KwargsFromEnvTest::test_kwargs_from_env_no_cert_path tests/unit/utils_test.py::KwargsFromEnvTest::test_kwargs_from_env_tls tests/unit/utils_test.py::KwargsFromEnvTest::test_kwargs_from_env_tls_verify_false tests/unit/utils_test.py::KwargsFromEnvTest::test_kwargs_from_env_tls_verify_false_no_cert tests/unit/utils_test.py::ConverVolumeBindsTest::test_convert_volume_binds_compact tests/unit/utils_test.py::ConverVolumeBindsTest::test_convert_volume_binds_complete tests/unit/utils_test.py::ConverVolumeBindsTest::test_convert_volume_binds_empty tests/unit/utils_test.py::ConverVolumeBindsTest::test_convert_volume_binds_list tests/unit/utils_test.py::ConverVolumeBindsTest::test_convert_volume_binds_no_mode tests/unit/utils_test.py::ConverVolumeBindsTest::test_convert_volume_binds_unicode_bytes_input tests/unit/utils_test.py::ConverVolumeBindsTest::test_convert_volume_binds_unicode_unicode_input tests/unit/utils_test.py::ParseEnvFileTest::test_parse_env_file_commented_line tests/unit/utils_test.py::ParseEnvFileTest::test_parse_env_file_invalid_line tests/unit/utils_test.py::ParseEnvFileTest::test_parse_env_file_proper tests/unit/utils_test.py::ParseEnvFileTest::test_parse_env_file_with_equals_character tests/unit/utils_test.py::ParseHostTest::test_parse_host tests/unit/utils_test.py::ParseHostTest::test_parse_host_empty_value tests/unit/utils_test.py::ParseHostTest::test_parse_host_tls tests/unit/utils_test.py::ParseHostTest::test_parse_host_tls_tcp_proto tests/unit/utils_test.py::ParseRepositoryTagTest::test_index_image_no_tag tests/unit/utils_test.py::ParseRepositoryTagTest::test_index_image_sha tests/unit/utils_test.py::ParseRepositoryTagTest::test_index_image_tag tests/unit/utils_test.py::ParseRepositoryTagTest::test_index_user_image_no_tag tests/unit/utils_test.py::ParseRepositoryTagTest::test_index_user_image_tag tests/unit/utils_test.py::ParseRepositoryTagTest::test_private_reg_image_no_tag tests/unit/utils_test.py::ParseRepositoryTagTest::test_private_reg_image_sha tests/unit/utils_test.py::ParseRepositoryTagTest::test_private_reg_image_tag tests/unit/utils_test.py::ParseDeviceTest::test_dict tests/unit/utils_test.py::ParseDeviceTest::test_full_string_definition tests/unit/utils_test.py::ParseDeviceTest::test_hybrid_list tests/unit/utils_test.py::ParseDeviceTest::test_partial_string_definition tests/unit/utils_test.py::ParseDeviceTest::test_permissionless_string_definition tests/unit/utils_test.py::ParseBytesTest::test_parse_bytes_float tests/unit/utils_test.py::ParseBytesTest::test_parse_bytes_invalid tests/unit/utils_test.py::ParseBytesTest::test_parse_bytes_maxint tests/unit/utils_test.py::ParseBytesTest::test_parse_bytes_valid tests/unit/utils_test.py::UtilsTest::test_convert_filters tests/unit/utils_test.py::UtilsTest::test_create_ipam_config tests/unit/utils_test.py::UtilsTest::test_decode_json_header tests/unit/utils_test.py::SplitCommandTest::test_split_command_with_unicode tests/unit/utils_test.py::PortsTest::test_build_port_bindings_with_matching_internal_port_ranges tests/unit/utils_test.py::PortsTest::test_build_port_bindings_with_matching_internal_ports tests/unit/utils_test.py::PortsTest::test_build_port_bindings_with_nonmatching_internal_port_ranges tests/unit/utils_test.py::PortsTest::test_build_port_bindings_with_nonmatching_internal_ports tests/unit/utils_test.py::PortsTest::test_build_port_bindings_with_one_port tests/unit/utils_test.py::PortsTest::test_build_port_bindings_with_port_range tests/unit/utils_test.py::PortsTest::test_host_only_with_colon tests/unit/utils_test.py::PortsTest::test_non_matching_length_port_ranges tests/unit/utils_test.py::PortsTest::test_port_and_range_invalid tests/unit/utils_test.py::PortsTest::test_port_only_with_colon tests/unit/utils_test.py::PortsTest::test_split_port_invalid tests/unit/utils_test.py::PortsTest::test_split_port_no_host_port tests/unit/utils_test.py::PortsTest::test_split_port_range_no_host_port tests/unit/utils_test.py::PortsTest::test_split_port_range_with_host_ip_no_port tests/unit/utils_test.py::PortsTest::test_split_port_range_with_host_port tests/unit/utils_test.py::PortsTest::test_split_port_range_with_protocol tests/unit/utils_test.py::PortsTest::test_split_port_with_host_ip tests/unit/utils_test.py::PortsTest::test_split_port_with_host_ip_no_port tests/unit/utils_test.py::PortsTest::test_split_port_with_host_port tests/unit/utils_test.py::PortsTest::test_split_port_with_protocol tests/unit/utils_test.py::ExcludePathsTest::test_directory tests/unit/utils_test.py::ExcludePathsTest::test_directory_with_single_exception tests/unit/utils_test.py::ExcludePathsTest::test_directory_with_subdir_exception tests/unit/utils_test.py::ExcludePathsTest::test_directory_with_trailing_slash tests/unit/utils_test.py::ExcludePathsTest::test_directory_with_wildcard_exception tests/unit/utils_test.py::ExcludePathsTest::test_exclude_custom_dockerfile tests/unit/utils_test.py::ExcludePathsTest::test_exclude_dockerfile_child tests/unit/utils_test.py::ExcludePathsTest::test_exclude_dockerfile_dockerignore tests/unit/utils_test.py::ExcludePathsTest::test_no_dupes tests/unit/utils_test.py::ExcludePathsTest::test_no_excludes tests/unit/utils_test.py::ExcludePathsTest::test_question_mark tests/unit/utils_test.py::ExcludePathsTest::test_single_filename tests/unit/utils_test.py::ExcludePathsTest::test_single_filename_leading_dot_slash tests/unit/utils_test.py::ExcludePathsTest::test_single_filename_trailing_slash tests/unit/utils_test.py::ExcludePathsTest::test_single_subdir_single_filename tests/unit/utils_test.py::ExcludePathsTest::test_single_subdir_wildcard_filename tests/unit/utils_test.py::ExcludePathsTest::test_single_subdir_with_path_traversal tests/unit/utils_test.py::ExcludePathsTest::test_subdirectory tests/unit/utils_test.py::ExcludePathsTest::test_wildcard_exclude tests/unit/utils_test.py::ExcludePathsTest::test_wildcard_filename_end tests/unit/utils_test.py::ExcludePathsTest::test_wildcard_filename_start tests/unit/utils_test.py::ExcludePathsTest::test_wildcard_subdir_single_filename tests/unit/utils_test.py::ExcludePathsTest::test_wildcard_subdir_wildcard_filename tests/unit/utils_test.py::ExcludePathsTest::test_wildcard_with_exception tests/unit/utils_test.py::ExcludePathsTest::test_wildcard_with_wildcard_exception tests/unit/utils_test.py::TarTest::test_tar_with_directory_symlinks tests/unit/utils_test.py::TarTest::test_tar_with_empty_directory tests/unit/utils_test.py::TarTest::test_tar_with_excludes tests/unit/utils_test.py::TarTest::test_tar_with_file_symlinks
docs/hostconfig.md docker/utils/utils.py docker/client.py
docs/hostconfig.md docker/utils/utils.py docker/client.py