o
    fi                      @   s  d dgZ ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
mZmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ eeedkr]ddlmZ nddlmZ ddlm Z m!Z!m"Z"m#Z#m$Z$m%Z% dZ&dZ'de(ddfddZ)de*de(fddZ+de*de(fddZ,				d)dede(de(d e(de(ddfd!d"Z-G d#d  d eZ.G d$d% d%eZ/G d&d' d'eZ0G d(d deZ1dS )*DynamicVersioningCommandDynamicVersioningPlugin    N)Command)ConsoleCommandEvent)EventDispatcher)COMMANDSIGNAL	TERMINATEERROR)Version)__version__)Poetry)Factory)Application)ApplicationPluginz1.3.0)cli_get_config_get_and_apply_version_get_pyproject_path_from_poetry_state_revert_version"POETRY_DYNAMIC_VERSIONING_COMMANDS(POETRY_DYNAMIC_VERSIONING_COMMANDS_NO_IOioreturnc                    s:   t jrdS tjttj fdd}|t_dt _dS )z
    The plugin system doesn't seem to expose a way to change dependency
    versions, so we patch `Factory.create_poetry()` to do the work there.
    Nc                     s   | i |}t | d |S )Nr   )_apply_version_via_plugin)argskwargsinstancer   original_create_poetry T/home/ubuntu/.local/lib/python3.10/site-packages/poetry_dynamic_versioning/plugin.pypatched_create_poetry1   s   z9_patch_dependency_versions.<locals>.patched_create_poetryT)r   patched_core_poetry_creater   create_poetry	functoolswraps)r   r$   r"   r    r#   _patch_dependency_versions'   s   

r)   commandc                 C   s@   t jt}|d ur| |dv S | ddtjjtjjtjj	fvS )N,runshell)
osenvironget_COMMAND_ENVsplitr   r   dv	dv_enabledv_showr*   overrider"   r"   r#   _should_apply;   s   r8   c                 C   s*   t jt}|d ur| |dvS | dvS )Nr+   )version)r.   r/   r0   _COMMAND_NO_IO_ENVr2   r6   r"   r"   r#   _should_apply_with_ioC   s   r;   FTpoetryretainforce
standalonec                 C   sV   t t| j|||d}|r'tj| j}t|| j_	|| j_
|r)t| d S d S d S )N)pyproject_pathr=   r>   r   )r   r   	pyprojectr   projectsr9   PoetryCoreVersionparse_package_version_pretty_versionr   report_apply)r<   r=   r>   r?   r   namer9   r"   r"   r#   r   K   s   	r   c                       @   e Zd ZejjZejjZ	de
f fddZdefddZ  ZS )r   applicationc                       t    || _d S Nsuper__init___applicationselfrK   	__class__r"   r#   rP   j      

z!DynamicVersioningCommand.__init__r   c                 C   s   dt _t| jjdddd dS )NT)r=   r>   r?   r   )r   cli_moder   rQ   r<   rS   r"   r"   r#   handlen   s   zDynamicVersioningCommand.handle)__name__
__module____qualname__r   r   r3   rI   Helpmaindescriptionr   rP   intrY   __classcell__r"   r"   rT   r#   r   f   
    c                       rJ   )DynamicVersioningEnableCommandrK   c                    rL   rM   rN   rR   rT   r"   r#   rP   x   rV   z'DynamicVersioningEnableCommand.__init__r   c                 C      dt _t  dS NTr   )r   rW   r   enablerX   r"   r"   r#   rY   |      z%DynamicVersioningEnableCommand.handle)rZ   r[   r\   r   r   r4   rI   r]   rf   r_   r   rP   r`   rY   ra   r"   r"   rT   r#   rc   t   rb   rc   c                       rJ   )DynamicVersioningShowCommandrK   c                    rL   rM   rN   rR   rT   r"   r#   rP      rV   z%DynamicVersioningShowCommand.__init__r   c                 C   rd   re   )r   rW   r   showrX   r"   r"   r#   rY      rg   z#DynamicVersioningShowCommand.handle)rZ   r[   r\   r   r   r5   rI   r]   ri   r_   r   rP   r`   rY   ra   r"   r"   rT   r#   rh      rb   rh   c                   @   sZ   e Zd Zdd ZdeddfddZded	ed
eddfddZ	ded	ed
eddfddZ
dS )r   c                 C   s
   d | _ d S rM   )rQ   rX   r"   r"   r#   rP      s   
z DynamicVersioningPlugin.__init__rK   r   Nc                    s    | _  jtjj fdd  jtjj fdd  jtjj fdd z| j jj	j
}W n
 ty<   Y d S w tjd|d t|}|d sNd S  jt| j  jt| j  jt| j  jt| j d S )Nc                         t  S rM   )r   r"   rK   r"   r#   <lambda>       z2DynamicVersioningPlugin.activate.<locals>.<lambda>c                      rj   rM   )rc   r"   rk   r"   r#   rl      rm   c                      rj   rM   )rh   r"   rk   r"   r#   rl      rm   F)r?   configrf   )rQ   command_loaderregister_factoryr   r   r3   r4   r5   r<   rA   dataRuntimeErrorvalidater   event_dispatcheradd_listenerr   _apply_versionr   r   r	   r
   )rS   rK   localrn   r"   rk   r#   activate   s*   z DynamicVersioningPlugin.activateeventkind
dispatcherc                 C   sR   t |jjsd S t|jj}t|jdr|jj}n| jj}t||d t| d S )Nr<   r   )	r8   r*   rI   r;   hasattrr<   rQ   r   r)   )rS   ry   rz   r{   r   poetry_instancer"   r"   r#   rv      s   
z&DynamicVersioningPlugin._apply_versionc                 C   s*   t |jjsd S t|jjsd S t  d S rM   )r8   r*   rI   r;   r   )rS   ry   rz   r{   r"   r"   r#   r      s
   
z'DynamicVersioningPlugin._revert_version)rZ   r[   r\   rP   r   rx   r   strr   rv   r   r"   r"   r"   r#   r      s
    )FFFT)2__all__r'   r.   cleo.commands.commandr   !cleo.events.console_command_eventr   cleo.events.event_dispatcherr   cleo.events.console_eventsr   r   r	   r
   packaging.versionr   PackagingVersionpoetry.corer   poetry_core_versionpoetry.core.poetryr   poetry.core.factoryr   poetry.console.applicationr   !poetry.plugins.application_pluginr   poetry.core.constraints.versionrC   poetry.core.semver.versionpoetry_dynamic_versioningr   r   r   r   r   r   r1   r:   boolr)   r~   r8   r;   r   r   rc   rh   r   r"   r"   r"   r#   <module>   sZ    	

