← back to Hollywood Price 2026

__pycache__/split_analysis.cpython-314.pyc

50 lines

+
�Sj*���Rt^RIt^RIt^RIt^RIt^RIt^RIt]PP^R4^RI
HtRtRt
Rt]PPR4tRtR	tR
tRtRtR
t]R8Xd
]!4R#R#)a@Measure the real split for the 1,577 Needs-Price Hollywood products via the
CORRECT join: Shopify sku-base -> col3 (Momentum number) -> LIVE Meilisearch price.
Buckets: LIVE-PRICED (current Momentum price) / GONE (col3 known, no live price) /
NO-COL3 (sku-base not in the momentum col3 map). Writes plan_correct.csv. $0.N�lib��gqlz/https://ms-e886719d86e7-4256.sfo.meilisearch.iozredesign-colors�@95fe8376edc78d49e787db49edda68426b21649f6271f49e2f1412118612fbd6z~/Projects/hollywood-importg^�I+�?c
���/p^p\P!RRRRRVR.RO/4P4p\PP\R
\R2VRRR\2RR/R7p\P!\PPV^(R74PR.4pV'gV#VF�pVPR4pV'gKR
VPR
4RVPR4RVPR	4RVPR4RVPR4/V\V4&K�	V\V4,
p\V4R8gVR8�gEKnV#)zIPage the whole index -> {number: {price, pattern, color, closeout, new}}.�q��limiti��offset�attributesToRetrieve�number�pattern_name�preferred_color_name�price�new�closeoutz	/indexes/z/search�POST�
AuthorizationzBearer zContent-Typezapplication/json)�data�method�headers)�timeout�hits�pattern�colori N)rr
rrrr)�json�dumps�encode�urllib�request�Request�HOST�INDEX�KEY�load�urlopen�get�str�len)�out�off�body�reqr�h�nums       �split_analysis.py�meili_indexr0sb��
�C�A�c�
��z�z�3��G�T�8�S�"�$r�t�u�u{�u{�u}�	
��n�n�$�$��v�Y�u�g�W�%E�D�Y_�$���u�o�~�GY�Z�%�\���y�y����/�/��R�/�@�A�E�E�f�b�Q�����J��A��%�%��/�C��s�!(�!�%�%��.�)�Q�U�U�>�EZ�!(�!�%�%�0F�*G��UV�UZ�UZ�[e�Uf�hm�op�ot�ot�uz�o{�!}��C��H�
��
	�s�4�y����t�9�t��s�e�|���J�c���/pRF�p\PP\V4p\PP	V4'gKN\
P!\V44FkpVPR4qCPR4pV'gK.V'gK8\V4P4V\V4P4&Km	K�	V#)zGmfr (Shopify sku-base) -> col3 (Momentum number), from staged + absent.�mfr�col3)zmom-col3-staged.jsonzmom-col3-absent.json)�os�path�join�HI�existsrr$�openr&r'�strip)�m�fn�p�rr3r4s      r/�col3_mapr@+s���
�A�>���G�G�L�L��R� ���w�w�~�~�a� � �����4��7�#�A��%�%��,�C�u�u�V�}���s�t�t�&)�$�i�o�o�&7��#�c�(�.�.�"�#�$�	?�
�Hr1c���Rp.Rr!\VRRRV/4pVR,qAVR,Uu.uFqUR,NK
	up,
pVR,R	,'gV#VR,R
,pKjuupi)a%query($q:String!,$after:String){ products(first:200, after:$after, query:$q){
      pageInfo{hasNextPage endCursor}
      edges{ node{ id legacyResourceId handle title
        dwsku: metafield(namespace:"custom", key:"dw_sku"){ value }
        variants(first:5){ edges{ node{ sku } } } } } } }Nrz>vendor:'Hollywood Wallcoverings' status:active tag:Needs-Price�after�products�edges�node�pageInfo�hasNextPage�	endCursorr)�Qr)�cur�dr>�es      r/�shopify_needspricerM9s���	=�A�
�4��
���C�Y�[b�dg�h�i��
�j�M��a��j�"A�j��V�9�9�j�"A�A�3���}�]�+�+���J��
�m�K�(���#Bs�A0c���VR,R,FSpVR,R,;'gRpVP4PR4'gKDVR\R4)u#	R#)�variantsrDrE�skurz-sampleN)�lower�endswithr()�nrL�sks&  r/�sku_baserUIs^��
�z�]�7�
#�
#����i���$�$�"��
�8�8�:���y�)�)��&��I���'�'�$�r1c�	�\R4\4p\R\V4R24\4p\R\V424\	4p\R\V424\
P!4p\
P!R4p.pVEF&p\V4pVPR4;'g/PR4;'gRpV'dVPR	4^,MR
p	V'g3VR;;,^,
uu&WI,R;;,^,
uu&K�VPV4p
V
'g3VR;;,^,
uu&WI,R
;;,^,
uu&K�VPV
4pV'd�VPR4RG9d�VR;;,^,
uu&WI,R;;,^,
uu&\VR,4pVPRVR,RVR,RVR,RVR,RVRVRV
RVPR4RVPR4RVR \V\,^4R!VPR!4R"VPR"4/
4EK�VR#;;,^,
uu&WI,R$;;,^,
uu&EK)	V'dv\R%R&RR'7;_uu_4p
\ P"!V
\%V^,P'44R(7q�P)4VP+V4RRR4\R)\V4,4VP-4Fwpp\R*VR+
R,V24K	\R-4\/VP14R.R/7FAwp	p\R0V	R1
R2VR,R3
R4VR$,R3
R5VR
,R3
R6VR,R7
2
4KC	V'd�\/R8V44p\R9\V4R:V^,R;
R<VRH,R;
R=V\V4^,,R;
24\R>4VR?,FEp\R0VR,R@
RAVR,:RB
RCVR,:RD
REVR,RFVR ,2
4KG	R#R# +'giEL�;i)Iz*pulling live Momentum Meilisearch index...z  meili index: z priced/known numbersz  col3 map (sku-base->number): z!  shopify Needs-Price Hollywood: c�,�\P!4#)N)�collections�Counter�r1r/�<lambda>�main.<locals>.<lambda>[s
���0C�0C�0Er1�dwsku�valuer�-zNO-DWzno-skuzno-col3 (not in momentum map)zno-col3rNzLIVE-PRICED�live�
product_id�legacyResourceId�gid�id�handle�title�dw_skurUr4�mom_patternr�	mom_colorr�
list_price�	hw_retailrrz GONE (col3 known, no live price)�gonezplan_correct.csv�w)�newline)�
fieldnamesz
===== SPLIT (of %d) =====z  �38z: z5
  by dw_sku prefix (live / gone / no-col3 / no-sku):c�D�\V^,P44)#)�)�sum�values)�xs&r/r[r\zs��C��!����
�<N�;Nr1)�keyz    �8z: live=�4z gone=z	 no-col3=z no-sku=�3c3�2"�TF
qR,x�K	R#5i)rkNrZ)�.0r>s& r/�	<genexpr>�main.<locals>.<genexpr>}s���7�Y��{�^�^�Y�s�z$
  LIVE-PRICED -> plan_correct.csv (z); hw_retail $z.2fz-$z	 median $z
  samples::N�N�12� �16�/�14z list $z -> hw $)N������)�printr0r(r@rMrXrY�defaultdictrUr&�split�float�append�round�MARKUPr:�csv�
DictWriter�list�keys�writeheader�	writerows�most_common�sorted�items)�meili�c3�prods�buckets�	by_prefix�	priceablerS�base�dw�prefr4�rec�lp�frm�k�v�c�hwsr>s                    r/�mainr�QsV��	�
6�7��M�E�	�O�C��J�<�'<�
=�>�	��B�	�+�C��G�9�
5�6�� �E�	�-�c�%�j�\�
:�;��!�!�#�G��'�'�(E�F�I��I�
����{���e�e�G�n�"�"��
'�
'��
0�
6�
6�B��#%�r�x�x��}�Q��7����H���"��I�O�H�$=��$B�$=�H��v�v�d�|����3�4��9�4�9�?�9�;U�YZ�;Z�;U�\d��i�i��o���3�7�7�7�#�9�4��M�"�a�'�"����)@�A�)E�)@��s�7�|�$�B����l�A�.@�,A�5�!�D�'�S[�]^�_g�]h���7��X�r�:�t�V�T��s�w�w�y�1�;�����@P��b�+�u�R�&�[�!�/D��C�G�G�J�/�������	H�
I�
�6�7�1�<�7�i�o�f�>U�YZ�>Z�>U�'�*�
�$�c�2�
6�
6�!����q�T�)�A�,�2C�2C�2E�-F�G�A����Z[�Ze�Ze�fo�Zp�7�
�
'�#�e�*�
4�5��#�#�%���1�
��1�R�&��1�#���&�	�
B�C��)�/�/�+�1N�O���a�
��T�!�H�G�A�f�I�a�=��q��y��m�9�Q�y�\�Z[�L\�\d�ef�go�ep�qr�ds�t�u�P���7�Y�7�7��
�5�c�)�n�5E�^�TW�XY�TZ�[^�S_�_a�be�fh�bi�jm�an�nw�x{�|�AD�}E�GH�}H�yI�JM�xN�O�	P�
�l���2���A��D��:��r�*�!�A�m�,<�+B�r�+B�!�A�k�N�CX�UW�CX�X_�`a�bn�`o�_p�px�yz�|G�zH�yI�J�
K��	�7�
6�
6�s
�)AR>�>S	�__main__)�__doc__�sysr5rr��urllib.requestrrXr6�insert�shopifyrr!r"r#�
expanduserr8r�r0r@rMrUr��__name__rZr1r/�<module>r�s���Q��	��
���������5���8��BS�%�H���W�W���5�6��	���,
�
� �0K�f�z���F�r1