
    ue                         d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZ  e j                  e      Ze	d        Ze	d        ZddZd	 Zd
 ZddZy)    N)file_resourcesstyle)
FormatCode)hookimpl)get_eol_charsc                     t         j                  d|       | j                  d      5  t        ||      cd d d        S # 1 sw Y   y xY w)Nz Formatting document %s with yapfzformat: yapf)options)loginforeport_progress_format)	workspacedocumentr	   s      ;/usr/lib/python3/dist-packages/pylsp/plugins/yapf_format.pypylsp_format_documentr      s>    HH/:		"	">	2 2x12 2 2s	   ?Ac                     t         j                  d| |       d|d   d<   |d   dxx   dz  cc<   d|d   d<   |d   d   dz   |d   d   dz   fg}t        | ||      S )	Nz,Formatting document %s in range %s with yapfr   start	characterendline   )linesr	   )r
   r   r   )r   ranger	   r   s       r   pylsp_format_ranger      s}    HH;XuM"#E'N;	%LA !E%L GnV$q(%,v*>*BCDE85'::    c                 H   t        j                  t        j                               }t        j                  | |      rg S t        j
                  t        j                  j                  |             }||S t        j                  |      }|d   }|d   }|j                  d      $t        t        |j                  d            d      }|j                  d      |j                  d       }|rd}||d<   ||d<   ||d<   |j                         D ]  \  }}||vr|||<    |S )NUSE_TABSINDENT_WIDTHtabSizer   insertSpacesCONTINUATION_INDENT_WIDTH)r   GetExcludePatternsForDirosgetcwd	IsIgnoredGetDefaultStyleForDirpathdirnamer   CreateStyleFromConfiggetmaxintitems)document_pathr	   !exclude_patterns_from_ignore_filestyle_configuse_tabsindent_widthstyle_optionvalues           r   get_style_configr5   +   s-   (6(O(O
		)% /PQ	 "778VWL ..|<LJ'H/L{{9)3w{{956:{{>".{{>22 L'L#/L 0<L,-&}} +e|+%*\"+ r   c                 v   g }d}| j                   D ]  }|j                  r|j                  r|j                  dz
  }+|j                  r1|j                  |dz   dd|dz   ddd|j                  |z   d       h|j                  su|j                  dz
  }|j                  |dd|dz   ddddd       |} |S )Nr   r   r   r   r   r   r   newText )changesoldnewappendr   )diff	eol_chars
text_editsprev_line_nochangelsp_line_nos         r   diff_to_text_editsrG   ]   s    
 J L,, #'::&** "::>LZZ +7*:!K(4q(8qI  &{{Y6 ZZ **q.K +6A!F %0!O)* 
  "  'LG#'J r   c                     | j                   j                  |      ry | j                  }t        |      dz
  }|r|d   d   d   d   |k\  ry |j	                  |dd|dz   ddd|d   |z   d	       y )
Nr   r7   r   r   r   r   r8   r9   r:   )sourceendswithr   lenr@   )r   rB   rC   r   last_line_numbers        r   ensure_eof_new_linerM      s     	*NNE5zA~jnW-g6v>BRR #3C 01 41E Ry9,	
r   c                 l   | j                   }t        |      }|dv r|j                  |d      }nd}t        | j                  |      }t        ||| j                  d|      \  }}|sg S t        j                  |      }t        |      }	|j                          t        |	|      }
t        | ||
       |
S )N)z

)r.   r	   T)r   filename
print_diffr0   )rA   rB   )r   rB   rC   )rI   r   replacer5   r'   r   rQ   whatthepatchparse_patchnextcloserG   rM   )r   r   r	   rI   rB   r0   diff_txtchangedpatch_generatorrA   rC   s              r   r   r      s    __F f%IN"	40	#(--QL"""!Hg 	"..x8O D#CJY:Vr   )N)NN)loggingr#   rT   yapf.yapflibr   r   yapf.yapflib.yapf_apir   pylspr   pylsp._utilsr   	getLogger__name__r
   r   r   r5   rG   rM   r    r   r   <module>rc      sl     	  . ,  &g! 
2 
2 
; 
;$/d0f0r   