
    #HJjW                    8    d dl mZ d dlZd dlZddZddZddZy)	    )annotationsNc                    | j                         j                  d      } | sy | j                  dd      j                  d      d   } | r| dv ry | S )N"'\/>   ...)stripreplacesplit)filenames    e/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/rdflib/contrib/graphdb/util.pysanitize_filenamer      sS    ~~%%e,Hc*005b9Hx;.O    c                   | syd}d}| j                  d      D ]  }|j                         }|j                         }|j                  d      r|t	        d      d j                         }|j                         j                  d      }	 |j                  dd      \  }}|j                  dd      \  }}		 t        j                  j                  |	      }
|
j                  |d	      }t        |      }|j                  d
      s|t	        d
      d j                         }t        |      } |xs |S # t
        $ r d}|}	Y w xY w# t        $ r5 t        j                  j                  |	      }
|
j                  dd	      }Y w xY w)zExtract filename from Content-Disposition header.

    Supports both ``filename=`` and RFC 5987 ``filename*=``; prefers ``filename*=``
    when present. Returned filenames are sanitized to prevent path traversal.
    N;z
filename*=r   '   zutf-8r   )errorsz	filename=)r   r   lower
startswithlen
ValueErrorurllibparseunquote_to_bytesdecodeLookupErrorr   )headerfilename_starfilename_plainpartr   valuecharsetrest	_languageencodedrawdecodeds               r   )extract_filename_from_content_dispositionr+      su     $M!%NS!zz|

L)\*,-335EKKM''.E  %C 3%)ZZQ%7"	7@ll33G<**WY*? .g6Mk*[)+,224E.u5N+ ". *N*   !   @ll33G<**WY*?@s$   
*D552E5EE;FFc                b    t        | dd      }t        |t              r|rt        |      }|r|S |S )zDInfer a safe filename from a file-like object's ``.name`` attribute.nameN)getattr
isinstancestrr   )file_objfallbackr-   inferreds       r   infer_filename_from_fileobjr4   7   s3    8VT*D$$T*OOr   )r   r0   return
str | None)r    r0   r5   r6   )r1   zt.Anyr2   r0   r5   r0   )	
__future__r   typingturllib.parser   r   r+   r4    r   r   <module>r<      s    "  #+Lr   