o
    Ej                     @  s   d dl mZ d dlmZmZ d dlmZ dZG dd deZ	d<ddZ
d=ddZd>ddZd?dd Zd@d'd(Zd@d)d*Zd+d,dAd0d1ZdBd4d5ZdCd7d8ZdDd9d:Zd;S )E    )annotations)IterableMapping)Any)idlesleepwalklooksittail_wagc                   @  s   e Zd ZdS )StateTransitionErrorN)__name__
__module____qualname__ r   r   9/opt/sixxie/releases/current/services/api/state_guards.pyr   
   s    r   consent_statusstrboundary_acknowledgedboolmedia_quality_statusesIterable[str]returnNonec                 C  sF   t |}| dks
|std|stdtdd |D r!tdd S )Ngrantedz1consent and boundary acknowledgement are requiredz#at least one media item is requiredc                 s  s    | ]}|d kV  qdS )passedNr   ).0statusr   r   r   	<genexpr>   s    z*assert_can_create_build.<locals>.<genexpr>z"all media must pass quality checks)tupler   any)r   r   r   statusesr   r   r   assert_can_create_build   s   r"   build_statusapproval_answersMapping[str, Any]c                   s6   | dkrt dd}t fdd|D rt dd S )Npreview_readyz+build must be preview_ready before approval)looks_like_petfeels_comfortableactions_fit_long_termc                 3  s    | ]
}  |d uV  qdS )TN)get)r   answerr$   r   r   r   )   s    z+assert_can_approve_build.<locals>.<genexpr>z,all three preview confirmations are required)r   r    )r#   r$   required_answersr   r,   r   assert_can_approve_build   s   r.   user_approvedentitlement_statusc                 C  s(   | dks|s
t d|dkrt dd S )Napprovedz-approved build with user approval is requiredactivez/active entitlement is required before packagingr   )r#   r/   r0   r   r   r   assert_can_mark_package_ready-   s
   r4   package_statuspackage_user_approvedchecksum_validruntime_compatibleallowed_actionsc                 C  sd   | dkrt d|st d|dkrt d|st d|s"t dt|tt }|r0t dd S )	Napproved_for_download%package must be approved_for_download!user-approved package is requiredr2   z+active entitlement is required for downloadz'valid checksum is required for downloadz&compatible runtime version is required$package contains unsupported actions)r   setALLOWED_ACTIONS)r5   r6   r0   r7   r8   r9   unexpected_actionsr   r   r   assert_can_download_package9   s   	rA   quantity_totalintquantity_used
expires_at
str | Nonenowc                 C     t d| ||||d d S )Ncustom_pet_buildentitlement_typer0   rB   rD   rE   rG   _assert_consumable_entitlementr0   rB   rD   rE   rG   r   r   r   assert_can_start_full_buildQ      
rO   c                 C  rH   )Nrevision_creditrJ   rL   rN   r   r   r   assert_can_start_revisionc   rP   rR   i  )	cap_centscurrent_cost_centsestimated_cost_centsrS   c                 C  s8   | dk s|dk s|dk rt d| | |krt dd S )Nr   z&model cost values must be non-negativezmodel cost cap exceededr3   )rT   rU   rS   r   r   r   assert_can_reserve_model_costu   s
   rV   runtime_entitlement_statusruntime_entitlement_expires_atc           	      C  sn   | dkrt d|st d|dkst||rt d|s!t d|s't dt|tt }|r5t dd S )	Nr:   r;   r<   r2   z5active package_runtime_access entitlement is requiredz)valid checksum is required to run packagez5compatible runtime version is required to run packager=   )r   _is_expiredr>   r?   )	r5   r6   rW   rX   rG   r7   r8   r9   r@   r   r   r   assert_can_run_package   s   rZ   rK   c                 C  sN   |dkrt d|  dt||rt d|  d||kr%t d|  dd S )Nr2   zactive z entitlement is requiredz
available )r   rY   rJ   r   r   r   rM      s   	
rM   c                 C  s   t | o| |kS )N)r   )rE   rG   r   r   r   rY      s   rY   N)r   r   r   r   r   r   r   r   )r#   r   r$   r%   r   r   )r#   r   r/   r   r0   r   r   r   )r5   r   r6   r   r0   r   r7   r   r8   r   r9   r   r   r   )r0   r   rB   rC   rD   rC   rE   rF   rG   r   r   r   )rT   rC   rU   rC   rS   rC   r   r   )r5   r   r6   r   rW   r   rX   rF   rG   r   r7   r   r8   r   r9   r   r   r   )rK   r   r0   r   rB   rC   rD   rC   rE   rF   rG   r   r   r   )rE   rF   rG   r   r   r   )
__future__r   collections.abcr   r   typingr   r?   
ValueErrorr   r"   r.   r4   rA   rO   rR   rV   rZ   rM   rY   r   r   r   r   <module>   s     







