
    2j                    L   U d Z ddlmZ ddlZdddddd	d
dZ ej
                  dej                        ddf ej
                  dej                        ddf ej
                  dej                        ddf ej
                  dej                        ddf ej
                  dej                        ddf ej
                  dej                        ddf ej
                  dej                        ddf ej
                  dej                        ddf ej
                  dej                        ddf ej
                  dej                        ddf ej
                  dej                        ddf ej
                  d ej                        d!df ej
                  d"ej                        d!df ej
                  d#ej                        d!df ej
                  d$ej                        d%df ej
                  d&ej                        d%df ej
                  d'ej                        d%df ej
                  d(ej                        d%d)f ej
                  d*ej                        d+df ej
                  d,      d+df ej
                  d-ej                        d+df ej
                  d.ej                        d/df ej
                  d0ej                        d/df ej
                  d1ej                        d/df ej
                  d2ej                        d/d)fgZd3ed4<   d)Z	d7d5Z
d8d6Zy)9u$  
PDF issuer detector — Story 9.2.

Identifies the card issuer from raw PDF text using pattern matching.
Returns (issuer_key, confidence) where confidence is 0.0–1.0.
Confidence < 0.7 should prompt user to confirm.

Supported issuers: chase, bofa, apple_card, kohls, discover, dcu, target
    )annotationsNChasezBank of Americaz
Apple CardzKohl'sDiscoverzDCU Credit UnionzTarget RedCard)chasebofa
apple_cardkohlsdiscoverdcutargetzJPMORGAN\s*CHASEr   g      ?z\bCHASE\s+BANK\bgffffff?z\bchase\.com\bg?z\bJPMorgan\bg?zBank\s+of\s+Americar   z\bBankofAmerica\bz\bbankofamerica\.com\bz\bBANK\s+OF\s+AMERICA\bz\bApple\s+Card\br   zGoldman\s+Sachs\s+Bankg333333?ztitanium.*apple|apple.*titaniumg      ?zKohl['']s\s+Charge\s+Cardr	   zKohl['']s\s+Creditz\bKohl['']s\bz\bDISCOVER\s+CARD\br
   z\bDiscover\s+it\bzdiscover\.comz\bDISCOVER\bgffffff?z"Digital\s+Federal\s+Credit\s+Unionr   z\bDCU\bzdcu\.orgzTarget\s+REDcardr   zTarget\s+Red\s+Cardz\bREDcard\bz\btarget\.com\bz#list[tuple[re.Pattern, str, float]]	_PATTERNSc                    | syi t         D ]9  \  }}}|j                  |       sj                  |d      }t        ||      |<   ; syt        fd      }|   }||fS )u   
    Scan PDF text for issuer patterns.

    Returns:
        (issuer_key, confidence) — issuer_key is None if no match found.
        confidence < _CONFIDENCE_THRESHOLD means user should confirm.
    )N        r   c                    |    S N )kscoress    =/var/www/html/financials/app/services/pdf_parsers/detector.py<lambda>zdetect_issuer.<locals>.<lambda>S   s    F1I     )key)r   searchgetmax)textpattern
issuer_keyweightcurrentbest_issuerbest_confidencer   s          @r   detect_issuerr#   ?   s}     !F'0 6#V>>$jjS1G!$Wf!5F:6
 f"56K[)O''r   c                    | t         k  S r   )_CONFIDENCE_THRESHOLD)
confidences    r   needs_confirmationr'   X   s    ---r   )r   strreturnztuple[str | None, float])r&   floatr)   bool)__doc__
__future__r   reSUPPORTED_ISSUERScompileIr   __annotations__r%   r#   r'   r   r   r   <module>r3      s   # 	 #$"  RZZ#RTT*'LRZZ#RTT*'MRZZ!244(7NRZZ&7NRZZ&-6MRZZ$bdd+6MRZZ)24406NRZZ*BDD1&LRZZ#RTT*<MRZZ)2440<NRZZ2BDD9<NRZZ,bdd3'LRZZ%rtt,'MRZZ "$$'7NRZZ&-*LRZZ$bdd+:NRZZ "$$':NRZZ&:NRZZ5rtt<eLRZZ
5NRZZRTT"5NRZZ#RTT*8MRZZ&-8NRZZ%8NRZZ"BDD)8N? 2	.  D  (2.r   