diff --git a/docs/examples/types_urls.py b/docs/examples/types_urls.py
--- a/docs/examples/types_urls.py
+++ b/docs/examples/types_urls.py
@@ -7,6 +7,7 @@ class MyModel(BaseModel):
 
 m = MyModel(url='http://www.example.com')
 print(m.url)
+
 try:
     MyModel(url='ftp://invalid.url')
 except ValidationError as e:
diff --git a/pydantic/networks.py b/pydantic/networks.py
--- a/pydantic/networks.py
+++ b/pydantic/networks.py
@@ -43,7 +43,6 @@
     'validate_email',
 ]
 
-
 _url_regex_cache = None
 _ascii_domain_regex_cache = None
 _int_domain_regex_cache = None
@@ -54,7 +53,7 @@ def url_regex() -> Pattern[str]:
     if _url_regex_cache is None:
         _url_regex_cache = re.compile(
             r'(?:(?P<scheme>[a-z][a-z0-9+\-.]+)://)?'  # scheme https://tools.ietf.org/html/rfc3986#appendix-A
-            r'(?:(?P<user>[^\s:/]+)(?::(?P<password>[^\s/]*))?@)?'  # user info
+            r'(?:(?P<user>[^\s:/]*)(?::(?P<password>[^\s/]*))?@)?'  # user info
             r'(?:'
             r'(?P<ipv4>(?:\d{1,3}\.){3}\d{1,3})|'  # ipv4
             r'(?P<ipv6>\[[A-F0-9]*:[A-F0-9:]+\])|'  # ipv6
@@ -147,8 +146,9 @@ def build(
         url = scheme + '://'
         if user:
             url += user
-            if password:
-                url += ':' + password
+        if password:
+            url += ':' + password
+        if user or password:
             url += '@'
         url += host
         if port:
@@ -183,20 +183,7 @@ def validate(cls, value: Any, field: 'ModelField', config: 'BaseConfig') -> 'Any
         assert m, 'URL regex failed unexpectedly'
 
         parts = m.groupdict()
-        scheme = parts['scheme']
-        if scheme is None:
-            raise errors.UrlSchemeError()
-
-        if cls.allowed_schemes and scheme.lower() not in cls.allowed_schemes:
-            raise errors.UrlSchemePermittedError(cls.allowed_schemes)
-
-        port = parts['port']
-        if port is not None and int(port) > 65_535:
-            raise errors.UrlPortError()
-
-        user = parts['user']
-        if cls.user_required and user is None:
-            raise errors.UrlUserInfoError()
+        parts = cls.validate_parts(parts)
 
         host, tld, host_type, rebuild = cls.validate_host(parts)
 
@@ -205,18 +192,41 @@ def validate(cls, value: Any, field: 'ModelField', config: 'BaseConfig') -> 'Any
 
         return cls(
             None if rebuild else url,
-            scheme=scheme,
-            user=user,
+            scheme=parts['scheme'],
+            user=parts['user'],
             password=parts['password'],
             host=host,
             tld=tld,
             host_type=host_type,
-            port=port,
+            port=parts['port'],
             path=parts['path'],
             query=parts['query'],
             fragment=parts['fragment'],
         )
 
+    @classmethod
+    def validate_parts(cls, parts: Dict[str, str]) -> Dict[str, str]:
+        """
+        A method used to validate parts of an URL.
+        Could be overridden to set default values for parts if missing
+        """
+        scheme = parts['scheme']
+        if scheme is None:
+            raise errors.UrlSchemeError()
+
+        if cls.allowed_schemes and scheme.lower() not in cls.allowed_schemes:
+            raise errors.UrlSchemePermittedError(cls.allowed_schemes)
+
+        port = parts['port']
+        if port is not None and int(port) > 65_535:
+            raise errors.UrlPortError()
+
+        user = parts['user']
+        if cls.user_required and user is None:
+            raise errors.UrlUserInfoError()
+
+        return parts
+
     @classmethod
     def validate_host(cls, parts: Dict[str, str]) -> Tuple[str, Optional[str], str, bool]:
         host, tld, host_type, rebuild = None, None, None, False
@@ -279,7 +289,19 @@ class PostgresDsn(AnyUrl):
 
 
 class RedisDsn(AnyUrl):
-    allowed_schemes = {'redis'}
+    allowed_schemes = {'redis', 'rediss'}
+
+    @classmethod
+    def validate_parts(cls, parts: Dict[str, str]) -> Dict[str, str]:
+        defaults = {
+            'domain': 'localhost' if not (parts['ipv4'] or parts['ipv6']) else '',
+            'port': '6379',
+            'path': '/0',
+        }
+        for key, value in defaults.items():
+            if not parts[key]:
+                parts[key] = value
+        return super().validate_parts(parts)
 
 
 def stricturl(

diff --git a/tests/test_networks.py b/tests/test_networks.py
--- a/tests/test_networks.py
+++ b/tests/test_networks.py
@@ -190,6 +190,13 @@ def test_user_no_password():
     assert url.host == 'example.org'
 
 
+def test_user_info_no_user():
+    url = validate_url('http://:password@example.org')
+    assert url.user == ''
+    assert url.password == 'password'
+    assert url.host == 'example.org'
+
+
 def test_at_in_path():
     url = validate_url('https://twitter.com/@handle')
     assert url.scheme == 'https'
@@ -321,21 +328,35 @@ def test_redis_dsns():
     class Model(BaseModel):
         a: RedisDsn
 
-    m = Model(a='redis://user:pass@localhost:5432/app')
-    assert m.a == 'redis://user:pass@localhost:5432/app'
+    m = Model(a='redis://user:pass@localhost:1234/app')
+    assert m.a == 'redis://user:pass@localhost:1234/app'
     assert m.a.user == 'user'
     assert m.a.password == 'pass'
 
+    m = Model(a='rediss://user:pass@localhost:1234/app')
+    assert m.a == 'rediss://user:pass@localhost:1234/app'
+
+    m = Model(a='rediss://:pass@localhost:1234')
+    assert m.a == 'rediss://:pass@localhost:1234/0'
+
     with pytest.raises(ValidationError) as exc_info:
         Model(a='http://example.org')
     assert exc_info.value.errors()[0]['type'] == 'value_error.url.scheme'
 
-    # password is not required for redis
-    m = Model(a='redis://localhost:5432/app')
-    assert m.a == 'redis://localhost:5432/app'
+    # Password is not required for Redis protocol
+    m = Model(a='redis://localhost:1234/app')
+    assert m.a == 'redis://localhost:1234/app'
     assert m.a.user is None
     assert m.a.password is None
 
+    # Only schema is required for Redis protocol. Otherwise it will be set to default
+    # https://www.iana.org/assignments/uri-schemes/prov/redis
+    m = Model(a='rediss://')
+    assert m.a.scheme == 'rediss'
+    assert m.a.host == 'localhost'
+    assert m.a.port == '6379'
+    assert m.a.path == '/0'
+
 
 def test_custom_schemes():
     class Model(BaseModel):

RedisDsn canot enable redis url with password and ssl schema
`redis://:password@redishost` & `rediss://redis` are valid in redis.py, but cause ValidationError in RedisDsn. 

```
In [7]: import redis

In [8]: r = redis.StrictRedis.from_url('rediss://redis')

In [9]: r = redis.StrictRedis.from_url('redis://:123@redis')

In [10]:
```

* type error list below
```
In [3]: from pydantic import BaseModel, RedisDsn

In [4]: class RedisURLModel(BaseModel):
   ...:     url: RedisDsn = None
   ...:

In [5]: c = RedisURLModel(url='redis://:myredispwd@redis')
---------------------------------------------------------------------------
ValidationError                           Traceback (most recent call last)
<ipython-input-5-23cad9c7fe6b> in <module>
----> 1 c = RedisURLModel(url='redis://:myredispwd@redis')

/usr/local/lib/python3.7/site-packages/pydantic/main.cpython-37m-x86_64-linux-gnu.so in pydantic.main.BaseModel.__init__()

ValidationError: 1 validation error for RedisURLModel
url
  URL host invalid (type=value_error.url.host)

In [6]: c = RedisURLModel(url='rediss://redis')
---------------------------------------------------------------------------
ValidationError                           Traceback (most recent call last)
<ipython-input-6-39558dddb3bc> in <module>
----> 1 c = RedisURLModel(url='rediss://redis')

/usr/local/lib/python3.7/site-packages/pydantic/main.cpython-37m-x86_64-linux-gnu.so in pydantic.main.BaseModel.__init__()

ValidationError: 1 validation error for RedisURLModel
url
  URL scheme not permitted (type=value_error.url.scheme; allowed_schemes={'redis'})
```

tests/test_networks.py::test_user_info_no_user tests/test_networks.py::test_redis_dsns
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+psycopg2://postgres:postgres@localhost:5432/hatch] 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_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_parts tests/test_networks.py::test_url_repr tests/test_networks.py::test_ipv4_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_at_in_path 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_postgres_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_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