← back to Rentv Sheet Enrich

__pycache__/lib.cpython-314.pyc

48 lines

+
+~j�����Rt^RIt^RIt^RIt^RIt^RIt]PPRR4t	]PPR4tRt
RRRR	R
R/tRtR
tRRltRtRtRtRtRtRtR#)u�
lib.py — pure-stdlib Google Sheets read/write helpers with light-green fill marking.

No external deps (no gspread / google-api-python-client). Refreshes an access token
from SHEETS_REFRESH_TOKEN + the desktop OAuth client, then talks to the Sheets REST API.

Every cell this library writes is stamped with a LIGHT-GREEN background so Steve can
see at a glance what was auto-filled vs. what was already in the sheet.
N�SHEET_ID�,1yDmtj9Wxe71SaoQm8xpFsn722B4Ws67hTtPIHeXoN9Ez~/Projects/secrets-manager/.envz-https://sheets.googleapis.com/v4/spreadsheets�redgF����x�?�greengw��/��?�bluegd;�O���?c��/p\\4FUp\P!RVP	R44pV'gK3VP^4WP^4&KW	V# \dT#i;i)z^([A-Z0-9_]+)=(.*)$�
)�open�ENV_PATH�re�match�rstrip�group�FileNotFoundError)�d�ln�ms   �4/Users/macstudio3/Projects/rentv-sheet-enrich/lib.py�_envrsn��
�A�
��x�.�B����/����4��A�A��q�!�'�'�!�*�!�G�G�A�J�-�!�

�H���
���H�
�s�=A.�&A.�.A=�<A=c
��\4pVPR4qPR4pVPR4pV'g\R4h\PPRVRVRVRR/4P
4p\P!\PP\PPRV444pVR	,#)
�YT_UPLOAD_CLIENT_ID�YT_UPLOAD_CLIENT_SECRET�SHEETS_REFRESH_TOKENuJNot connected yet — run connect.py first (SHEETS_REFRESH_TOKEN missing).�	client_id�
client_secret�
refresh_token�
grant_typez#https://oauth2.googleapis.com/token�access_token)r�get�
SystemExit�urllib�parse�	urlencode�encode�json�load�request�urlopen�Request)�e�cid�csec�rt�data�toks      rrrs�����A�
�%�%�%�
&�C�u�u�5N�/O��	
���%�	&�B�
��e�f�f��<�<�!�!��S�/�4���\�?�#<�=�=C�V�X�	��)�)�F�N�N�*�*������D�d�K�M�N�C��~���c��Ve%\P!V4P4MRp\PPWVRRV2RR/R7p\P!\PPV44# \PPd`p\RTRTPR4^,R	TPR
TP4P4R,24hRp?ii;i)N�
AuthorizationzBearer zContent-Typezapplication/json)r-�method�headerszSheets API � �?z -> z: :Ni�N)r$�dumpsr#r r&r(r%r'�error�	HTTPErrorr�split�code�read�decode)r2�urlr.�bodyr-�r�exs&&&&   r�_reqrA+s���(,�(8�4�:�:�d��"�"�$�d�D������s�f� �G�C�5�/�>�CU�V�	�	X�A�n��y�y����/�/��2�3�3���<�<�!�!�n��;�v�h�a��	�	�#��q�0A�/B�$�r�w�w�i�r�RT�RY�RY�R[�Rb�Rb�Rd�ei�Rj�Qk�l�m�m��n�s�2B�D�'AD�Dc�8�\R\R\R2V4#)�GET�/z8?fields=sheets(properties(sheetId,title,gridProperties)))rA�API�SID)r.s&r�get_metarG4s ����#��a��u�$\�]�_b�c�cr/c	���\PPRVPRR4,R,RR7p\	R\
R\RVR2V4pVPR	.4#)
zGReturn the tab's values as a list of rows (list of str), padded ragged.�'z''�)�saferCrDz/values/z?majorDimension=ROWS�values)r r!�quote�replacerArErFr)r.�title�rng�ress&&  r�read_tabrR7se���,�,�
�
�S�5�=�=��d�#;�;�c�A��
�
K�C�
�u���Q�s�e�8�C�5�0D�E�s�
K�C��7�7�8�R� � r/c��Rqp\\R4V^,,4V,q^,^,
pV^8gKBV#)rJ�A)�chr�ord)�idx0�s�ns&  r�
col_letterrZ>s@��
�A�A�
���C��1�r�6�!�"�Q�&���G�a�K���q�5�%��Hr/c
�va�V3RlpV'gRR/#\TSVUu.uF
qC!V4NK	up4#uupi)z�
cells: list of dicts {row0, col0, value}  (0-based row/col indices)
Writes each value AND stamps a light-green background, in ONE batchUpdate.
c
��<�VPR4'dR\VR,4/MR\VR,4/pRRRSRVR,R	VR
,/RRR
VRR\//./.RR//#)�formula�formulaValue�value�stringValue�updateCells�start�sheetId�rowIndex�row0�columnIndex�col0�rowsrL�userEnteredValue�userEnteredFormat�backgroundColor�fields�2userEnteredValue,userEnteredFormat.backgroundColor)r�str�GREEN)�c�uev�sheet_ids& �r�mk�batch_fill.<locals>.mkJs����34�5�5��3C�3C�~�s�1�W�:��/�-�Y\�]^�_f�]g�Yh�Ii����i��:�q��y�-�QR�SY�QZ�[��h�"�C�#�&7��%?�"A�!B�C�D�
�J� L�M�	Mr/�skippedT��_chunked)r.rr�cellsrsrps&f&  r�
batch_fillryEs>���
M���4� � ��C��5�#9�5�a�B�q�E�5�#9�:�:��#9s�6c��VUUu.uF%wr4RRRVRVRV/RRRR	R
RR^R
^R^///./.RR//NK'	ppp\WV4#uuppi)uNcoords: list of (row0,col0) — blank the value AND reset background to white.rarbrcrdrfrhrLriNrjrkrrrrlrmrv)r.rr�coordsr?rp�reqss&&&   r�clear_cellsr}Vs���V\�	]�V\�T�Q�	��)�X�z�1�m�Q�G��(�0�$��"3�e�A�g�a��q�5Q�!R�T�U�V�W��F�	H�
I�V\�		�]�
�C�4�(�(��]s�+Ac���R^rC\^\V4V4FCp\R\R\R2VRW%WS,/4V\W%WS,4,
pKE	RV/#)i��POSTrDz:batchUpdate�requests�totalUpdatedCells)�range�lenrArErF)r.rrr|�CHUNK�total�is&&&   rrwrw_sh����5�
�1�c�$�i��
'���V��u�A�c�U�,�/��z�4�!�'�?�6S�T�
��T�A�G�_�%�%��(�
 ��'�'r/)N)�__doc__�osrr$�urllib.parser �urllib.request�environrrF�path�
expanduserr
rErorrrArGrRrZryr}rw�r/r�<module>r�s����2�1�1��j�j�n�n�Z�!O�P��
�7�7���?�@��5��
��w��v�u�5��
��n�d�!�
�;�")�(r/