
    Dj?                    b   d 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ZddlmZmZmZ dd	lmZmZmZ dd
lmZmZmZmZmZmZmZmZmZmZ ddlm Z  ddl!m"Z"m#Z#  ej$        d          Z%dZ&dZ'dZ(dZ) G d de*e          Z+ G d de*e          Z,d Z-d Z.dydZ/e%0                    d           ej1        dd d!e'"           ej1        d#d$d%          ddddd#eef	dzd:            Z2e%0                    d;          ddddd#eefd{d<            Z3e%0                    d=           ej1        dd>e)           ej1        d#d?d@           ej1        ddAdB           ej1        dCd d!e'"          ddddd#eefd|dH            Z4e%0                    dI           ej1        dJdKdL           ej1        dJdMdN           ej1        dd d!e'"          ddddd#eef
d}dP            Z5e%0                    dQ           ej6        dRe(           ej1        d#dSdT          ddddd#eef	d~dW            Z7e%0                    dX           ej6        dRd           ej1        e+j8        dYdZ           ej1        d[d\d!d]"          ddddd#eef
dd`            Z9e%0                    da           ej6        dRe(           ej1        dRdbdc           ej1        e,j:        ddde           ej1        ddfdg           ej1        dhdidj           ej1        e+j8        dYdZ           ej1        d[d\d!d]"          ddddd#eefddq            Z;e%0                    dr           ej1        ddAds           ej1        dCd d!dt"          ddddd#eef	ddv            Z<e%0                    dw          ddddd#eefd{dx            Z=dS )zNotes commands.    )annotations)Enum)islice)Path)OptionalN)CLIAbort	get_stateservice_call)normalize_sync_cursorsearch_notes_by_titleselect_recent_notes)
DEFAULT_LOG_LEVELDEFAULT_OUTPUT_FORMATHttpProxyOptionHttpsProxyOptionLogLevelOptionNoVerifySslOptionOutputFormatOptionSessionDirOptionUsernameOptionstore_command_options)console_table)NoteLockedErrorNoteNotFoundz"Inspect, render, and export Notes.)helpNoteszMaximum notes to show.zNote id.z
Folder id.c                      e Zd ZdZdZdZdS )PreviewAppearancez$Supported Notes preview appearances.lightdarkN)__name__
__module____qualname____doc__LIGHTDARK     V/home/thesage/.hermes/venv/lib/python3.11/site-packages/pyicloud/cli/commands/notes.pyr   r   *   s        ..EDDDr(   r   c                      e Zd ZdZdZdZdS )
ExportModezSupported Notes export modes.archivallightweightN)r!   r"   r#   r$   ARCHIVALLIGHTWEIGHTr'   r(   r)   r+   r+   1   s        ''HKKKr(   r+   c                B     t          t           fd j                  S )z8Return the Notes service with reauthentication handling.c                      j         S Nnotesapis   r)   <lambda>z _notes_service.<locals>.<lambda>;   s	    sy r(   account_name)r
   NOTESr9   r5   s   `r)   _notes_servicer;   8   s'     0000s?OPPPPr(   c                    	 t          t          || j                  S # t          t          f$ r"}t          t          |                    |d}~ww xY w)z?Wrap Notes service calls with note-specific user-facing errors.r8   N)r
   r:   r9   r   r   r   str)r6   fnerrs      r)   _notes_callr@   >   sY    *E2C4DEEEE/* * * *s3xx  c)*s    AAAtitler=   returnNonec                p    | j                             t          |g dd |D                                  dS )z&Render note summary rows in text mode.)IDTitleFolderModifiedDeletedc                b    g | ],}|j         |j        |j        |j        t	          |d d          f-S )
is_deletedF)idrA   folder_namemodified_atgetattr.0rows     r)   
<listcomp>z$_print_note_rows.<locals>.<listcomp>N   sO     	 	 	  FIOOCu55	 	 	r(   N)consoleprintr   )staterA   rowss      r)   _print_note_rowsrX   G   s_     
M<<<	 	  	 	 		
 	
    r(   recent
   z--limit   )minr   Fz--include-deletedz$Include notes from Recently Deleted.ctxtyper.Contextlimitintinclude_deletedboolusernamer   session_dirr   
http_proxyr   https_proxyr   no_verify_sslr   output_formatr   	log_levelr   c
           
     &   t          | |||||||	           t          |           }
|
                                }t          |          t	          |fd          }|
j        r|
                    |           dS t          |
d|           dS )zList recent notes.rc   rd   re   rf   rg   rh   ri   c                 (    t                     S )Nr_   ra   r   )ra   r_   r4   s   r)   r7   znotes_recent.<locals>.<lambda>~   s     #+
 
 
 r(   NzRecent Notes)r   r	   get_apir;   r@   json_output
write_jsonrX   )r]   r_   ra   rc   rd   re   rf   rg   rh   ri   rV   r6   payloadr4   s    ``          @r)   notes_recentrs   \   s    & ##	 	 	 	 cNNE
--//C3E	
 	
 	
 	
 	
 	
 G  !!!UNG44444r(   foldersc           
     f   t          | |||||||           t          |           }|                                }	t          |	          t	          |	fd          }
|j        r|                    |
           dS |j                            t          dg dd |
D                                  dS )zList note folders.rk   c                 F    t                                                     S r2   )listrt   r3   s   r)   r7   znotes_folders.<locals>.<lambda>   s    tEMMOO'<'< r(   NzNote Folders)rE   NamezHas SubfoldersCountc                B    g | ]}|j         |j        |j        |j        fS r'   )rL   namehas_subfolderscountrP   s     r)   rS   z!notes_folders.<locals>.<listcomp>   s*    RRR3cfch 2CI>RRRr(   
r   r	   ro   r;   r@   rp   rq   rT   rU   r   )r]   rc   rd   re   rf   rg   rh   ri   rV   r6   rr   r4   s              @r)   notes_foldersr      s     ##	 	 	 	 cNNE
--//C3E#<<<<==G !!!	M555RR'RRR	
 	
    r(   rw   z--folder-idz--allzIterate all notes.z--sincez"Incremental sync cursor for --all.2   	folder_idOptional[str]	all_notessincec           
        r|rt          j        d          r|st          j        d          t          | |||||	|
|           t          |           }|                                }t          |          rt          |fd          }n,|rt          |fd          }nt          |fd          }|j        r|                    |           dS t          |d|           dS )	zList notes.z-Choose either --folder-id or --all, not both.z"The --since option requires --all.rk   c                 L    t                                                   S )N)r_   )rw   	in_folder)r   r_   r4   s   r)   r7   znotes_list.<locals>.<lambda>   s    eooiuoEEFF r(   c                 f    t          t                                                             S N)r   )rw   r   iter_allr_   r4   r   s   r)   r7   znotes_list.<locals>.<lambda>   s'    DU ; ;UCCDD r(   c                 (    t           d          S )NFrm   rn   )r_   r4   s   r)   r7   znotes_list.<locals>.<lambda>   s     ' %   r(   Nr   )
typerBadParameterr   r	   ro   r;   r@   rp   rq   rX   )r]   r   r   r   r_   rc   rd   re   rf   rg   rh   ri   rV   r6   rr   r4   s    ` ``          @r)   
notes_listr      sm   *  RY R !PQQQ GY G !EFFF##	 	 	 	 cNNE
--//C3E 
FFFFFF
 
 
 
DDDDDD
 

     
 
  !!!UGW-----r(   search z--titlezExact note title.z--title-containsz&Case-insensitive note title substring.title_containsc           
                                         s#                                 st          d          t          | ||||||	|
           t          |           }|                                }t          |          t          |fd          }|j        r|                    |           dS t          |d|           dS )zSearch notes by title.z1Pass --title or --title-contains to search notes.rk   c                 *    t                     S )N)rA   r   r_   )r   )r_   r4   rA   r   s   r)   r7   znotes_search.<locals>.<lambda>  s#    %)	
 
 
 r(   NzMatching Notes)
stripr   r   r	   ro   r;   r@   rp   rq   rX   )r]   rA   r   r_   rc   rd   re   rf   rg   rh   ri   rV   r6   rr   r4   s    ```          @r)   notes_searchr      s   ( ;;== L!5!5!7!7 LJKKK##	 	 	 	 cNNE
--//C3E	
 	
 	
 	
 	
 	
 	
 G  !!!U,g66666r(   get.z--with-attachmentszInclude attachment metadata.note_idwith_attachmentsc
           
        t          | |||||||	           t          |           }
|
                                }t          |          t	          |fd          }|
j        r|
                    |           dS |
j                            |j	         d|j
         d           |j        r"|
j                            d|j                    |j        r"|
j                            d|j                    |j        r|
j                            |j                   rC|j        r>|
j                            t          dg d	d
 |j        D                                  dS dS dS )zGet one note.rk   c                 2                                    S )N)r   )r   )r   r4   r   s   r)   r7   znotes_get.<locals>.<lambda>D  s    UYYw9IYJJ r(   Nz []zFolder: z
Modified: Attachments)rE   FilenameUTISizec                B    g | ]}|j         |j        |j        |j        fS r'   )rL   filenameutisize)rQ   atts     r)   rS   znotes_get.<locals>.<listcomp>U  s)    WWWs#&#,:WWWr(   )r   r	   ro   r;   r@   rp   rq   rT   rU   rA   rL   rM   rN   textattachmentsr   )r]   r   r   rc   rd   re   rf   rg   rh   ri   rV   r6   noter4   s    ``          @r)   	notes_getr   #  s   & ##	 	 	 	 cNNE
--//C3EJJJJJJ D  	M4:33333444 ;9t'799::: =;)9;;<<<y 'DI&&& 
D, 
111WWdFVWWW 	
 	
 	
 	
 	

 
 
 
r(   renderz--preview-appearancezPreview appearance preference.iX  z--pdf-heightzEmbedded PDF height in pixels.preview_appearance
pdf_heightc           
     F   t          | ||||||	|
           t          |           }|                                }t          |          t	          |fd          }|j        r|                    |d           dS |j                            |d           dS )zRender a note to HTML.rk   c                 >                          j                  S )N)r   pdf_object_height)render_notevalue)r   r4   r   r   s   r)   r7   znotes_render.<locals>.<lambda>  s(    !!17( " 
 
 r(   )r   htmlNT)	soft_wrap	r   r	   ro   r;   r@   rp   rq   rT   rU   )r]   r   r   r   rc   rd   re   rf   rg   rh   ri   rV   r6   r   r4   s    ```          @r)   notes_renderr   Z  s    2 ##	 	 	 	 cNNE
--//C3E	
 	
 	
 	
 	
 	
 	
 D  Wd;;<<<	M-----r(   exportz--output-dirzDestination directory.z--export-modezExport mode.z--assets-dirz1Directory for downloaded assets in archival mode.Tz--full-page/--fragmentz)Wrap exported output in a full HTML page.
output_dirr   export_mode
assets_dirPath | None	full_pagec                R   t          | ||	|
||||           t          |           }|                                }t          |          t	          |fd          }|j        r|                    |d           dS |j                            |           dS )zExport a note to disk.rk   c            	                              t                    j         rt                     nd j                  S )N)r   r   r   r   r   )export_noter=   r   )r   r   r   r   r4   r   r   r   s   r)   r7   znotes_export.<locals>.<lambda>  sL    !!
OO#)*4>s:$17( " 
 
 r(   )r   pathNr   )r]   r   r   r   r   r   r   r   rc   rd   re   rf   rg   rh   ri   rV   r6   r   r4   s    ```````          @r)   notes_exportr     s    R ##	 	 	 	 cNNE
--//C3E	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 D  Wd;;<<<	Mr(   changeszSync cursor.zMaximum changes to show.
str | Nonec
           
     n   t          | |||||||	           t          |           }
|
                                }t          |          t	          |fd          }|
j        r|
                    |           dS |
j                            t          dg dd |D                                  dS )z!List note changes since a cursor.rk   c                 f    t          t                                                             S r   )rw   r   iter_changesr   s   r)   r7   znotes_changes.<locals>.<lambda>  s*    VE..U.;;UCCDD r(   NzNote Changes)TypezNote IDrG   rH   c                `    g | ]+}|j         |j        j        |j        j        |j        j        f,S r'   )typer   rL   rM   rN   rP   s     r)   rS   z!notes_changes.<locals>.<listcomp>  sA        38;(<ch>RS  r(   r~   )r]   r   r_   rc   rd   re   rf   rg   rh   ri   rV   r6   rr   r4   s    ``          @r)   notes_changesr     s     ##	 	 	 	 cNNE
--//C3EDDDDDD G  !!!	M555 "  	
 	
	 	 	 	 	r(   zsync-cursorc           
     J   t          | |||||||           t          |           }|                                }	t          |	          t	          |	fd          }
|j        r$|                    t          |
                     dS |j        	                    |
           dS )z$Print the current Notes sync cursor.rk   c                 ,                                      S r2   )sync_cursorr3   s   r)   r7   z#notes_sync_cursor.<locals>.<lambda>  s    e&7&7&9&9 r(   N)
r   r	   ro   r;   r@   rp   rq   r   rT   rU   )r]   rc   rd   re   rf   rg   rh   ri   rV   r6   cursorr4   s              @r)   notes_sync_cursorr     s     ##	 	 	 	 cNNE
--//C3E9999::F .v66777	Mr(   )rA   r=   rB   rC   )r]   r^   r_   r`   ra   rb   rc   r   rd   r   re   r   rf   r   rg   r   rh   r   ri   r   rB   rC   )r]   r^   rc   r   rd   r   re   r   rf   r   rg   r   rh   r   ri   r   rB   rC   )r]   r^   r   r   r   rb   r   r   r_   r`   rc   r   rd   r   re   r   rf   r   rg   r   rh   r   ri   r   rB   rC   )r]   r^   rA   r=   r   r=   r_   r`   rc   r   rd   r   re   r   rf   r   rg   r   rh   r   ri   r   rB   rC   )r]   r^   r   r=   r   rb   rc   r   rd   r   re   r   rf   r   rg   r   rh   r   ri   r   rB   rC   )r]   r^   r   r=   r   r   r   r`   rc   r   rd   r   re   r   rf   r   rg   r   rh   r   ri   r   rB   rC   ) r]   r^   r   r=   r   r   r   r+   r   r   r   rb   r   r   r   r`   rc   r   rd   r   re   r   rf   r   rg   r   rh   r   ri   r   rB   rC   )r]   r^   r   r   r_   r`   rc   r   rd   r   re   r   rf   r   rg   r   rh   r   ri   r   rB   rC   )>r$   
__future__r   enumr   	itertoolsr   pathlibr   typingr   r   pyicloud.cli.contextr   r	   r
   pyicloud.cli.normalizer   r   r   pyicloud.cli.optionsr   r   r   r   r   r   r   r   r   r   pyicloud.cli.outputr   pyicloud.services.notes.servicer   r   Typerappr:   _MAX_NOTES_TO_SHOW_HELP_NOTE_ID_HELP_FOLDER_ID_HELPr=   r   r+   r;   r@   rX   commandOptionrs   r   r   r   Argumentr   r%   r   r.   r   r   r   r'   r(   r)   <module>r      sM     " " " " " "                          B B B B B B B B B B         
                        . - - - - - I I I I I I I Iek;<<<2     T            d      Q Q Q* * *   * X b)9PQQQ(EL3  
  $$("&$(',(= 1*5 *5 *5 *5 *5Z Y  $$("&$(',(= 1# # # # #L V  ,u|D-oVVV"el5'8LMMM'5<1  
 b)9PQQQ#$("&$(',(= 1!;. ;. ;. ;. ;.| X b)2EFFF&%,
5  
 b)9PQQQ#$("&$(',(= 1/7 /7 /7 /7 /7d U "5>#M:::)U\+  
  $$("&$(',(= 13
 3
 3
 3
 3
l X "5>#J777,8EL-- - -
 #el-	    $$("&$(',(= 1)0. 0. 0. 0. 0.f X "5>#M:::#u|C>VWWW*el  
 +el@  
 #el 8  
 -9EL-- - -
 #el-	    $$("&$(',(= 1ID D D D DN Y %T9>JJJb)9STTT#$("&$(',(= 1+ + + + +\ ]  $$("&$(',(= 1             r(   