diff --git a/docs/examples/types_url_building.py b/docs/examples/types_url_building.py
new file mode 100644
--- /dev/null
+++ b/docs/examples/types_url_building.py
@@ -0,0 +1,10 @@
+from pydantic import AnyUrl, stricturl
+
+url = AnyUrl.build(scheme='https', host='example.com', query='query=my query')
+print(url)
+
+my_url_builder = stricturl(quote_plus=True)
+url = my_url_builder.build(
+    scheme='http', host='example.com', query='query=my query'
+)
+print(url)
diff --git a/pydantic/networks.py b/pydantic/networks.py
--- a/pydantic/networks.py
+++ b/pydantic/networks.py
@@ -26,6 +26,7 @@
     cast,
     no_type_check,
 )
+from urllib.parse import quote, quote_plus
 
 from . import errors
 from .utils import Representation, update_not_none
@@ -177,6 +178,7 @@ class AnyUrl(str):
     user_required: bool = False
     host_required: bool = True
     hidden_parts: Set[str] = set()
+    quote_plus: bool = False
 
     __slots__ = ('scheme', 'user', 'password', 'host', 'tld', 'host_type', 'port', 'path', 'query', 'fragment')
 
@@ -239,18 +241,19 @@ def build(
 
         url = scheme + '://'
         if user:
-            url += user
+            url += cls.quote(user)
         if password:
-            url += ':' + password
+            url += ':' + cls.quote(password)
         if user or password:
             url += '@'
         url += host
         if port and ('port' not in cls.hidden_parts or cls.get_default_parts(parts).get('port') != port):
             url += ':' + port
         if path:
-            url += path
+            url += '/'.join(map(cls.quote, path.split('/')))
         if query:
-            url += '?' + query
+            queries = query.split('&')
+            url += '?' + '&'.join(map(lambda s: '='.join(map(cls.quote, s.split('='))), queries))
         if fragment:
             url += '#' + fragment
         return url
@@ -391,6 +394,10 @@ def apply_default_parts(cls, parts: 'Parts') -> 'Parts':
                 parts[key] = value  # type: ignore[literal-required]
         return parts
 
+    @classmethod
+    def quote(cls, string: str, safe: str = '') -> str:
+        return quote_plus(string, safe) if cls.quote_plus else quote(string, safe)
+
     def __repr__(self) -> str:
         extra = ', '.join(f'{n}={getattr(self, n)!r}' for n in self.__slots__ if getattr(self, n) is not None)
         return f'{self.__class__.__name__}({super().__repr__()}, {extra})'
@@ -558,6 +565,7 @@ def stricturl(
     tld_required: bool = True,
     host_required: bool = True,
     allowed_schemes: Optional[Collection[str]] = None,
+    quote_plus: bool = False,
 ) -> Type[AnyUrl]:
     # use kwargs then define conf in a dict to aid with IDE type hinting
     namespace = dict(
@@ -567,6 +575,7 @@ def stricturl(
         tld_required=tld_required,
         host_required=host_required,
         allowed_schemes=allowed_schemes,
+        quote_plus=quote_plus,
     )
     return type('UrlValue', (AnyUrl,), namespace)
 

Should this also include the option for `quote_plus` in case it's needed for compatibility reasons?
Hi @kkirsche!

Sorry I'm not following, what are the compatibility reasons?

Not all APIs, in my experience at least, support percent-encoded spaces (`%20` instead of ` `). Some, but not all, only accept plus-variants (`+` instead of ` `) of the space encodings, requiring the use of `quote_plus` instead of `quote`.
Yeah sure I think this should be included.

diff --git a/tests/test_networks.py b/tests/test_networks.py
--- a/tests/test_networks.py
+++ b/tests/test_networks.py
@@ -372,7 +372,7 @@ class Model(BaseModel):
 
 @pytest.mark.parametrize(
     'value',
-    ['file:///foo/bar', 'file://localhost/foo/bar' 'file:////localhost/foo/bar'],
+    ['file:///foo/bar', 'file://localhost/foo/bar', 'file:////localhost/foo/bar'],
 )
 def test_file_url_success(value):
     class Model(BaseModel):
@@ -679,12 +679,31 @@ class Model2(BaseModel):
         (dict(scheme='ws', user='foo', password='x', host='example.net'), 'ws://foo:x@example.net'),
         (dict(scheme='ws', host='example.net', query='a=b', fragment='c=d'), 'ws://example.net?a=b#c=d'),
         (dict(scheme='http', host='example.net', port='1234'), 'http://example.net:1234'),
+        (dict(scheme='http', user='foo@bar', host='example.net'), 'http://foo%40bar@example.net'),
+        (dict(scheme='http', user='foo', password='a b', host='example.net'), 'http://foo:a%20b@example.net'),
+        (dict(scheme='http', host='example.net', query='q=foo bar'), 'http://example.net?q=foo%20bar'),
+        (dict(scheme='http', host='example.net', path="/m&m's"), 'http://example.net/m%26m%27s'),
     ],
 )
 def test_build_url(kwargs, expected):
     assert AnyUrl(None, **kwargs) == expected
 
 
+@pytest.mark.parametrize(
+    'kwargs,expected',
+    [
+        (dict(scheme='https', host='example.com', query='query=my query'), 'https://example.com?query=my+query'),
+        (
+            dict(scheme='https', host='example.com', user='my name', password='a password'),
+            'https://my+name:a+password@example.com',
+        ),
+        (dict(scheme='https', host='example.com', path='/this is a path'), 'https://example.com/this+is+a+path'),
+    ],
+)
+def test_build_url_quote_plus(kwargs, expected):
+    assert stricturl(quote_plus=True).build(**kwargs) == expected
+
+
 @pytest.mark.parametrize(
     'kwargs,expected',
     [

*Url.build functions doesn't percent-encode arguments
### Checks

* [x] I added a descriptive title to this issue
* [x] I have searched (google, github) for similar issues and couldn't find anything
* [x] I have read and followed [the docs](https://pydantic-docs.helpmanual.io/) and still think this is a bug

# Bug
Using (AnyUrl, HttpUrl, AnyHttpUrl) build functions results an unusable URL if characters like: `:`, `/`, `?`, `#`, `[`, ` `, `]`, `@` exists in the following arguments: `user`, `password`, `path`, `query`, `fragment`.

In other words these arguments should be [Percent-Encoded](https://tools.ietf.org/html/rfc3986#section-2.1) to work properly and not
produce a Url that have characters that conflicts with the [url-spec](https://www.w3.org/Addressing/URL/url-spec.txt).

Output of `python -c "import pydantic.utils; print(pydantic.utils.version_info())"`:
```
             pydantic version: 1.8.2
            pydantic compiled: True
                 install path: /.../.venv/lib/python3.9/site-packages/pydantic
               python version: 3.9.6 (default, Jul  3 2021, 17:50:42)  [GCC 7.5.0]
                     platform: Linux-5.4.0-80-generic-x86_64-with-glibc2.27
     optional deps. installed: ['dotenv', 'email-validator', 'typing-extensions']
```

# Example

```py
>>> from pydantic import AnyUrl, HttpUrl, AnyHttpUrl
>>>
>>> AnyUrl.build(
...    scheme="ws",
...    user="@AwesomeUser",
...    password="Pa##w0rd?:/",
...    host="localhost",
...    port="5000"
...)
'ws://@AwesomeUser:Pa##w0rd?:/@localhost:5000'
>>> # ...
>>> # The same result with `HttpUrl`, `AnyHttpUrl`
```

The easiest way to percent-encode in Python is to use the `urllib.parse.quote` function

tests/test_networks.py::test_build_url[kwargs4-http://foo%40bar@example.net] tests/test_networks.py::test_build_url[kwargs5-http://foo:a%20b@example.net] tests/test_networks.py::test_build_url[kwargs6-http://example.net?q=foo%20bar] tests/test_networks.py::test_build_url[kwargs7-http://example.net/m%26m%27s] tests/test_networks.py::test_build_url_quote_plus[kwargs0-https://example.com?query=my+query] tests/test_networks.py::test_build_url_quote_plus[kwargs1-https://my+name:a+password@example.com] tests/test_networks.py::test_build_url_quote_plus[kwargs2-https://example.com/this+is+a+path]
tests/test_networks.py::test_any_url_success[http://example.org] tests/test_networks.py::test_any_url_success[http://test] tests/test_networks.py::test_any_url_success[http://localhost0] tests/test_networks.py::test_any_url_success[https://example.org/whatever/next/] tests/test_networks.py::test_any_url_success[postgres://user:pass@localhost:5432/app] tests/test_networks.py::test_any_url_success[postgres://just-user@localhost:5432/app] tests/test_networks.py::test_any_url_success[postgresql+asyncpg://user:pass@localhost:5432/app] tests/test_networks.py::test_any_url_success[postgresql+pg8000://user:pass@localhost:5432/app] tests/test_networks.py::test_any_url_success[postgresql+psycopg2://postgres:postgres@localhost:5432/hatch] tests/test_networks.py::test_any_url_success[postgresql+psycopg2cffi://user:pass@localhost:5432/app] tests/test_networks.py::test_any_url_success[postgresql+py-postgresql://user:pass@localhost:5432/app] tests/test_networks.py::test_any_url_success[postgresql+pygresql://user:pass@localhost:5432/app] tests/test_networks.py::test_any_url_success[foo-bar://example.org] tests/test_networks.py::test_any_url_success[foo.bar://example.org] tests/test_networks.py::test_any_url_success[foo0bar://example.org] tests/test_networks.py::test_any_url_success[https://example.org] tests/test_networks.py::test_any_url_success[http://localhost1] tests/test_networks.py::test_any_url_success[http://localhost/] tests/test_networks.py::test_any_url_success[http://localhost:8000] tests/test_networks.py::test_any_url_success[http://localhost:8000/] tests/test_networks.py::test_any_url_success[https://foo_bar.example.com/] tests/test_networks.py::test_any_url_success[ftp://example.org] tests/test_networks.py::test_any_url_success[ftps://example.org] tests/test_networks.py::test_any_url_success[http://example.co.jp] tests/test_networks.py::test_any_url_success[http://www.example.com/a%C2%B1b] tests/test_networks.py::test_any_url_success[http://www.example.com/~username/] tests/test_networks.py::test_any_url_success[http://info.example.com?fred] tests/test_networks.py::test_any_url_success[http://info.example.com/?fred] tests/test_networks.py::test_any_url_success[http://xn--mgbh0fb.xn--kgbechtv/] tests/test_networks.py::test_any_url_success[http://example.com/blue/red%3Fand+green] tests/test_networks.py::test_any_url_success[http://www.example.com/?array%5Bkey%5D=value] tests/test_networks.py::test_any_url_success[http://xn--rsum-bpad.example.org/] tests/test_networks.py::test_any_url_success[http://123.45.67.8/] tests/test_networks.py::test_any_url_success[http://123.45.67.8:8329/] tests/test_networks.py::test_any_url_success[http://[2001:db8::ff00:42]:8329] tests/test_networks.py::test_any_url_success[http://[2001::1]:8329] tests/test_networks.py::test_any_url_success[http://[2001:db8::1]/] tests/test_networks.py::test_any_url_success[http://www.example.com:8000/foo] tests/test_networks.py::test_any_url_success[http://www.cwi.nl:80/%7Eguido/Python.html] tests/test_networks.py::test_any_url_success[https://www.python.org/\u043f\u0443\u0442\u044c] tests/test_networks.py::test_any_url_success[http://\u0430\u043d\u0434\u0440\u0435\u0439@example.com] tests/test_networks.py::test_any_url_success[https://example.com] tests/test_networks.py::test_any_url_success[https://exam_ple.com/] tests/test_networks.py::test_any_url_success[http://twitter.com/@handle/] tests/test_networks.py::test_any_url_success[http://11.11.11.11.example.com/action] tests/test_networks.py::test_any_url_success[http://abc.11.11.11.11.example.com/action] tests/test_networks.py::test_any_url_success[http://example#] tests/test_networks.py::test_any_url_success[http://example/#] tests/test_networks.py::test_any_url_success[http://example/#fragment] tests/test_networks.py::test_any_url_success[http://example/?#] tests/test_networks.py::test_any_url_success[http://example.org/path#] tests/test_networks.py::test_any_url_success[http://example.org/path#fragment] tests/test_networks.py::test_any_url_success[http://example.org/path?query#] tests/test_networks.py::test_any_url_success[http://example.org/path?query#fragment] tests/test_networks.py::test_any_url_success[file://localhost/foo/bar] tests/test_networks.py::test_any_url_invalid[http:///example.com/-value_error.url.host-URL tests/test_networks.py::test_any_url_invalid[https:///example.com/-value_error.url.host-URL tests/test_networks.py::test_any_url_invalid[http://.example.com:8000/foo-value_error.url.host-URL tests/test_networks.py::test_any_url_invalid[https://example.org\\-value_error.url.host-URL tests/test_networks.py::test_any_url_invalid[https://exampl$e.org-value_error.url.host-URL tests/test_networks.py::test_any_url_invalid[http://??-value_error.url.host-URL tests/test_networks.py::test_any_url_invalid[http://.-value_error.url.host-URL tests/test_networks.py::test_any_url_invalid[http://..-value_error.url.host-URL tests/test_networks.py::test_any_url_invalid[https://example.org tests/test_networks.py::test_any_url_invalid[$https://example.org-value_error.url.scheme-invalid tests/test_networks.py::test_any_url_invalid[../icons/logo.gif-value_error.url.scheme-invalid tests/test_networks.py::test_any_url_invalid[abc-value_error.url.scheme-invalid tests/test_networks.py::test_any_url_invalid[..-value_error.url.scheme-invalid tests/test_networks.py::test_any_url_invalid[/-value_error.url.scheme-invalid tests/test_networks.py::test_any_url_invalid[+http://example.com/-value_error.url.scheme-invalid tests/test_networks.py::test_any_url_invalid[ht*tp://example.com/-value_error.url.scheme-invalid tests/test_networks.py::test_any_url_invalid[ tests/test_networks.py::test_any_url_invalid[-value_error.any_str.min_length-ensure tests/test_networks.py::test_any_url_invalid[None-type_error.none.not_allowed-none tests/test_networks.py::test_any_url_invalid[http://2001:db8::ff00:42:8329-value_error.url.extra-URL tests/test_networks.py::test_any_url_invalid[http://[192.168.1.1]:8329-value_error.url.host-URL tests/test_networks.py::test_any_url_invalid[http://example.com:99999-value_error.url.port-URL tests/test_networks.py::test_any_url_invalid[http://example##-value_error.url.extra-URL tests/test_networks.py::test_any_url_invalid[http://example/##-value_error.url.extra-URL tests/test_networks.py::test_any_url_invalid[file:///foo/bar-value_error.url.host-URL tests/test_networks.py::test_any_url_parts tests/test_networks.py::test_url_repr tests/test_networks.py::test_ipv4_port tests/test_networks.py::test_ipv4_no_port tests/test_networks.py::test_ipv6_port tests/test_networks.py::test_int_domain tests/test_networks.py::test_co_uk tests/test_networks.py::test_user_no_password tests/test_networks.py::test_user_info_no_user tests/test_networks.py::test_at_in_path tests/test_networks.py::test_fragment_without_query tests/test_networks.py::test_http_url_success[http://example.org] tests/test_networks.py::test_http_url_success[http://example.org/foobar] tests/test_networks.py::test_http_url_success[http://example.org.] tests/test_networks.py::test_http_url_success[http://example.org./foobar] tests/test_networks.py::test_http_url_success[HTTP://EXAMPLE.ORG] tests/test_networks.py::test_http_url_success[https://example.org] tests/test_networks.py::test_http_url_success[https://example.org?a=1&b=2] tests/test_networks.py::test_http_url_success[https://example.org#a=3;b=3] tests/test_networks.py::test_http_url_success[https://foo_bar.example.com/] tests/test_networks.py::test_http_url_success[https://exam_ple.com/] tests/test_networks.py::test_http_url_success[https://example.xn--p1ai] tests/test_networks.py::test_http_url_success[https://example.xn--vermgensberatung-pwb] tests/test_networks.py::test_http_url_success[https://example.xn--zfr164b] tests/test_networks.py::test_http_url_invalid[ftp://example.com/-value_error.url.scheme-URL tests/test_networks.py::test_http_url_invalid[http://foobar/-value_error.url.host-URL tests/test_networks.py::test_http_url_invalid[http://localhost/-value_error.url.host-URL tests/test_networks.py::test_http_url_invalid[https://example.123-value_error.url.host-URL tests/test_networks.py::test_http_url_invalid[https://example.ab123-value_error.url.host-URL tests/test_networks.py::test_http_url_invalid[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-value_error.any_str.max_length-ensure tests/test_networks.py::test_coerse_url[ tests/test_networks.py::test_coerse_url[https://www.example.com-https://www.example.com] tests/test_networks.py::test_coerse_url[https://www.\u0430\u0440\u0440\u04cf\u0435.com/-https://www.xn--80ak6aa92e.com/] tests/test_networks.py::test_coerse_url[https://exampl\xa3e.org-https://xn--example-gia.org] tests/test_networks.py::test_coerse_url[https://example.\u73e0\u5b9d-https://example.xn--pbt977c] tests/test_networks.py::test_coerse_url[https://example.verm\xf6gensberatung-https://example.xn--vermgensberatung-pwb] tests/test_networks.py::test_coerse_url[https://example.\u0440\u0444-https://example.xn--p1ai] tests/test_networks.py::test_coerse_url[https://exampl\xa3e.\u73e0\u5b9d-https://xn--example-gia.xn--pbt977c] tests/test_networks.py::test_parses_tld[ tests/test_networks.py::test_parses_tld[https://www.example.com-com] tests/test_networks.py::test_parses_tld[https://www.example.com?param=value-com] tests/test_networks.py::test_parses_tld[https://example.\u73e0\u5b9d-xn--pbt977c] tests/test_networks.py::test_parses_tld[https://exampl\xa3e.\u73e0\u5b9d-xn--pbt977c] tests/test_networks.py::test_parses_tld[https://example.verm\xf6gensberatung-xn--vermgensberatung-pwb] tests/test_networks.py::test_parses_tld[https://example.\u0440\u0444-xn--p1ai] tests/test_networks.py::test_parses_tld[https://example.\u0440\u0444?param=value-xn--p1ai] tests/test_networks.py::test_file_url_success[file:///foo/bar] tests/test_networks.py::test_file_url_success[file://localhost/foo/bar] tests/test_networks.py::test_file_url_success[file:////localhost/foo/bar] tests/test_networks.py::test_get_default_parts tests/test_networks.py::test_http_urls_default_port[https://www.example.com-443] tests/test_networks.py::test_http_urls_default_port[https://www.example.com:443-443] tests/test_networks.py::test_http_urls_default_port[https://www.example.com:8089-8089] tests/test_networks.py::test_http_urls_default_port[http://www.example.com-80] tests/test_networks.py::test_http_urls_default_port[http://www.example.com:80-80] tests/test_networks.py::test_http_urls_default_port[http://www.example.com:8080-8080] tests/test_networks.py::test_postgres_dsns[postgres://user:pass@localhost:5432/app] tests/test_networks.py::test_postgres_dsns[postgresql://user:pass@localhost:5432/app] tests/test_networks.py::test_postgres_dsns[postgresql+asyncpg://user:pass@localhost:5432/app] tests/test_networks.py::test_postgres_dsns[postgres://user:pass@host1.db.net,host2.db.net:6432/app] tests/test_networks.py::test_postgres_dsns_validation_error[postgres://user:pass@host1.db.net:4321,/foo/bar:5432/app-error_message0] tests/test_networks.py::test_postgres_dsns_validation_error[postgres://user:pass@host1.db.net,/app-error_message1] tests/test_networks.py::test_postgres_dsns_validation_error[postgres://user:pass@/foo/bar:5432,host1.db.net:4321/app-error_message2] tests/test_networks.py::test_postgres_dsns_validation_error[postgres://localhost:5432/app-error_message3] tests/test_networks.py::test_postgres_dsns_validation_error[postgres://user@/foo/bar:5432/app-error_message4] tests/test_networks.py::test_postgres_dsns_validation_error[http://example.org-error_message5] tests/test_networks.py::test_multihost_postgres_dsns tests/test_networks.py::test_cockroach_dsns tests/test_networks.py::test_amqp_dsns tests/test_networks.py::test_redis_dsns tests/test_networks.py::test_mongodb_dsns tests/test_networks.py::test_kafka_dsns tests/test_networks.py::test_custom_schemes tests/test_networks.py::test_build_url[kwargs0-ws://foo@example.net] tests/test_networks.py::test_build_url[kwargs1-ws://foo:x@example.net] tests/test_networks.py::test_build_url[kwargs2-ws://example.net?a=b#c=d] tests/test_networks.py::test_build_url[kwargs3-http://example.net:1234] tests/test_networks.py::test_build_any_http_url[AnyHttpUrl-kwargs0-http://example.net] tests/test_networks.py::test_build_any_http_url[AnyHttpUrl-kwargs1-https://example.net] tests/test_networks.py::test_build_any_http_url[AnyHttpUrl-kwargs2-http://foo@example.net] tests/test_networks.py::test_build_any_http_url[AnyHttpUrl-kwargs3-https://foo@example.net] tests/test_networks.py::test_build_any_http_url[AnyHttpUrl-kwargs4-http://foo@example.net:123] tests/test_networks.py::test_build_any_http_url[AnyHttpUrl-kwargs5-https://foo@example.net:123] tests/test_networks.py::test_build_any_http_url[AnyHttpUrl-kwargs6-http://foo:x@example.net] tests/test_networks.py::test_build_any_http_url[AnyHttpUrl-kwargs7-http2://foo:x@example.net] tests/test_networks.py::test_build_any_http_url[AnyHttpUrl-kwargs8-http://example.net?a=b#c=d] tests/test_networks.py::test_build_any_http_url[AnyHttpUrl-kwargs9-http2://example.net?a=b#c=d] tests/test_networks.py::test_build_any_http_url[AnyHttpUrl-kwargs10-http://example.net:1234] tests/test_networks.py::test_build_any_http_url[AnyHttpUrl-kwargs11-https://example.net:1234] tests/test_networks.py::test_build_any_http_url[HttpUrl-kwargs0-http://example.net] tests/test_networks.py::test_build_any_http_url[HttpUrl-kwargs1-https://example.net] tests/test_networks.py::test_build_any_http_url[HttpUrl-kwargs2-http://foo@example.net] tests/test_networks.py::test_build_any_http_url[HttpUrl-kwargs3-https://foo@example.net] tests/test_networks.py::test_build_any_http_url[HttpUrl-kwargs4-http://foo@example.net:123] tests/test_networks.py::test_build_any_http_url[HttpUrl-kwargs5-https://foo@example.net:123] tests/test_networks.py::test_build_any_http_url[HttpUrl-kwargs6-http://foo:x@example.net] tests/test_networks.py::test_build_any_http_url[HttpUrl-kwargs7-http2://foo:x@example.net] tests/test_networks.py::test_build_any_http_url[HttpUrl-kwargs8-http://example.net?a=b#c=d] tests/test_networks.py::test_build_any_http_url[HttpUrl-kwargs9-http2://example.net?a=b#c=d] tests/test_networks.py::test_build_any_http_url[HttpUrl-kwargs10-http://example.net:1234] tests/test_networks.py::test_build_any_http_url[HttpUrl-kwargs11-https://example.net:1234] tests/test_networks.py::test_build_http_url_port[AnyHttpUrl-kwargs0-http://foo@example.net:80] tests/test_networks.py::test_build_http_url_port[AnyHttpUrl-kwargs1-https://foo@example.net:443] tests/test_networks.py::test_build_http_url_port[HttpUrl-kwargs2-http://foo@example.net] tests/test_networks.py::test_build_http_url_port[HttpUrl-kwargs3-https://foo@example.net] tests/test_networks.py::test_son tests/test_networks.py::test_address_valid[foobar@example.com-foobar-foobar@example.com] tests/test_networks.py::test_address_valid[s@muelcolvin.com-s-s@muelcolvin.com] tests/test_networks.py::test_address_valid[Samuel tests/test_networks.py::test_address_valid[foobar tests/test_networks.py::test_address_valid[ tests/test_networks.py::test_address_valid[foo.bar@example.com tests/test_networks.py::test_address_valid[foo tests/test_networks.py::test_address_valid[FOO tests/test_networks.py::test_address_valid[<FOOBAR@example.com> tests/test_networks.py::test_address_valid[\xf1o\xf1\xf3@example.com-\xf1o\xf1\xf3-\xf1o\xf1\xf3@example.com] tests/test_networks.py::test_address_valid[\u6211\u8cb7@example.com-\u6211\u8cb7-\u6211\u8cb7@example.com] tests/test_networks.py::test_address_valid[\u7532\u6590\u9ed2\u5ddd\u65e5\u672c@example.com-\u7532\u6590\u9ed2\u5ddd\u65e5\u672c-\u7532\u6590\u9ed2\u5ddd\u65e5\u672c@example.com] tests/test_networks.py::test_address_valid[\u0447\u0435\u0431\u0443\u0440\u0430\u0448\u043a\u0430\u044f\u0449\u0438\u043a-\u0441-\u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u0430\u043c\u0438.\u0440\u0444@example.com-\u0447\u0435\u0431\u0443\u0440\u0430\u0448\u043a\u0430\u044f\u0449\u0438\u043a-\u0441-\u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u0430\u043c\u0438.\u0440\u0444-\u0447\u0435\u0431\u0443\u0440\u0430\u0448\u043a\u0430\u044f\u0449\u0438\u043a-\u0441-\u0430\u043f\u0435\u043b\u044c\u0441\u0438\u043d\u0430\u043c\u0438.\u0440\u0444@example.com] tests/test_networks.py::test_address_valid[\u0909\u0926\u093e\u0939\u0930\u0923.\u092a\u0930\u0940\u0915\u094d\u0937@domain.with.idn.tld-\u0909\u0926\u093e\u0939\u0930\u0923.\u092a\u0930\u0940\u0915\u094d\u0937-\u0909\u0926\u093e\u0939\u0930\u0923.\u092a\u0930\u0940\u0915\u094d\u0937@domain.with.idn.tld] tests/test_networks.py::test_address_valid[foo.bar@example.com-foo.bar-foo.bar@example.com] tests/test_networks.py::test_address_valid[foo.bar@exam-ple.com tests/test_networks.py::test_address_valid[\u03b9\u03c9\u03ac\u03bd\u03bd\u03b7\u03c2@\u03b5\u03b5\u03c4\u03c4.gr-\u03b9\u03c9\u03ac\u03bd\u03bd\u03b7\u03c2-\u03b9\u03c9\u03ac\u03bd\u03bd\u03b7\u03c2@\u03b5\u03b5\u03c4\u03c4.gr] tests/test_networks.py::test_address_invalid[f tests/test_networks.py::test_address_invalid[foo.bar@exam\nple.com tests/test_networks.py::test_address_invalid[foobar] tests/test_networks.py::test_address_invalid[foobar tests/test_networks.py::test_address_invalid[@example.com] tests/test_networks.py::test_address_invalid[foobar@.example.com] tests/test_networks.py::test_address_invalid[foobar@.com] tests/test_networks.py::test_address_invalid[foo tests/test_networks.py::test_address_invalid[foo@bar@example.com] tests/test_networks.py::test_address_invalid[\n@example.com] tests/test_networks.py::test_address_invalid[\r@example.com] tests/test_networks.py::test_address_invalid[\x0c@example.com] tests/test_networks.py::test_address_invalid[ tests/test_networks.py::test_address_invalid[\x1f@example.com] tests/test_networks.py::test_address_invalid["@example.com0] tests/test_networks.py::test_address_invalid["@example.com1] tests/test_networks.py::test_address_invalid[,@example.com] tests/test_networks.py::test_email_str tests/test_networks.py::test_name_email