§
    þ„jÕ  ã                   óH   — d dl Zd dlmc mZ d dlmZmZ d„ Z	d„ Z
d„ Zd„ ZdS )é    N)ÚImageGenerationPolicyÚimage_policy_as_configc                  ó¨  — t          ¦   «         } | j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}| j
        }d}||k    }|sªt          j        d|fd	||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}| j        }d
}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d S )Núopenai-codex©ú==)z>%(py2)s
{%(py2)s = %(py0)s.allowed_image_provider
} == %(py5)sÚpolicy©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7Úbest_available_gpt_image_model)z=%(py2)s
{%(py2)s = %(py0)s.preferred_image_model
} == %(py5)sÚhighest_available_reasonable)z9%(py2)s
{%(py2)s = %(py0)s.preferred_quality
} == %(py5)s)r   Úallowed_image_providerÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚpreferred_image_modelÚpreferred_quality©r	   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8s         ú\/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/tests/test_image_generation_policy.pyÚ<test_image_policy_pins_openai_codex_and_best_available_modelr$      s¾  € Ý"Ñ$Ô$€FàÔ(Ð:¨NÐ:Ð(¨NÒ:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð(¨NÐ:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ˆ6Ñ:Ô:Ð:Õ:Ô:ˆ6Ñ:Ô:Ð:Ð:Õ:Ô:Ð(Ñ:Ô:Õ:Ô:¨NÑ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ØÔ'ÐKÐ+KÐKÐ'Ð+KÒKÐKÐKÐKÕKÔKÐKÐKÐKÐKÐ'Ð+KÐKÑKÔKÐKÕKÔKÑKÔKÐKÐKÕKÔKˆ6ÑKÔKÐKÕKÔKˆ6ÑKÔKÐKÐKÕKÔKÐ'ÑKÔKÕKÔKÐ+KÑKÔKÐKÐKÑKÐKÐKÐKÐKÐKÑKÐKÕKÕKÔKÐKÑKÔKÑKÔKÐKÐKÐKÐKÐKÐKÐKØÔ#ÐEÐ'EÐEÐ#Ð'EÒEÐEÐEÐEÕEÔEÐEÐEÐEÐEÐ#Ð'EÐEÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔEˆ6ÑEÔEÐEÕEÔEˆ6ÑEÔEÐEÐEÕEÔEÐ#ÑEÔEÕEÔEÐ'EÑEÔEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEÐEÐEó    c                  ó¤  — t          ¦   «         } | j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}| j
        }d}||k    }|sªt          j        d|fd	||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}| j        }d
}||u }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d S )Né   r   )zR%(py2)s
{%(py2)s = %(py0)s.max_styleframes_per_scene_without_approval
} == %(py5)sr	   r
   r   r   é   )zB%(py2)s
{%(py2)s = %(py0)s.max_retries_per_styleframe
} == %(py5)sT©Úis)z9%(py2)s
{%(py2)s = %(py0)s.no_random_batches
} is %(py5)s)r   Ú*max_styleframes_per_scene_without_approvalr   r   r   r   r   r   r   r   Úmax_retries_per_styleframeÚno_random_batchesr   s         r#   Ú<test_image_policy_limits_styleframe_spend_and_random_batchesr.      s¶  € Ý"Ñ$Ô$€FàÔ<ÐAÀÐAÐ<ÀÒAÐAÐAÐAÕAÔAÐAÐAÐAÐAÐ<ÀÐAÑAÔAÐAÕAÔAÑAÔAÐAÐAÕAÔAˆ6ÑAÔAÐAÕAÔAˆ6ÑAÔAÐAÐAÕAÔAÐ<ÑAÔAÕAÔAÀÑAÔAÐAÐAÑAÐAÐAÐAÐAÐAÑAÐAÕAÕAÔAÐAÑAÔAÑAÔAÐAÐAÐAÐAÐAÐAÐAØÔ,Ð1°Ð1Ð,°Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð,°Ð1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆ6Ñ1Ô1Ð1Õ1Ô1ˆ6Ñ1Ô1Ð1Ð1Õ1Ô1Ð,Ñ1Ô1Õ1Ô1°Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÔ#Ð+ tÐ+Ð# tÐ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð# tÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆ6Ñ+Ô+Ð+Õ+Ô+ˆ6Ñ+Ô+Ð+Ð+Õ+Ô+Ð#Ñ+Ô+Õ+Ô+ tÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+r%   c                  óx  — t          ¦   «         } | j        }d}||u }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}| j
        }d} ||¦  «        }d	}||u }|sÐt          j        d|fd
||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚d x}x}x}x}}| j
        }d} ||¦  «        }d	}||u }|sÐt          j        d|fd
||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚d x}x}x}x}}d S )NTr)   )zf%(py2)s
{%(py2)s = %(py0)s.no_ai_images_for_mockups_when_deterministic_renderer_is_better
} is %(py5)sr	   r
   r   r   Úfake_invoiceF)z\%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.requires_ai_for_mockup
}(%(py4)s)
} is %(py9)s)r   r   Úpy4Úpy6Úpy9zassert %(py11)sÚpy11Ú	ui_mockup)r   Ú>no_ai_images_for_mockups_when_deterministic_renderer_is_betterr   r   r   r   r   r   r   r   Úrequires_ai_for_mockup)r	   r   r   r    r!   r"   Ú@py_assert5Ú@py_assert8Ú@py_assert7Ú@py_format10Ú@py_format12s              r#   Ú>test_image_policy_prefers_deterministic_mockups_for_invoice_uir=      s8  € Ý"Ñ$Ô$€FàÔPÐXÐTXÐXÐPÐTXÐXÐXÐXÐXÕXÔXÐXÐXÐXÐXÐPÐTXÐXÑXÔXÐXÕXÔXÑXÔXÐXÐXÕXÔXˆ6ÑXÔXÐXÕXÔXˆ6ÑXÔXÐXÐXÕXÔXÐPÑXÔXÕXÔXÐTXÑXÔXÐXÐXÑXÐXÐXÐXÐXÐXÑXÐXÕXÕXÔXÐXÑXÔXÑXÔXÐXÐXÐXÐXÐXÐXÐXØÔ(ÐA¨ÐAÐ(Ð(¨Ñ8Ô8ÐA¸EÐAÐ8¸EÐAÐAÐAÐAÕAÔAÐAÐAÐAÐAÐ8¸EÐAÑAÔAÐAÕAÔAÑAÔAÐAÐAÕAÔAˆ6ÑAÔAÐAÕAÔAˆ6ÑAÔAÐAÐAÕAÔAÐ(ÑAÔAÕAÔA¨ÑAÔAÕAÔAÐ8ÑAÔAÕAÔA¸EÑAÔAÐAÐAÑAÐAÐAÐAÐAÐAÑAÐAÕAÕAÔAÐAÑAÔAÑAÔAÐAÐAÐAÐAÐAÐAÐAÐAÐAÐAÐAØÔ(Ð>¨Ð>Ð(Ð(¨Ñ5Ô5Ð>¸Ð>Ð5¸Ð>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð5¸Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ6Ñ>Ô>Ð>Õ>Ô>ˆ6Ñ>Ô>Ð>Ð>Õ>Ô>Ð(Ñ>Ô>Õ>Ô>¨Ñ>Ô>Õ>Ô>Ð5Ñ>Ô>Õ>Ô>¸Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>r%   c                  ó2  — t          ¦   «         } | d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t	          t          j        |¦  «        ¦  «        ‚d x}x}}| d         }d	}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t	          t          j        |¦  «        ¦  «        ‚d x}x}}d S )
Nr   r   r   )z%(py1)s == %(py4)s)Úpy1r1   zassert %(py6)sr2   r+   r'   )r   r   r   r   r   r   )ÚcfgÚ@py_assert0r    Ú@py_assert2Ú@py_format5Ú@py_format7s         r#   Ú(test_image_policy_config_is_serializablerE      sg  € Ý
 Ñ
"Ô
"€CàÐ'Ô(Ð:¨NÐ:Ð(¨NÒ:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð(¨NÐ:Ñ:Ô:Õ:Ô:Ð(Ñ:Ô:Õ:Ô:¨NÑ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ØÐ;Ô<ÐAÀÐAÐ<ÀÒAÐAÐAÐAÕAÔAÐAÐAÐAÐAÐ<ÀÐAÑAÔAÕAÔAÐ<ÑAÔAÕAÔAÀÑAÔAÐAÐAÑAÐAÐAÐAÐAÐAÑAÐAÕAÕAÔAÐAÑAÔAÑAÔAÐAÐAÐAÐAÐAÐAÐAÐAÐAr%   )Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   Ú-autoshorts.production.image_generation_policyr   r   r$   r.   r=   rE   © r%   r#   ú<module>rL      s–   ðØ  € € € € € € € € € € € € ð ð ð ð ð ð ð ð ðFð Fð Fð,ð ,ð ,ð?ð ?ð ?ðBð Bð Bð Bð Br%   