
    b?1i                        d Z ddlmZ ddlZddlmZmZ ddlmZ ddlm	Z	 ed        Z
ed	        Zed
        ZdefdZdedefdZdefdZdededededededefdZdededefdZe	ddddddddededededededefd       Zy)zURL.    )	lru_cacheN)unquoteurlsplit   )hostname)	validatorc                  J    t        j                  dt         j                        S )Nz(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*$|^([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*$)recompile
IGNORECASE     X/home/www/therecruiter.miabetepe.com/venv/lib/python3.12/site-packages/validators/url.py_username_regexr      s"    ::	\ 	 r   c                  J    t        j                  dt         j                        S )Nzp^[\/a-zA-Z0-9\-\.\_\~\!\$\&\'\(\)\*\+\,\;\=\:\@\%\U0001F600-\U0001F64F\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$r
   r   r   r   _path_regexr      s!    ::	8
 	 r   c                  J    t        j                  dt         j                        S )Nz&?(\w+=?[^\s&]*)r
   r   r   r   _query_regexr   %   s    ::)2==99r   valuec                     | r| dv S dS )zValidate scheme.>	   ftpgitsshftpshttprtspsftphttpstelnetFr   )r   s    r   _validate_schemer!   *   s!    
  	YY r   skip_ipv6_addrc                 Z    |xs( | j                  d      dk  xs | j                  d       S )zConfirm skip IPv6 check.:   [)count
startswith)r   r"   s     r   _confirm_ipv6_skipr)   4   s.    NU[[-1N9I9I#9N5NNr   c                 >   | sy| j                  d      x}dkD  r"t               j                  t        |             S |dk  rt               j                  |       S | j	                  dd      \  }t               j                  |      xr t        fddD              S )z Validate authentication segment.Tr$   r   c              3   &   K   | ]  }|v 
 y wNr   ).0char_to_avoidpasswords     r   	<genexpr>z)_validate_auth_segment.<locals>.<genexpr>D   s      5*7X%5   )/?#@)r'   r   matchr   rsplitall)r   colon_countusernamer/   s      @r   _validate_auth_segmentr;   9   s    {{3''1,  &&wu~66Q &&u--c1-Hh""8,  5;O5 2 r   skip_ipv4_addrmay_have_portsimple_hostrfc_1034rfc_2782c           	         | r| j                  d      dkD  ry| j                  d      dk  rNt        t        | |      sd| v r| n!| j                  d      j	                  ddd      t        | |      |||||      S | j                  dd      \  }}t        t        ||      sd| v r|n!|j                  d      j	                  ddd      t        ||      |||||      xr t        |      S )	zValidate netloc.r5   r   Fz]:r&   ] )r"   r<   r=   maybe_simpler?   r@   )r'   r   r)   lstripreplacer7   r;   )	r   r"   r<   r=   r>   r?   r@   
basic_authhosts	            r   _validate_netlocrI   I   s     EKK$q({{3!!%8DEM c"**3A6-e^D)'$

 
	
 ||C+JdN3tu} 	[[%%c2q1)$?%# 
 
- !
,
-r   pathqueryfragmentc                 "   d}| r%|t        t               j                  |             z  }|r%|t        t               j                  |            z  }r;j	                  d      rj                  d      n|t        fddD              z  }|S )z"Validate path query and fragments.Tr2   c              3   &   K   | ]  }|v 
 y wr,   r   )r-   r.   rL   s     r   r0   z&_validate_optionals.<locals>.<genexpr>x   s      _=h!> _r1   )r2   r3   )boolr   r6   r   r(   rE   r8   )rJ   rK   rL   optional_segmentss     ` r   _validate_optionalsrQ   o   s    T+-"5"5d";<<T,."6"6u"=>>+3+>+>s+C8??3'S _T^ ___r   FT)r"   r<   r=   r>   r?   r@   c         	          | rt        j                  d|       ry	 t        |       \  }}}	}
}t	        |      xr  t        |||||||      xr t        |	|
|      S # t        $ r Y yw xY w)a;  Return whether or not given value is a valid URL.

    This validator was inspired from [URL validator of dperini][1].
    The following diagram is from [urlly][2].

            foo://admin:hunter1@example.com:8042/over/there?name=ferret#nose
            \_/   \___/ \_____/ \_________/ \__/\_________/ \_________/ \__/
             |      |       |       |        |       |          |         |
          scheme username password hostname port    path      query    fragment

    [1]: https://gist.github.com/dperini/729294
    [2]: https://github.com/treeform/urlly

    Examples:
        >>> url('http://duck.com')
        # Output: True
        >>> url('ftp://foobar.dk')
        # Output: True
        >>> url('http://10.0.0.1')
        # Output: True
        >>> url('http://example.com/">user@example.com')
        # Output: ValidationError(func=url, ...)

    Args:
        value:
            URL string to validate.
        skip_ipv6_addr:
            When URL string cannot contain an IPv6 address.
        skip_ipv4_addr:
            When URL string cannot contain an IPv4 address.
        may_have_port:
            URL string may contain port number.
        simple_host:
            URL string maybe only hyphens and alpha-numerals.
        rfc_1034:
            Allow trailing dot in domain/host name.
            Ref: [RFC 1034](https://www.rfc-editor.org/rfc/rfc1034).
        rfc_2782:
            Domain/Host name is of type service record.
            Ref: [RFC 2782](https://www.rfc-editor.org/rfc/rfc2782).

    Returns:
        (Literal[True]):
            If `value` is a valid slug.
        (ValidationError):
            If `value` is an invalid slug.

    Note:
        - *In version 0.11.3*:
            - Added support for URLs containing localhost.
        - *In version 0.11.0*:
            - Made the regular expression case insensitive.
        - *In version 0.10.3*:
            - Added a `public` parameter.
        - *In version 0.10.2*:
            - Added support for various exotic URLs.
            - Fixed various false positives.

    > *New in version 0.2.0*.
    z\sF)r   searchr   
ValueErrorr!   rI   rQ   )r   r"   r<   r=   r>   r?   r@   schemenetlocrJ   rK   rL   s               r   urlrW   |   s    P BIIeU+ 08-eX
 	  
	7

	7  eX6  s   A 	A%$A%)__doc__	functoolsr   r   urllib.parser   r   r   utilsr   r   r   r   strr!   rO   r)   r;   rI   rQ   rW   r   r   r   <module>r]      s\   
   	 *     	 	 : :C Oc O4 O
#  #-#-#- #- 	#-
 #- #- #-L
c 
# 
 
 
 ! ]] 	]
 ] ] ] ] ] ]r   