U
    >h
                     @   s   d dl mZmZmZ d dlmZ d dlmZmZm	Z	m
Z
mZ dddddd	d
ddddddddddddddddddddgZeedd d!Zeeeef d"d#d$Zd%S )&    )Headerdecode_headermake_header)Message)AnyDictListUnioncast)zMetadata-VersionF)NameF)VersionF)ZDynamicT)PlatformT)zSupported-PlatformT)ZSummaryF)DescriptionF)zDescription-Content-TypeF)ZKeywordsF)z	Home-pageF)zDownload-URLF)ZAuthorF)zAuthor-emailF)Z
MaintainerF)zMaintainer-emailF)ZLicenseF)zLicense-ExpressionF)zLicense-FileT)
ClassifierT)zRequires-DistT)zRequires-PythonF)zRequires-ExternalT)zProject-URLT)zProvides-ExtraT)zProvides-DistT)zObsoletes-DistT)fieldreturnc                 C   s   |   ddS )N-_)lowerreplace)r    r   @/tmp/pip-unpacked-wheel-zvxvnq2j/pip/_internal/metadata/_json.py	json_name'   s    r   )msgr   c                    s   t ttf tddd i }tD ]|\}}|| kr2q t|}|rX fdd| |D }n< | |}|dkrd|krdd |dD }n| }|||< q tt| 	 }|r||d	< |S )
z;Convert a Message object into a JSON-compatible dictionary.)hr   c              	   S   sv   t | trng }t| D ]J\}}|dkrRz|d d}W n tk
rP   d}Y nX |||f qtt|S t| S )Nzunknown-8bitzutf-8latin1)
isinstancer   r   decodeUnicodeDecodeErrorappendstrr   )r   chunksbytesencodingr   r   r   sanitise_header.   s    


z$msg_to_json.<locals>.sanitise_headerc                    s   g | ]} |qS r   r   .0vr$   r   r   
<listcomp>D   s    zmsg_to_json.<locals>.<listcomp>keywords,c                 S   s   g | ]}|  qS r   )stripr%   r   r   r   r)   M   s     description)
r	   r   r    METADATA_FIELDSr   get_allgetsplitr
   get_payload)r   resultr   Zmultikeyvaluepayloadr   r(   r   msg_to_json+   s(    

r7   N)Zemail.headerr   r   r   email.messager   typingr   r   r   r	   r
   r.   r    r   r7   r   r   r   r   <module>   s@    