Package: python3-pydantic
Version: 1.10.4-1
Severity: normal

Dear Maintainer,

If the package python3-pedantic is installed but the package
python3-email-validator is not installed: validating EmailStr fails.

I think that python3-email-validator should be a dependency (or
Suggests?) of python3-pedantic.

pydantic suggests "pip install pydantic[email]" to fix the issue which
is not the best solution.

Example:
--------------
carles@pinux:~/git/email$ cat c.py
#!/usr/bin/env python3

from pydantic import BaseModel, EmailStr

class User(BaseModel):
    id: int
    name: str
    email: EmailStr

external_data = {
    "id": 1,
    "name": "John",
    "email": "j...@example.org",
}

user = User(**external_data)
carles@pinux:~/git/email$ ./c.py
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pydantic/networks.py", line 578, in 
import_email_validator
    import email_validator
ModuleNotFoundError: No module named 'email_validator'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/carles/git/email/./c.py", line 5, in <module>
    class User(BaseModel):
  File "/usr/lib/python3/dist-packages/pydantic/main.py", line 198, in __new__
    fields[ann_name] = ModelField.infer(
                       ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/pydantic/fields.py", line 506, in infer
    return cls(
           ^^^^
  File "/usr/lib/python3/dist-packages/pydantic/fields.py", line 436, in 
__init__
    self.prepare()
  File "/usr/lib/python3/dist-packages/pydantic/fields.py", line 557, in prepare
    self.populate_validators()
  File "/usr/lib/python3/dist-packages/pydantic/fields.py", line 829, in 
populate_validators
    v_funcs = (
              ^
  File "/usr/lib/python3/dist-packages/pydantic/networks.py", line 591, in 
__get_validators__
    import_email_validator()
  File "/usr/lib/python3/dist-packages/pydantic/networks.py", line 580, in 
import_email_validator
    raise ImportError('email-validator is not installed, run `pip install 
pydantic[email]`') from e
ImportError: email-validator is not installed, run `pip install pydantic[email]`
carles@pinux:~/git/email$ sudo apt install python3-email-validator
[...]
carles@pinux:~/git/email$ ./c.py
carles@pinux:~/git/email$
--------------

-- System Information:
Debian Release: 12.5
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 6.1.0-18-amd64 (SMP w/4 CPU threads; PREEMPT)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=ca_ES.UTF-8, LC_CTYPE=ca_ES.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages python3-pydantic depends on:
ii  python3                    3.11.2-1+b1
ii  python3-typing-extensions  4.4.0-1

python3-pydantic recommends no packages.

python3-pydantic suggests no packages.

-- no debconf information

Reply via email to