U
    d                     @   s   d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	 ddl
mZ e eje	dd Zdd	 ZdddZd ddZeejfddZejededejdeddddejdeddddejdedddddd ZdS )!zGThe ``celery upgrade`` command, used to upgrade from previous versions.    N)defaults)CeleryCommandCeleryOptionhandle_preload_options)pass1c                 C   s   dS )z!Perform upgrade between versions.N )ctxr   r   6/tmp/pip-unpacked-wheel-mu1yl971/celery/bin/upgrade.pyupgrade   s    r
   c              
   C   s4   t | dd}dd |D W  5 Q R  S Q R X d S )Nrutf-8c                 S   s   g | ]}|qS r   r   .0liner   r   r	   
<listcomp>   s     z_slurp.<locals>.<listcomp>)codecsopen)filenameread_fhr   r   r	   _slurp   s    r   CELERYc                 C   s$   |   } | |s d|| g} | S )N_)upper
startswithjoin)key	namespacer   r   r	   _compat_key   s    
r   .origc              
   C   s~   g }d | |g}td| dtjd t| dd>}t|dd$}|D ]}|| || qLW 5 Q R X W 5 Q R X |S )N zwriting backup to ...filer   r   w)r   printsysstderrr   r   writeappend)r   suffixlinesZbackup_filenamer   Z	backup_fhr   r   r   r	   _backup!   s    
 r+   c                 C   sR   t t|dd dD ]4}| |||| }| |krd|krd|f  S qd| fS )Nc                 S   s   t | S )N)len)xr   r   r	   <lambda>1       z_to_new_key.<locals>.<lambda>)r   ZCELERY_CELERY   r   )reversedsortedreplace)r   	keyfiltersourceZold_keynew_liner   r   r	   _to_new_key.   s
    r7   )clsr   z--djangoTzUpgrading OptionszUpgrade Django project.)r8   Zis_flagZ
help_grouphelpz--compatz!Maintain backwards compatibility.z--no-backupzDon't backup original files.c           	   	      s   t | }|s|rtnt td|  dtjd  fdd|D }tdd |D r|s^t|  t	| dd	}|D ]\}}|
| qrW 5 Q R X td
tjd ntdtjd dS )z/Migrate settings from Celery 3.x to Celery 4.x.zprocessing r    r!   c                    s   g | ]}t | qS r   )r7   r   r4   r   r	   r   O   s    zsettings.<locals>.<listcomp>c                 s   s   | ]}|d  V  qdS )r   Nr   )r   nr   r   r	   	<genexpr>R   s     zsettings.<locals>.<genexpr>r#   r   z'Changes to your setting have been made!z(Does not seem to require any changes :-)N)r   r   r   r$   r%   r&   anyr+   r   r   r'   stdout)	r   ZdjangocompatZ	no_backupr*   	new_linesZwrite_fhr   r   r   r:   r	   settings8   s$    
rA   )r   )r   )__doc__r   r%   ZclickZ
celery.appr   Zcelery.bin.baser   r   r   Zcelery.utils.functionalr   groupZpass_contextr
   r   r   r+   Z_TO_NEW_KEYr7   commandargumentoptionrA   r   r   r   r	   <module>   sF   



