
    f j                       d Z ddlmZ ddlZddlmZmZ ddlmZ dZ	 ej
        dej                  Z ej
        dej                  Z ej
        d	ej                  Z ej
        d
ej                  ZddZddZddZdS )z<Stage 1b: charset declaration extraction (HTML/XML/PEP 263).    )annotationsN)DETERMINISTIC_CONFIDENCEDetectionResult)lookup_encodingi   s*   <\?xml[^>]+encoding\s*=\s*['"]([^'"]+)['"]s,   <meta[^>]+charset\s*=\s*['"]?\s*([^\s'">;]+)s6   <meta[^>]+content\s*=\s*['"][^'"]*charset=([^\s'">;]+)s&   ^[ \t\f]*#.*?coding[:=][ \t]*([-\w.]+)databytesreturnDetectionResult | Nonec                   d| dd         vrdS d                     |                     dd          dd                   }t                              |          }|r	 |                    d                              d                                          }n# t          t          f$ r Y dS w xY wt          |          }|(t          | |          rt          |t          dd	          S dS )
aB  Check the first two lines of *data* for a PEP 263 encoding declaration.

    PEP 263 declarations (e.g. ``# -*- coding: utf-8 -*-``) are only valid
    on line 1 or line 2 of a Python source file.

    :param data: The raw byte data to scan.
    :returns: A :class:`DetectionResult` with confidence 0.95, or ``None``.
       #N      
      asciiztext/x-pythonencoding
confidencelanguage	mime_type)joinsplit
_PEP263_REsearchgroupdecodestripUnicodeDecodeError
ValueErrorr   _validate_bytesr   r   )r   first_two_linesmatchraw_namer   s        kC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\chardet/pipeline/markup.py_detect_pep263r%      s    4: tjjE1!5!5bqb!9::Oo..E 	{{1~~,,W55;;==HH"J/ 	 	 	44	"8,, 	OD($C$C 	"!3)	    4s   :B B-,B-c                   | sdS | dt                    }t          t          t          fD ]}|                    |          }|r	 |                    d                              d                                          }n# t          t          f$ r Y hw xY wt          |          }|7t          | |          r'|t          u rdnd}t          |t          d|          c S t          |           S )a  Scan the first bytes of *data* for a charset declaration.

    Checks for:

    1. ``<?xml ... encoding="..."?>``
    2. ``<meta charset="...">``
    3. ``<meta http-equiv="Content-Type" content="...; charset=...">``
    4. PEP 263 ``# -*- coding: ... -*-`` (first two lines only)

    :param data: The raw byte data to scan.
    :returns: A :class:`DetectionResult` with confidence 0.95, or ``None``.
    Nr   r   ztext/xmlz	text/htmlr   )_SCAN_LIMIT_XML_ENCODING_RE_HTML5_CHARSET_RE_HTML4_CONTENT_TYPE_REr   r   r   r   r   r   r   r    r   r   r%   )r   headpatternr"   r#   r   r   s          r$   detect_markup_charsetr-   :   s     tD$&79OP  t$$ 	 ;;q>>0099??AA&
3   &x00H h(G(G *15E*EVJJ;	&%7!'	      $s   :A==BBr   strboolc                    	 | dt                                        |           n# t          t          t          f$ r Y dS w xY wdS )zCheck that *data* can be decoded under *encoding* without errors.

    Only validates the first ``_SCAN_LIMIT`` bytes to avoid decoding a
    full 200 kB input just to verify a charset declaration found in the
    header.
    NFT)r'   r   r   LookupErrorr   )r   r   s     r$   r    r    `   sU    \k\!!(++++Z8   uu4s   "% A A )r   r   r	   r
   )r   r   r   r.   r	   r/   )__doc__
__future__r   rechardet.pipeliner   r   chardet.registryr   r'   compile
IGNORECASEr(   r)   r*   	MULTILINEr   r%   r-   r         r$   <module>r<      s	   B B " " " " " " 				 F F F F F F F F , , , , , ,2:6   BJ8"-   $BBM   RZBBLQQ
   >#  #  #  # L     r;   