File: //lib64/python3.9/email/__pycache__/policy.cpython-39.opt-1.pyc
a
    �DOg�(  �                   @   s�   d Z ddlZddlZddlmZmZmZmZ ddlm	Z	 ddl
mZ ddlm
Z
 ddlmZ g d�Ze�d	�ZeG d
d� de��Ze� Ze`ejdd
�Zejdd�Zejddd�Zejdd�ZdS )zcThis will be the home for the policy that hooks in the new
code that adds all the email6 features.
�    N)�Policy�Compat32�compat32�_extend_docstrings)�_has_surrogates)�HeaderRegistry)�raw_data_manager)�EmailMessage)r   r   r   �EmailPolicy�default�strict�SMTP�HTTPz\n|\rc                       sp   e Zd ZdZeZdZdZe� Z	e
Z� fdd�Zdd� Z
dd	� Zd
d� Zdd
� Zdd� Zdd� Zddd�Z�  ZS )r
   aQ  +
    PROVISIONAL
    The API extensions enabled by this policy are currently provisional.
    Refer to the documentation for details.
    This policy adds new header parsing and folding algorithms.  Instead of
    simple strings, headers are custom objects with custom attributes
    depending on the type of the field.  The folding algorithm fully
    implements RFCs 2047 and 5322.
    In addition to the settable attributes listed above that apply to
    all Policies, this policy adds the following additional attributes:
    utf8                -- if False (the default) message headers will be
                           serialized as ASCII, using encoded words to encode
                           any non-ASCII characters in the source strings.  If
                           True, the message headers will be serialized using
                           utf8 and will not contain encoded words (see RFC
                           6532 for more on this serialization format).
    refold_source       -- if the value for a header in the Message object
                           came from the parsing of some source, this attribute
                           indicates whether or not a generator should refold
                           that value when transforming the message back into
                           stream form.  The possible values are:
                           none  -- all source values use original folding
                           long  -- source values that have any line that is
                                    longer than max_line_length will be
                                    refolded
                           all  -- all values are refolded.
                           The default is 'long'.
    header_factory      -- a callable that takes two arguments, 'name' and
                           'value', where 'name' is a header field name and
                           'value' is an unfolded header field value, and
                           returns a string-like object that represents that
                           header.  A default header_factory is provided that
                           understands some of the RFC5322 header field types.
                           (Currently address fields and date fields have
                           special treatment, while all other fields are
                           treated as unstructured.  This list will be
                           completed before the extension is marked stable.)
    content_manager     -- an object with at least two methods: get_content
                           and set_content.  When the get_content or
                           set_content method of a Message object is called,
                           it calls the corresponding method of this object,
                           passing it the message object as its first argument,
                           and any arguments or keywords that were passed to
                           it as additional arguments.  The default
                           content_manager is
                           :data:`~email.contentmanager.raw_data_manager`.
    F�longc                    s.   d|vrt �| dt� � t� jf i |�� d S )N�header_factory)�object�__setattr__r   �super�__init__)�self�kw��	__class__� �$/usr/lib64/python3.9/email/policy.pyr   ]   s    zEmailPolicy.__init__c                 C   s   | j | jS )z�+
        The implementation for this class returns the max_count attribute from
        the specialized header class that would be used to construct a header
        of type 'name'.
        )r   Z	max_count)r   �namer   r   r   �header_max_countd   s    zEmailPolicy.header_max_countc                 C   s>