prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  0.12.0 PyPI wheel contains both public- and private-name modules
  The following works in httpx 0.11.1:
  
  ```python
  In [1]: import httpx 
     ...: from httpx.exceptions import InvalidURL                                                                                                                             
  
  In [2]: try: 
     ...:     httpx.get("foo.bar") 
     ...: except InvalidURL: 
     ...:     pass 
     ...:                                                                                                                                                                     
  ```
  
  In 0.12.0 the exception isn't caught:
  
  ```python
  In [1]: import httpx 
     ...: from httpx.exceptions import InvalidURL                                                                                                                             
  
  In [2]: try: 
     ...:     httpx.get("foo.bar") 
     ...: except InvalidURL: 
     ...:     pass 
     ...:                                                                                                                                                                     
  ---------------------------------------------------------------------------
  InvalidURL                                Traceback (most recent call last)
  <ipython-input-2-87135a63c42c> in <module>
        1 try:
  ----> 2     httpx.get("foo.bar")
        3 except InvalidURL:
        4     pass
        5 
  
  ~/.venv/lib/python3.7/site-packages/httpx/_api.py in get(url, params, headers, cookies, auth, allow_redirects, cert, verify, timeout, trust_env)
      166         verify=verify,
      167         timeout=timeout,
  --> 168         trust_env=trust_env,
      169     )
      170 
  
  ~/.venv/lib/python3.7/site-packages/httpx/_api.py in request(method, url, params, data, files, json, headers, cookies, auth, timeout, allow_redirects, verify, cert, trust_env)
       92             cookies=cookies,
       93             auth=auth,
  ---> 94             allow_redirects=allow_redirects,
       95         )
       96 
  
  ~/.venv/lib/python3.7/site-packages/httpx/_client.py in request(self, method, url, data, files, json, params, headers, cookies, auth, allow_redirects, timeout)
      566             params=params,
      567             headers=headers,
  --> 568             cookies=cookies,
      569         )
      570         return self.send(
  
  ~/.venv/lib/python3.7/site-packages/httpx/_client.py in build_request(self, method, url, data, files, json, params, headers, cookies)
      196         Build and return a request instance.
      197         """
  --> 198         url = self.merge_url(url)
      199         headers = self.merge_headers(headers)
      200         cookies = self.merge_cookies(cookies)
  
  ~/.venv/lib/python3.7/site-packages/httpx/_client.py in merge_url(self, url)
      216         to create the URL used for the outgoing request.
      217         """
  --> 218         url = self.base_url.join(relative_url=url)
      219         if url.scheme == "http" and hstspreload.in_hsts_preload(url.host):
      220             port = None if url.port == 80 else url.port
  
  ~/.venv/lib/python3.7/site-packages/httpx/_models.py in join(self, relative_url)
      227         """
      228         if self.is_relative_url:
  --> 229             return URL(relative_url)
      230 
      231         # We drop any fragment portion, because RFC 3986 strictly
  
  ~/.venv/lib/python3.7/site-packages/httpx/_models.py in __init__(self, url, allow_relative, params)
      104         if not allow_relative:
      105             if not self.scheme:
  --> 106                 raise InvalidURL("No scheme included in URL.")
      107             if not self.host:
      108                 raise InvalidURL("No host included in URL.")
  
  InvalidURL: No scheme included in URL.
  ```
  
  This works though:
  
  ```python
  In [3]: import httpx 
     ...: from httpx._exceptions import InvalidURL                                                                                                                            
  
  In [4]: try: 
     ...:     httpx.get("foo.bar") 
     ...: except InvalidURL: 
     ...:     pass 
     ...:  
  ```
  
  </issue>
  <code>
  [start of httpx/__version__.py]
  1 __title__ = "httpx"
  2 __description__ = "A next generation HTTP client, for Python 3."
  3 __version__ = "0.12.0"
  4
  [end of httpx/__version__.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/httpx/__version__.py b/httpx/__version__.py
  --- a/httpx/__version__.py
  +++ b/httpx/__version__.py
  @@ -1,3 +1,3 @@
   __title__ = "httpx"
   __description__ = "A next generation HTTP client, for Python 3."
  -__version__ = "0.12.0"
  +__version__ = "0.12.1"
  
verification_info: {"golden_diff": "diff --git a/httpx/__version__.py b/httpx/__version__.py\n--- a/httpx/__version__.py\n+++ b/httpx/__version__.py\n@@ -1,3 +1,3 @@\n __title__ = \"httpx\"\n __description__ = \"A next generation HTTP client, for Python 3.\"\n-__version__ = \"0.12.0\"\n+__version__ = \"0.12.1\"\n", "issue": "0.12.0 PyPI wheel contains both public- and private-name modules\nThe following works in httpx 0.11.1:\r\n\r\n```python\r\nIn [1]: import httpx \r\n   ...: from httpx.exceptions import InvalidURL                                                                                                                             \r\n\r\nIn [2]: try: \r\n   ...:     httpx.get(\"foo.bar\") \r\n   ...: except InvalidURL: \r\n   ...:     pass \r\n   ...:                                                                                                                                                                     \r\n```\r\n\r\nIn 0.12.0 the exception isn't caught:\r\n\r\n```python\r\nIn [1]: import httpx \r\n   ...: from httpx.exceptions import InvalidURL                                                                                                                             \r\n\r\nIn [2]: try: \r\n   ...:     httpx.get(\"foo.bar\") \r\n   ...: except InvalidURL: \r\n   ...:     pass \r\n   ...:                                                                                                                                                                     \r\n---------------------------------------------------------------------------\r\nInvalidURL                                Traceback (most recent call last)\r\n<ipython-input-2-87135a63c42c> in <module>\r\n      1 try:\r\n----> 2     httpx.get(\"foo.bar\")\r\n      3 except InvalidURL:\r\n      4     pass\r\n      5 \r\n\r\n~/.venv/lib/python3.7/site-packages/httpx/_api.py in get(url, params, headers, cookies, auth, allow_redirects, cert, verify, timeout, trust_env)\r\n    166         verify=verify,\r\n    167         timeout=timeout,\r\n--> 168         trust_env=trust_env,\r\n    169     )\r\n    170 \r\n\r\n~/.venv/lib/python3.7/site-packages/httpx/_api.py in request(method, url, params, data, files, json, headers, cookies, auth, timeout, allow_redirects, verify, cert, trust_env)\r\n     92             cookies=cookies,\r\n     93             auth=auth,\r\n---> 94             allow_redirects=allow_redirects,\r\n     95         )\r\n     96 \r\n\r\n~/.venv/lib/python3.7/site-packages/httpx/_client.py in request(self, method, url, data, files, json, params, headers, cookies, auth, allow_redirects, timeout)\r\n    566             params=params,\r\n    567             headers=headers,\r\n--> 568             cookies=cookies,\r\n    569         )\r\n    570         return self.send(\r\n\r\n~/.venv/lib/python3.7/site-packages/httpx/_client.py in build_request(self, method, url, data, files, json, params, headers, cookies)\r\n    196         Build and return a request instance.\r\n    197         \"\"\"\r\n--> 198         url = self.merge_url(url)\r\n    199         headers = self.merge_headers(headers)\r\n    200         cookies = self.merge_cookies(cookies)\r\n\r\n~/.venv/lib/python3.7/site-packages/httpx/_client.py in merge_url(self, url)\r\n    216         to create the URL used for the outgoing request.\r\n    217         \"\"\"\r\n--> 218         url = self.base_url.join(relative_url=url)\r\n    219         if url.scheme == \"http\" and hstspreload.in_hsts_preload(url.host):\r\n    220             port = None if url.port == 80 else url.port\r\n\r\n~/.venv/lib/python3.7/site-packages/httpx/_models.py in join(self, relative_url)\r\n    227         \"\"\"\r\n    228         if self.is_relative_url:\r\n--> 229             return URL(relative_url)\r\n    230 \r\n    231         # We drop any fragment portion, because RFC 3986 strictly\r\n\r\n~/.venv/lib/python3.7/site-packages/httpx/_models.py in __init__(self, url, allow_relative, params)\r\n    104         if not allow_relative:\r\n    105             if not self.scheme:\r\n--> 106                 raise InvalidURL(\"No scheme included in URL.\")\r\n    107             if not self.host:\r\n    108                 raise InvalidURL(\"No host included in URL.\")\r\n\r\nInvalidURL: No scheme included in URL.\r\n```\r\n\r\nThis works though:\r\n\r\n```python\r\nIn [3]: import httpx \r\n   ...: from httpx._exceptions import InvalidURL                                                                                                                            \r\n\r\nIn [4]: try: \r\n   ...:     httpx.get(\"foo.bar\") \r\n   ...: except InvalidURL: \r\n   ...:     pass \r\n   ...:  \r\n```\n", "before_files": [{"content": "__title__ = \"httpx\"\n__description__ = \"A next generation HTTP client, for Python 3.\"\n__version__ = \"0.12.0\"\n", "path": "httpx/__version__.py"}]}