U nfX@sUdZddlmZddlZddlZddlmZddl m Z m Z m Z m Z mZmZddlmZmZddlmZmZmZmZddlmZmZmZd d lmZmZmZd d l m!Z!d d l"m#Z#d d l$m%Z%erddl&a&dZ'de(d<nda&dddddddddddddddd d!d"d#d$d%d&d'd(gZ)ej*Gd)ddej+Z,eZ-eee,d*d+gd,fZ.eee,d-d*d+gd.fZ/eee,d/d0gd,fZ0eee,d-d/d0gd.fZ1eee,d1gd,fZ2eee,d2gd,fZ3eee,d3d4d5d6d7d8d9d:d;dd?d@gd=fZ5eee,dAdBgd,fZ6eee,dCdDgdEdFdGdHfZ7eee,dIdJgdKdLfZ8eee,dMgdEdNdOfZ9eee,dPdQd/gdEdRdOfZ:eee,dSdTdUdVdWdXdYdZgd[dLfZ;eee,d\d]d^gd[dLfZeree?dffZ@nGdgddZ@GdhddejAZBGdiddZCGdjddZDdkZEde(dl<er@eEZFnGdmddZFdndcdodpZGeGZHdqZIdrdsdtdud%ZJe!eKZLdS)vzEThe networks module contains types for common network-related fields.) annotationsN)version) IPv4Address IPv4Interface IPv4Network IPv6Address IPv6Interface IPv6Network) TYPE_CHECKINGAny) MultiHostUrlPydanticCustomErrorUrl core_schema) AnnotatedSelf TypeAlias)_fields_repr_schema_generation_shared)getattr_migration)GetCoreSchemaHandler)JsonSchemaValuez7str | bytes | int | tuple[str | bytes | int, str | int]r NetworkTypeAnyUrl AnyHttpUrlFileUrlFtpUrlHttpUrl WebsocketUrlAnyWebsocketUrlUrlConstraintsEmailStr NameEmail IPvAnyAddressIPvAnyInterface IPvAnyNetwork PostgresDsn CockroachDsnAmqpDsnRedisDsnMongoDsnKafkaDsnNatsDsnvalidate_emailMySQLDsn MariaDBDsn ClickHouseDsnc@sheZdZUdZdZded<dZded<dZded<dZd ed <dZ ded <dZ d ed <d dddZ dS)r"aUrl constraints. Attributes: max_length: The maximum length of the url. Defaults to `None`. allowed_schemes: The allowed schemes. Defaults to `None`. host_required: Whether the host is required. Defaults to `None`. default_host: The default host. Defaults to `None`. default_port: The default port. Defaults to `None`. default_path: The default path. Defaults to `None`. Nz int | None max_lengthzlist[str] | Noneallowed_schemesz bool | None host_requiredz str | None default_host default_port default_pathintreturncCs2t|j|jdk rt|jnd|j|j|j|jfSN)hashr3r4tupler5r6r7r8selfrA?/opt/hc_python/lib/python3.8/site-packages/pydantic/networks.py__hash__LszUrlConstraints.__hash__) __name__ __module__ __qualname____doc__r3__annotations__r4r5r6r7r8rCrArArArBr"8s       httphttps)r4i#)r3r4wswssfileftpTpostgres postgresqlzpostgresql+asyncpgzpostgresql+pg8000zpostgresql+psycopgzpostgresql+psycopg2zpostgresql+psycopg2cffizpostgresql+py-postgresqlzpostgresql+pygresql)r5r4Z cockroachdbzcockroachdb+psycopg2zcockroachdb+asyncpgZamqpZamqpsZredisZrediss localhostiz/0)r4r6r7r8Zmongodbz mongodb+srvii)r4r7Zkafkai#)r4r6r7Znatstlsi~mysqlzmysql+mysqlconnectorzmysql+aiomysqlz mysql+asyncmyz mysql+mysqldbz mysql+pymysqlz mysql+cymysqlz mysql+pyodbci Zmariadbzmariadb+mariadbconnectorzmariadb+pymysqlzclickhouse+nativezclickhouse+asynchi(#Noner:c Cs\z ddlaWn,tk r8}ztd|W5d}~XYnXtddddksXtddS)NrzCemail-validator is not installed, run `pip install pydantic[email]`zemail-validator.2zKemail-validator version >= 2.0 required, run pip install -U email-validator)email_validator ImportErrorr partition)erArArBimport_email_validators  r[.c@sPeZdZdZeddddddZeddd d d d Zed d dddZdS)r#a Info: To use this type, you need to install the optional [`email-validator`](https://github.com/JoshData/python-email-validator) package: ```bash pip install email-validator ``` Validate email addresses. ```py from pydantic import BaseModel, EmailStr class Model(BaseModel): email: EmailStr print(Model(email='contact@mail.com')) #> email='contact@mail.com' ``` type[Any]rcore_schema.CoreSchema_source_handlerr;cCstt|jtSr<)r[r no_info_after_validator_function _validate str_schemaclsr_r`rArArB__get_pydantic_core_schema__sz%EmailStr.__get_pydantic_core_schema__._schema_generation_shared.GetJsonSchemaHandlerrrhandlerr;cCs||}|jddd|S)NstringemailtypeformatupdatererriZ field_schemarArArB__get_pydantic_json_schema__sz%EmailStr.__get_pydantic_json_schema__str input_valuer;cCs t|dS)Nr)r/rerurArArBrbszEmailStr._validateN)rDrErFrG classmethodrfrrrbrArArArBr#sc@seZdZdZdZdddddZdddd d Zed d d dddZeddd dddZ edddddZ ddddZ dS)r$a Info: To use this type, you need to install the optional [`email-validator`](https://github.com/JoshData/python-email-validator) package: ```bash pip install email-validator ``` Validate a name and email address combination, as specified by [RFC 5322](https://datatracker.ietf.org/doc/html/rfc5322#section-3.4). The `NameEmail` has two properties: `name` and `email`. In case the `name` is not provided, it's inferred from the email address. ```py from pydantic import BaseModel, NameEmail class User(BaseModel): email: NameEmail user = User(email='Fred Bloggs ') print(user.email) #> Fred Bloggs print(user.email.name) #> Fred Bloggs user = User(email='fred.bloggs@example.com') print(user.email) #> fred.bloggs print(user.email.name) #> fred.bloggs ``` namerkrscCs||_||_dSr<rx)r@ryrkrArArB__init__szNameEmail.__init__r bool)otherr;cCs"t|to |j|jf|j|jfkSr<) isinstancer$ryrk)r@r|rArArB__eq__szNameEmail.__eq__r]rgrrhcCs||}|jddd|S)Nrjz name-emailrlrorqrArArBrrsz&NameEmail.__get_pydantic_json_schema__r\rr^c CsBtt|jtjttjt|tgdddtdS)NZname_email_typezInput is not a valid NameEmail)Zcustom_error_typeZcustom_error_message) json_schemaZ python_schema serialization) r[rrarbZjson_or_python_schemarcZ union_schemaZis_instance_schemato_string_ser_schemardrArArBrfsz&NameEmail.__get_pydantic_core_schema__z Self | strrrtcCs(t|tr t|\}}|||S|SdSr<)r}rsr/)reruryrkrArArBrbs   zNameEmail._validater:cCs4d|jkr d|jd|jdS|jd|jdS)N@"z" <>z ip=IPv4Address('127.0.0.1') try: IpModel(ip='http://www.example.com') except ValueError as e: print(e.errors()) ''' [ { 'type': 'ip_any_address', 'loc': ('ip',), 'msg': 'value is not a valid IPv4 or IPv6 address', 'input': 'http://www.example.com', } ] ''' ``` rAr zIPv4Address | IPv6Addressvaluer;cCsNz t|WStk rYnXz t|WStk rHtddYnXdS)z!Validate an IPv4 or IPv6 address.Zip_any_addressz)value is not a valid IPv4 or IPv6 addressN)r ValueErrorrr rerrArArB__new__Es  zIPvAnyAddress.__new__r]rgrrhcCsi}|jddd|S)NrjZ ipvanyaddressrlrorqrArArBrrQsz*IPvAnyAddress.__get_pydantic_json_schema__r\rr^cCstj|jtdSN)rrZ no_info_plain_validator_functionrbrrdrArArBrfYsz*IPvAnyAddress.__get_pydantic_core_schema__rtcCs||Sr<rArvrArArBrbcszIPvAnyAddress._validateN rDrErFrGrrrwrrrfrbrArArArBr%%s  c@sdeZdZdZdZdddddZedd d d d d ZeddddddZedddddZ dS)r&#Validate an IPv4 or IPv6 interface.rArzIPv4Interface | IPv6InterfacercCsNz t|WStk rYnXz t|WStk rHtddYnXdS)rZip_any_interfacez+value is not a valid IPv4 or IPv6 interfaceN)rrrr rrArArBrms  zIPvAnyInterface.__new__r]rgrrhcCsi}|jddd|S)NrjZipvanyinterfacerlrorqrArArBrrysz,IPvAnyInterface.__get_pydantic_json_schema__r\rr^cCstj|jtdSrrrdrArArBrfsz,IPvAnyInterface.__get_pydantic_core_schema__rtcCs||Sr<rArvrArArBrbszIPvAnyInterface._validateNrrArArArBr&hs  zIPv4Network | IPv6NetworkIPvAnyNetworkTypec@sdeZdZdZdZdddddZedd d d d d ZeddddddZedddddZ dS)r'!Validate an IPv4 or IPv6 network.rArrrcCsNz t|WStk rYnXz t|WStk rHtddYnXdS)rZip_any_networkz)value is not a valid IPv4 or IPv6 networkN)rrr r rrArArBrs  zIPvAnyNetwork.__new__r]rgrrhcCsi}|jddd|S)NrjZ ipvanynetworkrlrorqrArArBrrsz*IPvAnyNetwork.__get_pydantic_json_schema__r\rr^cCstj|jtdSrrrdrArArBrfsz*IPvAnyNetwork.__get_pydantic_core_schema__rtcCs||Sr<rArvrArArBrbszIPvAnyNetwork._validateNrrArArArBr's zre.Pattern[str]c Cs<d}d|d|d}d}d}td|d|d |d S) Nz[\w!#$%&\'*+\-/=?^_`{|}~]z((?:z+\s+)*z+)z"((?:[^"]|\")+)"z <\s*(.+)\s*>z\s*(?:|z)?\s*z\s*)recompile)Z name_charsZunquoted_name_groupZquoted_name_groupZ email_grouprArArB_build_pretty_email_regexs rirsztuple[str, str]rc Cstdkrtt|tkr2tddddtdit|}d}|rZ|\}}}|pX|}|}ztj |dd}Wn@tj k r}z tdddt |j d i|W5d}~XYnX|j }|dk st|p|j}||fS) a|Email address validation using [email-validator](https://pypi.org/project/email-validator/). Note: Note that: * Raw IP address (literal) domain parts are not allowed. * `"John Doe "` style "pretty" email addresses are processed. * Spaces are striped from the beginning and end of addresses, but no error is raised. NZ value_errorz,value is not a valid email address: {reason}reasonzLength must not exceed z charactersF)Zcheck_deliverabilityr)rWr[lenMAX_EMAIL_LENGTHr pretty_email_regex fullmatchgroupsstripr/ZEmailNotValidErrorrsargs normalizedAssertionErrorZ local_part)rmryZ unquoted_nameZ quoted_namerkpartsrZrArArBr/s8     )MrG __future__rZ _annotations dataclassesZ _dataclassesrimportlib.metadatar ipaddressrrrrrr typingr r Z pydantic_corer r rrtyping_extensionsrrr _internalrrrZ _migrationrZannotated_handlersrrrrWrrH__all__ dataclassZPydanticMetadatar"rrrr!r rrr(r)r*r+r,r-r.r0r1r2r[rsr#ZRepresentationr$r%r&rr'rrrr/rD __getattr__rArArArBs       ML     -YC( *)