o
    ct                     @   s   d Z ddlZddlZddlmZ ddlZddlZee	Z
G dd dejZG dd dejZded	ed
efddZddeded
efddZdS )zACME JSON fields.    N)Anyc                       sR   e Zd ZdZdededdf fddZdedefdd	Zdedefd
dZ  Z	S )FixedzFixed field.	json_namevaluereturnNc                    s   || _ t j||dd d S )NF)r   default	omitempty)r   super__init__)selfr   r   	__class__ 8/opt/certbot/lib/python3.10/site-packages/acme/fields.pyr
      s   
zFixed.__init__c                 C   s"   || j krtd| j | j S )NzExpected {0!r})r   joseDeserializationErrorformatr   r   r   r   r   decode   s   
zFixed.decodec                 C   s   || j krtd| j| |S )Nz#Overriding fixed field (%s) with %r)r   loggerwarningr   r   r   r   r   encode   s
   
zFixed.encode)
__name__
__module____qualname____doc__strr   r
   r   r   __classcell__r   r   r   r   r      s
    r   c                   @   s@   e Zd ZdZedejdefddZededejfddZdS )	RFC3339FieldzRFC3339 field encoder/decoder.

    Handles decoding/encoding between RFC3339 strings and aware (not
    naive) `datetime.datetime` objects
    (e.g. ``datetime.datetime.now(pytz.utc)``).

    r   r   c                 C   s
   t |S N)	pyrfc3339generate)clsr   r   r   r   default_encoder)      
zRFC3339Field.default_encoderc              
   C   s0   zt |W S  ty } zt|d }~ww r   )r    parse
ValueErrorr   r   )r"   r   errorr   r   r   default_decoder-   s   
zRFC3339Field.default_decoderN)	r   r   r   r   classmethoddatetimer   r#   r(   r   r   r   r   r       s    r   r   r   r   c                 C   s
   t | |S )z&Generates a type-friendly Fixed field.)r   )r   r   r   r   r   fixed5   r$   r+   Fr   c                 C   s   t | |dS )z(Generates a type-friendly RFC3339 field.)r   )r   )r   r   r   r   r   rfc3339:   s   r,   )F)r   r*   loggingtypingr   josepyr   r    	getLoggerr   r   Fieldr   r   r   r+   boolr,   r   r   r   r   <module>   s    
