+
    8iJu                       ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
HtH
t
Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ]! ]4      P5                  4       t]P8                  ^,          t]P8                  ^,          t]R,          R,          R,          t]PA                  R4      t!Rt"Rt#Rt$]PJ                  PM                  RR4      PO                  4       PQ                  4       RX9   t)]*! ^]+! ]PJ                  PM                  RR4      ;'       g    R4      4      t,]*! ^ ]+! ]PJ                  PM                  RR4      ;'       g    R4      4      t-]*! ^]+! ]PJ                  PM                  RR4      ;'       g    R4      4      t.R^R^R^R^R^R^R ^R!^R"^	R#^
R$^R%^/t/R& t0R' R( lt1R) R* lt2R+ R, lt3R- R. lt4R/ R0 lt5R1 R2 lt6R3 R4 lt7RYR5 R6 llt8R7 R8 lt9R9 R: lt:R; R< lt;R= R> lt<R? R@ lt=RA RB lt>RC RD lt?RE RF lt@RG RH ltARI RJ ltBRK RL ltCRM RN ltDRO RP ltERQ RR ltFRS RT ltGRU RV ltH]IRW8X  d   ]J! ]H! 4       4      hR# )Z    )annotationsN)Counter)datedatetime	timedelta)Path)Any)urljoin)BeautifulSoup)By)WebDriverWaitBoot_FeaturesRW_ScraperszRW_Site_Scraper-Orders_Page.pyzincoming_stock.jsonzehttps://order.redwingshoes.com/on/demandware.store/Sites-B2B-Site/default/Order-History?orderFilter=6zLast Six MonthszPhttps://www.ups.com/track?loc=null&tracknum={tracking}&requester=ST/trackdetailsRW_HEADLESS1RW_INCOMING_LOOKBACK_DAYS45RW_INCOMING_MAX_ORDERS0RW_UPS_WAIT_SECONDS30januaryfebruarymarchaprilmayjunejulyaugust	septemberoctobernovemberdecemberc                    R p V \         P                  9   d   \         P                  V ,          # \        P                  P	                  V \
        4      pVe   VP                  f   \        R\
         24      h\        P                  P                  V4      pV\         P                  V &   VP                  P                  V4       V# )_rw_order_site_helperz$Could not load Red Wing helper from )
sysmodules	importlibutilspec_from_file_locationRW_HELPER_PATHloaderImportErrormodule_from_specexec_module)module_namespecmodules      _C:\Users\jasti\Documents\My_Sync\Shared\61_RW_Site\Pulled_Info\Warehouse\Pull_Incoming_Stock.pyload_rw_helperr4   2   s    )Kckk!{{;''>>11+~ND|t{{*@@PQRR^^,,T2F%CKKKKF#M    c                    V ^8  d   QhRRRR/#    valueobjectreturnstr )formats   "r3   __annotate__r?   ?   s     / /f / /r5   c                    \         P                  ! R R\        T ;'       g    R4      4      P                  4       p\         P                  ! RRV4      # )z\s+  z\s+([,.;:])z\1)resubr<   strip)r9   texts   & r3   
clean_textrG   ?   s;    66&#s5;;B/0668D66.%..r5   c                    V ^8  d   QhRRRR/# )r8   r9   r:   r;   	list[str]r=   )r>   s   "r3   r?   r?   D   s      f  r5   c                    . p\        T ;'       g    R 4      P                  4        F)  p\        V4      pV'       g   K  VP                  V4       K+  	  V# )rB   )r<   
splitlinesrG   append)r9   linesraw_linelines   &   r3   
text_linesrP   D   sG    E$//1(#4LL 2 Lr5   c                    V ^8  d   QhRRRR/# r8   r9   r:   r;   floatr=   )r>   s   "r3   r?   r?   M   s      v % r5   c                    \        V 4      pV'       g   R # VP                  RR4      P                  RR4      p \        V4      #   \         d     R # i ; i)        $rB   ,rG   replacerS   	Exceptionr9   raws   & r3   parse_moneyr]   M   sP    
U
C
++c2

&
&sB
/CSz s   
A AAc                    V ^8  d   QhRRRR/# rR   r=   )r>   s   "r3   r?   r?   X   s      & U r5   c                    \        V 4      pV'       g   R # VP                  RR4      p \        V4      #   \         d     R # i ; i)rU   rW   rB   rX   r[   s   & r3   parse_quantityr`   X   sC    
U
C
++c2
CSz s   
4 AAc                    V ^8  d   QhRRRR/# r7   r=   )r>   s   "r3   r?   r?   c   s       C r5   c                    \        V 4      p\        V4      P                  4       '       d   \        \	        V4      4      # VR  # )g)r`   rS   
is_integerr<   int)r9   qtys   & r3   format_quantity_valuerg   c   s7    

CSz3s8}!Wr5   c                    V ^8  d   QhRRRR/# r7   r=   )r>   s   "r3   r?   r?   j   s     	 	& 	S 	r5   c                    \        V 4      pV'       g   R # R F6  p \        P                  ! W4      P                  4       P	                  4       u # 	  R #   \
         d     KJ  i ; i)rB   )%Y-%m-%d%m/%d/%Y)rG   r   strptimer   	isoformatrZ   r9   r\   fmts   &  r3   parse_iso_daterp   j   s]    
U
C'	$$S.335??AA (
   		s   1AA#"A#c                    V ^8  d   QhRRRR/# r7   r=   )r>   s   "r3   r?   r?   v   s     	 	& 	S 	r5   c                    \        V 4      pV'       g   R # R F*  p \        P                  ! W4      P                  RR7      u # 	  R #   \         d     K>  i ; i)rB   minutestimespec)z%Y-%m-%d %H:%Mz%Y-%m-%d %H:%M:%S)rG   r   rl   rm   rZ   rn   s   &  r3   parse_history_datetimerv   v   sY    
U
C6	$$S.88)8LL 7
   		s   %AAAc               $    V ^8  d   QhRRRRRR/# )r8   r9   r:   reference_datezdate | Noner;   r<   r=   )r>   s   "r3   r?   r?      s"     ( ( ( (PS (r5   c                   \        V 4      pV'       g   R # \        P                  ! RV\        P                  R7      pV'       g   R # \        VP                  ^4      P                  4       ,          p\        VP                  ^4      4      pT;'       g$    \        P                  ! 4       P                  4       p. pVP                  ^,
          VP                  VP                  ^,           3 F<  p \        WV4      p	TP                  \        Y,
          P                  4      T	34       K>  	  V'       g   R # VP!                  R R7       V^ ,          ^,          P#                  4       #   \         d     K  i ; i)rB   zc(January|February|March|April|May|June|July|August|September|October|November|December)\s+(\d{1,2})flagsc                &    V ^ ,          V ^,          3# r   r=   items   &r3   <lambda>'parse_human_month_day.<locals>.<lambda>   s    d1gtAw%7r5   key)rG   rC   search
IGNORECASEMONTHSgrouplowerre   r   nowr   year
ValueErrorrL   absdayssortrm   )
r9   rx   r\   matchmonthdayref
candidatesr   	candidates
   &&        r3   parse_human_month_dayr      s   
U
CIInmmE
 5;;q>'')*E
ekk!n
C

1
1HLLN//1C)+JAsxxA6	T#.I 	3	556	BC 7 OO7O8a=%%''  		s   /E&&E54E5c                    V ^8  d   QhRRRR/# r7   r=   )r>   s   "r3   r?   r?      s     
 
6 
c 
r5   c                    \        V 4      pV'       g   R # R F+  p \        P                  ! W4      pVP                  R4      u # 	  V#   \         d     K?  i ; i)rB   z	%b %d, %Y)rj   z%Y-%m-%dT%H:%Mz%Y-%m-%dT%H:%M:%S)rG   r   rl   strftimerZ   )r9   r\   ro   parseds   &   r3   format_date_for_displayr      s\    
U
CB	&&s0F??;// C J  		s   &A		AAc                    V ^8  d   QhRRRR/# )r8   selectorr<   r;   r=   )r>   s   "r3   r?   r?      s     C C3 C3 Cr5   c           	         \        \        V 4      R 4      pVP                  V4       F  pVP                  4        K  	  RP	                  \        VP                  RRR7      4      4      # )html.parser
TrE   )r   r<   selectextractjoinrP   get_text)noder   cloner   s   &&  r3   clone_without_selectorr      sO    #d)]3Eh' (99Zt4 @ABBr5   c                    V ^8  d   QhRRRR/# )r8   soupr   labelr<   r=   )r>   s   "r3   r?   r?      s      } S r5   c                   \        V4      P                  R 4      P                  4       pV P                  R4       FF  p\        VP	                  RRR7      4      P                  R 4      P                  4       pWB8X  g   KD  Vu # 	  R# ):.c-order-details__headingrA   Tr   N)rG   rstripr   r   r   )r   r   targetheadingheading_texts   &&   r3   find_headingr      sr    %%c*002F;;:;!'"2"23d"2"CDKKCPVVX!N < r5   c                    V ^8  d   QhRRRR/# )r8   htmlr<   r;   list[dict[str, Any]]r=   )r>   s   "r3   r?   r?      s      c &: r5   c                n   \        V R 4      p. pVP                  R4       EF  pVP                  R4      p\        V4      ^8  d   K'  V^ ,          P	                  RRR7      pVf   KG  \        VP                  RRR7      4      pV'       g   Km  V^,          P	                  RR	R
7      pV'       d   \        VP                  RRR7      4      MRp\        V'       d   VP                  R4      ^ ,          MV^,          P                  RRR7      4      p	VP                  RVR\        \        VR,          4      R\        V^,          P                  RRR7      4      RV	R\        V4      R\        V^,          P                  RRR7      4      R\        V^,          P                  RRR7      4      /4       EK  	  V# )r   z%table.js-order-history-table tbody trtdaThrefrA   r   spanzd-none)class_rB   orderNumber	detailUrlr   poNumber	orderDateorderDateTimeorderTotalText
orderTotal)r   r   find_alllenfindrG   r   rp   splitrL   r
   ORDER_HISTORY_URLrv   r]   )
r   r   rowstrcellslinkorder_number	hidden_dthidden_dt_text
order_dates
   &         r3   parse_order_historyr      s   }-D!#DkkABD!u:>Qx}}St},<!$--4-"@A!HMM&M:	LUI$6$6s$$6$GH[]#NN$8$8$=a$@X]^_X`XiXijmuyXiXz{
|W%6VEJuQx'8'8D'8'IJZ!7!G *U1X->->s$->-O"Pk%(*;*;Ct*;*LM
	
 C0 Kr5   c                    V ^8  d   QhRRRR/# )r8   cardr   r;   ztuple[float, str, float, str]r=   )r>   s   "r3   r?   r?      s     6 6 6*G 6r5   c                   R pRpR pRpV P                  R4       F  p\        VP                  R4      '       d#   VP                  R4      P                  RRR7      MR4      P	                  4       p\        VP                  R4      '       d#   VP                  R4      P                  RRR7      MR4      pVR8X  d   \        V4      pTpK  VR	8X  g   K  \        V4      pTpK  	  WW43# )
rU   rB   z3.c-card-product-info__item-pricing .item-attributesz.line-item-price-inforA   Tr   z.line-item-total-price-amountquantitytotal)r   rG   
select_oner   r   r`   r]   )r   r   quantity_textr   
total_textblockr   r9   s   &       r3   parse_pricingr      s   HMEJRSbgbrbr  tK  cL  cL5++,CDMMcY]M^  RT  U  [  [  ]jojzjz  |[  k\  k\5++,KLUUVYaeUf  bd  eJ%e,H!Mg&EJ T E55r5   c                    V ^8  d   QhRRRR/# )r8   r   r   r;   r   r=   )r>   s   "r3   r?   r?      s     ! !M !.B !r5   c                N   V P                  R 4      pVf   . # VP                  R4      pV'       g   . # VR,          P                  RR.4      pV Uu. uF  p\        VP	                  RRR7      4      NK!  	  ppV'       g   . # \        V4      ^8  d
   VR,          M. p. pVP                  R	4       EFf  p\        VP                  R4      '       d#   VP                  R4      P	                  RRR7      MR
4      p	VP                  R4      p
V
'       g   Kc  \        V4      \        V
4      8  d   V\        V
4      ) R MTp\        V
4       F  w  r\        VP	                  RRR7      4      pV^ 8:  d   K*  V\        V4      8  d	   Wk,          MR
pW3 Uu. uF%  q'       g   K  VP                  4       R9  g   K#  VNK'  	  ppTP                  RTRT	RTRRP                  V4      P                  4       ;'       g    T;'       g    T	;'       g    R/4       K  	  EKi  	  V# u upi u upi )ztable.c-order-entry-tableNzthead trthr   rA   Tr   :   NNtbody trrB   sizewidthr   r   Qty>   r   r   )r   r   r   rG   r   r   r   	enumerater`   r   rL   r   rE   )r   tableheader_rowslast_header_cellscelllast_header_textcolumn_headersallocationsrow	row_labelr   indexrf   r   partlabel_partss   &               r3   parse_allocationsr      s   OO78E}	,,z*K	#B00$>O`aO`t
4==D=#ABO`a	-01A-BQ-F%b)BN(*K||J'388TX>>sxx~66s$6G_ab	T";>?O;PTWX]T^;^)3u:+,7dt$U+KE s$!?@Cax,1C4G,G>(RD-1,=p,=D4$**,^oJo44,=KpDYSXXk288:XXdXXiXXSX	 , (( 3 b  qs   %H	H"H"6H"c                    V ^8  d   QhRRRR/# )r8   r   r   r;   rI   r=   )r>   s   "r3   r?   r?     s      '; 	 r5   c           	     R   \        4       pV  FS  p\        VP                  R 4      4      pV'       g   K'  W;;,          \        VP                  R4      4      ,          uu&   KU  	  \	        VP                  4       R R7       UUu. uF  w  r4V R\        V4       2NK  	  pppV# u uppi )r   r   c                    V ^ ,          # r}   r=   r~   s   &r3   r   'summarize_allocations.<locals>.<lambda>  s    rvwxryr5   r    x)r   rG   getr`   sorteditemsrg   )r   counter
allocationr   rf   partss   &     r3   summarize_allocationsr     s    #IG!
:>>'23.
)CDD	 "
 IOw}}dzH{|H{*%wb.s345H{E|L }s   B#c                    V ^8  d   QhRRRR/# )r8   r   r   r;   dict[str, Any]r=   )r>   s   "r3   r?   r?     s      - N r5   c                   \        V P                  R 4      '       d#   V P                  R 4      P                  RRR7      MR4      p\        V P                  R4      '       d#   V P                  R4      P                  RRR7      MR4      p\        V P                  R4      '       d#   V P                  R4      P                  RRR7      MR4      p\        \        P                  ! RRV\        P
                  R7      4      pV P                  R	4      p\        V 4      w  rgr\        V 4      p
R
TRTRTRV'       d!   VP                  RR4      P                  4       MRRVRVRVRV	RV
R\        V
4      /
# )z.line-item-namerA   Tr   rB   zdl dtzdl ddz\s*-\s*Style:\s*$rz   zimg.product-imagestylenamebrandimagesrcr   quantityTextr   	totalTextr   allocationSummary)rG   r   r   rC   rD   r   r   r   r   rE   r   )r   headerdtr  r  r  r   r   r   r   r   s   &          r3   parse_item_cardr    sL   X\XgXghyXzXz(9:CCCtCT  AC  DF	$//ZaJbJbDOOG,55c5Fhj	kBT__]dMeMetw/88D8IkmnErvv2B"--PQEOO/0E1>t1D.HU#D)K5"%++-BHZ{2;? r5   c               $    V ^8  d   QhRRRRRR/# )r8   r   r<   history_rowr   r;   r=   )r>   s   "r3   r?   r?   .  s&     T TS T~ T. Tr5   c                N
   \        V R 4      p\        VP                  R4      '       dI   \        P                  ! RRVP                  R4      P                  RRR7      \        P                  R7      MVP                  RR4      4      p\        VP                  R	4      '       dI   \        P                  ! R
RVP                  R	4      P                  RRR7      \        P                  R7      MVP                  RR4      4      pRpRpRp\        VP                  R4      4      p\        VR4      p	V	'       d)   V	P                  '       d   \        V	P                  R4      p\        VR4      p
V
'       d)   V
P                  '       d   \        V
P                  R4      p\        VR4      pV'       d   VP                  '       d   \        \        VP                  R4      4      pV'       d
   V^ ,          p\        V4       F  w  rVP                  4       P                  R4      '       g   K,  \        RV9   d   VP                  R^4      ^,          MR4      pV'       d   TpM&V^,           \!        V4      8  d   W^,           ,          p M	  . p\        VR4      pV'       Ed   VP#                  R4      pV'       Ed   VP%                  R4       EFx  pVP'                  R4      pV'       g   K  \        V^ ,          P                  RRR7      4      p\!        V4      ^8  d
   V^,          MRpV'       d   VP)                  RRR7      MRp\        V'       d   VP                  RRR7      MR4      pV'       d   \+        VR,          VR,          4      MRp\        P,                  ! RV\        P                  R7      p\        P,                  ! RV\        P                  R7      pTP/                  RV'       d   VP1                  ^4      MRRV'       d   VP1                  ^4      MRR TR!TR"R#VP                  4       9   d   R$MRR%R/4       EK{  	  VP%                  R&4       Uu. uF  p\3        V4      NK  	  pp\5        R' V 4       4      pRT;'       g
    VR,          RVR,          RTR\7        V4      ;'       g    VP                  RR4      R(VP                  R(R4      R)\9        VP                  R)R*4      ;'       g    R*4      R+\        VP                  R+4      4      R,VR-VR.VR/VR0VR1V/# u upi )2r   z.c-order-details__order-numberz^ORDER NUMBER:\s*rB   rA   Tr   rz   r   z.c-order-details__order-datez^ORDER DATE:\s*r   r   zShipping Addressr   zBilling AddresszPayment Methodzpurchase order:r   zShipping Statusr   r   r   Nr   r   r   r   zShipment ID:\s*([A-Za-z0-9-]+)z!Shipped on:\s*(\d{4}-\d{2}-\d{2})
shipmentId	shippedOntrackingNumbertrackingUrlcarrierzups.comUPStrackingz&.c-card-product-info.product-info.cardc              3  V   "   T F  p\        VP                  R 4      4      x  K!  	  R# 5i)r   Nr`   r   ).0r   s   & r3   	<genexpr>%parse_order_detail.<locals>.<genexpr>r  s!     Led^DHHZ$899e   ')r   r   rU   r   paymentMethodshippingAddressbillingAddress	shipmentsr   	unitCount)r   rG   r   rC   rD   r   r   r   r   parentr   rP   r   r   
startswithr   r   	find_nextr   r   r   r
   r   rL   r   r  sumrp   rS   )r   r  r   r   r   shipping_addressbilling_addresspayment_methodpurchase_ordershipping_headingbilling_headingpayment_headingpayment_linesr   rO   inline_valuer   shipping_status_headingshipping_tabler   r   	left_text
right_celltracking_linktracking_numbertracking_urlshipment_id_matchshipped_on_matchr   r   
item_counts   &&                             r3   parse_order_detailr9  .  s   }-D??;<< 	#R9Y)Z)c)cdgos)c)t|~  }J  }J  	K__]B/L
 ??9:: 	!2t7U'V'_'_`cko'_'pxz  yF  yF  	G__["-J ON
 ;<N#D*<=,33312B2I2IKfg"4):;O?11101G1GIde"4)9:O?111"#9/:P:PRm#no*1-N$]3KEzz|&&'899)3$;$**S!*<Q*?TVW%1NQY]!33%219%=N 4 ')I*41BC0::7C>%,,Z8T*&uQx'8'8D'8'IJ	),UaU1XT
CM
$ ?SW",Xe]-C-CCt-C-Tkm"n[hw{;'?vAVWnp$&II.OQZbdbobo$p!#%99-QS\dfdqdq#r   $DU&7&=&=a&@[]#BR%5%;%;A%>XZ(/%|!I9K9K9M,M5SU"D	 9, 04{{;c/de/dt_T"/dEeLeLLJ 	|AA{='A[-N^J/SS;??;PR3S"=eKOOL#>EE#F*[__5E%FG+/YZ  fs   T"c                    V ^8  d   QhRRRR/# )r8   r4  r<   r;   Noner=   )r>   s   "r3   r?   r?     s      s t r5   c                   a VP                  4       o\        V \        4      P                  V3R  l4       \        V \        4      P                  R 4       R# )c                p   < S\        V P                  \        P                  R 4      P                  4      8H  # )z#stApp_trackingNumber)rG   find_elementr   CSS_SELECTORrF   )browseruppers   &r3   r   #wait_for_ups_page.<locals>.<lambda>  s'    G,@,@Ri,j,o,o!ppr5   c                x    R V P                  \        P                  R4      P                  P	                  4       9   # )zyour shipmentbody)r>  r   TAG_NAMErF   r   )r@  s   &r3   r   rB    s)    7+?+?V+T+Y+Y+_+_+aar5   N)rA  r   UPS_WAIT_SECONDSuntil)driverr4  rA  s   &&@r3   wait_for_ups_pagerI    sE    !!#E&*+11p &*+11ar5   c                    V ^8  d   QhRRRR/# )r8   r4  r<   r;   r   r=   )r>   s   "r3   r?   r?     s     J JS J^ Jr5   c                j	   \         P                  VR 7      pVP                  W^<R^R7       \        W4       \	        V P
                  R4      p\        VP                  R4      '       d#   VP                  R4      P                  RRR7      MR4      p\        VP                  R	4      '       d#   VP                  R	4      P                  RRR7      MR4      p\        VP                  R
4      '       d#   VP                  R
4      P                  RRR7      MR4      p\        RP                  R \        VP                  R4      '       d#   VP                  R4      P                  RRR7      MR4      \        VP                  R4      '       d#   VP                  R4      P                  RRR7      MR4      3 4       4      4      pRp	VP                  R4       F+  p
\        V
P                  RRR7      4      pV'       g   K)  Tp	 M	  . pVP                  R4       EFY  p\        VP                  R4      '       d#   VP                  R4      P                  RRR7      MR4      pVP                  R4      pVf   K_  \	        \        V4      R4      pVP                  R4       F  p
V
P                  4        K  	  \        VP                  RRR7      4      p\        VP                  R4      '       d#   VP                  R4      P                  RRR7      MR4      p\        VP                  R4      '       d#   VP                  R4      P                  RRR7      MR4      pVP                  RVRVRVRV/4       EK\  	  RpV Fi  p\         P"                  ! RVP%                  RR4      4      pV'       g   K4   \&        P(                  ! VP+                  ^4      R4      P-                  4       p M	  \1        VV4      pVP3                  4       P5                  R4      pRVP7                  4       RTRTR TR!TR"TR#TR$\        R%V9   d   VP9                  R%^4      ^,          MR4      R&T	R'TR(\        VP                  R)4      '       d#   VP                  R)4      P                  RRR7      MR4      R*V/#   \.         d     EK:  i ; i)+)r  g      ?)timeoutsettle	max_triesr   z#stApp_txtPackageStatusrA   Tr   rB   z#st_App_EstDelLabelz#st_App_PkgStsTimeDayMonthNumc              3  :   "   T F  pV'       g   K  Vx  K  	  R # 5iNr=   )r  r   s   & r3   r  *parse_ups_tracking_page.<locals>.<genexpr>  s"      
  Ds   

z#stApp_txtAddressz#stApp_txtCountryzmessage-banners pz#stApp_shpmtProgress trz[id^='stApp_rtxtEvent_']r   Npz[id^='stApp_milestoneLocation']z[id^='stApp_milestoneDateTime']	eventTyper  locationdateTimez(\d{2}/\d{2}/\d{4})rk   	deliveredr  r  statusisDeliveredsummaryLabelsummaryTextetaDate	etaWindowrW   
nextUpdateshipTo	pieceInfoz#stApp_additionalPackagesevents)TRACKING_URL_TEMPLATEr>   safe_getrI  r   page_sourcerG   r   r   r   r   r   r<   r   r   rL   rC   r   r   r   rl   r   r   rZ   r   r   r#  rA  r   )rH  helperr4  r5  r   rW  	eta_labeleta_textship_tonext_update	paragraphrF   r`  r   
event_typer   td_cloner  rT  	date_timerx   eventr   eta_dateis_delivereds   &&&                      r3   parse_ups_tracking_pagerp    s   (///IL
OOF"SAONf.++];D`d`o`o  qJ  aK  aK(ABKKCW[K\  QS  TF_c_n_n  pE  `F  `F4??+@AJJ3VZJ[  LN  OIhlhwhw  yX  iY  iY$//*IJSSTW_cSd  _a  bH 
 ]a]l]l  nA  ^B  ^B4??+>?HHTXHY  HJ  K]a]l]l  nA  ^B  ^B4??+>?HHTXHY  HJ  K
 	
	G K[[!45	),,S,=>4K	 6 $&F{{45hkhvhv  xR  iS  iS/I J S STW_c S d  Y[  \
XXd^: R-8!**3/I 0(++Ct+<=lnlyly  {\  m]  m]bmm,MNWWX[cgWh  ce  fmomzmz  |]  n^  n^r}}-NOXXY\dhXi  df  g	ZHI		
 6( N		0%))J2KL5!)!2!25;;q>:!N!S!S!U  %X~>H<<>,,[9L 	///1|&|	x8ZSH_sA 6q 9RTUk'Zjnjyjy  {V  kW  kW0K L U UVYae U f  ]_  `&   s   ,4R""R21R2c                    V ^8  d   QhRRRR/# )r8   orderr   r;   ztuple[str, bool, str, str]r=   )r>   s   "r3   r?   r?     s      a  a.  a-G  ar5   c                   V P                  R . 4      pV Uu. uF'  p\        VP                  R4      4      '       g   K%  VNK)  	  ppV Uu. uF;  p\        VP                  R4      \        4      '       g   K*  VP                  R4      NK=  	  ppV Uu. uF  qUP                  R4      '       g   K  VNK  	  ppV Uu. uF  qUP                  R4      '       d   K  VNK  	  pp\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      p\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      p	V Uu. uF'  p\        VP                  R4      4      '       g   K%  VNK)  	  p
pV
P                  R	 R
7       V
'       d"   \        V
^ ,          P                  R4      4      MRpRpV
'       dY   \        V
^ ,          P                  R4      4      p\        V
^ ,          P                  R4      4      pV RV 2P                  R4      pV'       g   RRVR3# V	'       d   V'       g   RRY;'       g    R3# V'       d   V'       d   RRY;'       g    R3# V'       d   RRY;'       g    R3# V'       d   V'       d   RRY;'       g    R3# V'       d   RRY;'       g    R3# V'       d   \        V4      \        V4      8X  d   R# RRY;'       g    R3# u upi u upi u upi u upi u upi )r   r  r  rX  c              3  `   "   T F$  p\        VP                  R 4      4      '       * x  K&  	  R# 5ir  NrG   r   r  shipments   & r3   r  !classify_order.<locals>.<genexpr>  s'     dZchz(,,7G*HIIIZcs   ,.TFc              3     "   T F=  p\        VP                  R 4      4      ;'       d    VP                  R4      '       * x  K?  	  R# 5i)r  r  Nrv  rw  s   & r3   r  ry    sH        G  }Fpx
8<<8H+I J k kS[S_S_`jSkOk k  }Fs
   %AAr[  c                6    \        V P                  R 4      4      # )r[  rv  r~   s   &r3   r    classify_order.<locals>.<lambda>  s    DHHY4G)Hr5   r   rB   rY  rZ  : zPending shipmentzAwaiting Red Wing shipmentzTracking update unavailablezCarrier update unavailablezPartially shippedzPending tracker assignmentzTracking pendingzPartially deliveredzSome packages still in transitz
In transitzCarrier in transitzPending carrier update)	DeliveredFrB   rB   )r   rG   
isinstancedictanyr   rE   r   )rr  r   rx  tracking_shipmentstracking_datar   rV  open_trackingmissing_trackingtracking_missing_dataeta_candidatesorder_eta_dateorder_eta_labelr   rF   s   &              r3   classify_orderr    s   		+r*I3<k9x
8<<XhKi@j((9k>P>P(T^_g_k_klv_wy}T~-X\\*->PM"/K-$88M3J-IK&3Smd88M;RTTmMSsdZcdsssdZcddC   G  }F   GCCC   G  }F   G  G'4X}t
488ICV8Wdd}NXHIESZq 1 5 5i @AY[NO>!,00@A.+//>?"G2dV,2248!49UUU],dNDsDsWsssM"D.:i:iMiii!49h9hLhhh$dN<o<oOoooT>3Z3ZFZZZY3/A+BB))t^5`5`H```= lKS Ys:   "K%K%
'K*6K*K/.K/:K4K4"K92K9c                    V ^8  d   QhRRRR/# )r8   ordersr   r;   r=   )r>   s   "r3   r?   r?     s     6 61 66J 6r5   c                Z   / pV  EF3  p\        VP                  R 4      4      p\        VP                  R4      4      p\        VP                  R4      4      pVP                  R. 4       EF  p\        VP                  R4      4      ;'       g    \        VP                  R4      4      pV'       g   KJ  VP                  VR\        VP                  R4      4      R\        VP                  R4      4      R\        VP                  R4      4      RRR	\        4       R
RRRR\	        4       /4      pVR;;,          \        VP                  R4      4      ,          uu&   VR	,          P                  V4       V'       d!   VR
,          '       d   WHR
,          8  d   WHR
&   V'       d!   VR,          '       d   WXR,          8  d   WXR&   VP                  R. 4       F[  p	\        V	P                  R4      4      p
V
'       g   K'  VR,          V
;;,          \        V	P                  R4      4      ,          uu&   K]  	  EK  	  EK6  	  . pVP                  4        F  w  rxTP                  RVR,          ;'       g    TRVR,          RVR,          RVR,          R\        VR	,          4      R	\        VR	,          4      R
VR
,          RVR,          R\        VR,          P                  4       R R7       U
Uu. uF  w  rV
 R\        V4       2NK  	  upp
/	4       K  	  VP                  R R7       V# u upp
i )r   r   r[  r   r  r  r  r   rU   r  earliestOrderDaterB   r   r   
orderCountr	  c                    V ^ ,          # r}   r=   r~   s   &r3   r   "aggregate_styles.<locals>.<lambda>0  s    \`ab\cr5   r   r   c                n    \        V P                  R R4      4      ) \        V P                  R4      4      3# )r   rU   r  )rS   r   rG   r~   s   &r3   r   r  4  s+    dhhz3&? @@*TXXV]M^B_`r5   )rG   r   
setdefaultsetr   r`   addr   rL   r   r   rg   r   )r  by_stylerr  r   r   rn  r   r   entryr   r   outrf   s   &            r3   aggregate_stylesr    s   *,H!%))M":;		+ 67
eii	23IIgr*DTXXg./OO:dhhv>N3OC''Z(9:Jtxx'78Z(9:ce'r!79	E *0D!EE(O-5)<#=#=TgNhAh-7)*y!1!1Xi@P5P#+i "hh}b9
":>>'#:;m$U+~jnnZ>X/YY+	 :/ +	 B !#Cnn&


w..3fwE*-c%/2&x1#U+>%?5+#&,U=-A-G-G-IOc&d&&d
 gR 5c :;<&d&	
 '" HH`HaJ&s   *L'.c                    V ^8  d   QhRRRR/# )r8   rr  r   r;   ztuple[Any, ...]r=   )r>   s   "r3   r?   r?   8  s      . _ r5   c                    \        V P                  R 4      4      p\        V P                  R4      4      pV'       d   ^ M^T;'       g    T;'       g    RT;'       g    R\        V P                  R4      4      3# )r[  r   z
9999-12-31r   rv  )rr  rn  r   s   &  r3   order_sort_keyr  8  sh    %))I./HEIIk23J1..J..,""l599]+,	 r5   c                    V ^8  d   QhRRRR/# )r8   payloadr   r;   r;  r=   )r>   s   "r3   r?   r?   C  s     # #. #T #r5   c                    \         P                  P                  R R R7       \         P                  R4      pVP	                  \
        P                  ! V ^R7      RR7       VP                  \         4       R# )T)parentsexist_okz	.json.tmp)indentzutf-8)encodingN)OUTPUT_PATHr"  mkdirwith_suffix
write_textjsondumpsrY   )r  	temp_paths   & r3   save_payloadr  C  sW    TD9''4IGA6Ik"r5   c                   V ^8  d   QhRR/# )r8   r;   re   r=   )r>   s   "r3   r?   r?   J  s     @ @c @r5   c                 r   \        4       p \        P                  ! 4       pVP                  4       \	        \
        R 7      ,
          p. p\        R\         R\         R24       V P                  4       pV P                  V\        RR7      p V P                  V\        4       V P                  V\        4       \        VP                  4      pV'       g   \!        R4      hV Uu. uF:  pVP#                  R4      '       d   VR,          VP%                  4       8  g   K8  VNK<  	  pp\&        '       d
   VR\&         p\        R	\)        V4       R
\)        V4       R\
         R24       . p	\+        V^R7       Fg  w  r\        RV
 R\)        V4       RVR,           24        V P                  WWR,          4       V	P-                  \/        VP                  V4      4       Ki  	  \3        V	 UUu0 uFf  pVP#                  R. 4       FM  p\5        VP#                  R4      4      '       g   K%  \5        VP#                  R4      4      P7                  4       kKO  	  Kh  	  upp4      p/ p\+        V^R7       F3  w  p
p\        RV
 R\)        V4       RV 24        \9        WPV4      VV&   K5  	  . p^ pV	 F  pVP#                  R. 4       FI  p\5        VP#                  R4      4      P7                  4       pV'       g   K5  VP#                  V4      VR&   KK  	  \;        V4      w  ppppVVR&   VVR&   VVR&   VVR&   \=        VP#                  R4      4      VR&   V'       d   VP-                  V4       K  V^,          pK  	  VP?                  \@        R 7       \C        V4      p\E        R! V 4       4      p\E        R" V 4       4      p^ pV FA  pVP#                  R. 4      pV'       g   V^,          pK(  V\E        R# V 4       4      ,          pKC  	  R$R%\        P                  ! 4       P%                  R&R'7      R(\        R)\        R*\
        R+\)        V4      R,\)        V4      R-VR.\G        \H        4      R/VR0R1\)        V4      R2\)        V4      R3VR4VR5V//
R6R2V/R1V/p\K        V4       \        R7\)        V4       R8\)        V4       R9\M        V4       R:\N         24         VPQ                  4        ^ # u upi   \0         dC   pTP-                  RTR,           RT 24       \        RTR,           RT 24        Rp?EK  Rp?ii ; iu uppi   \0         d:   pTP-                  RT RT 24       RTT&   \        RT RT 24        Rp?EK  Rp?ii ; i  \0         d     ^ # i ; i   TPQ                  4        i   \0         d     i i ; i; i);)r   z,[incoming-stock] Loading order history from z ()T)headlessblock_imagesz6No rows were found on the Red Wing order history page.r   Nz[incoming-stock] Found z history rows; fetching z  candidate orders from the last z days.)startz[incoming-stock] Order /r}  r   r   zOrder z[incoming-stock] Failed r   r  z[incoming-stock] Tracking z	Tracking z![incoming-stock] Failed tracking r  rW  incomingr[  etaLabelorderDateDisplayr   c              3  V   "   T F  p\        VP                  R 4      4      x  K!  	  R# 5i)r!  Nr  )r  rr  s   & r3   r  main.<locals>.<genexpr>  s#     aQ`^EIIk,BCCQ`r  c              3     "   T FB  pVP                  R . 4       F)  p\        VP                  R4      4      '       g   K%  ^x  K+  	  KD  	  R# 5i)r   r  N)r   rG   )r  rr  rx  s   &  r3   r  r    sC       
(!IIk26(,,'789 A6 (s
   7AAc              3  j   "   T F)  p\        VP                  R 4      4      '       d   K%  ^x  K+  	  R# 5iru  rv  rw  s   & r3   r  r    s&     $sy8
S[S_S_`pSqHrQQys   "3
3metageneratedAtsecondsrt   
historyUrlhistoryLabellookbackDayshistoryRowscandidateOrdersdeliveredRecentOrders
sourceRooterrorscountsr  stylesunitstrackedShipmentspendingShipmentssummaryz[incoming-stock] Saved z incoming orders, z	 styles, z
 units to ))r4   r   r   r   r   LOOKBACK_DAYSprintORDER_HISTORY_LABELr   load_checkpointcreate_driverRUN_HEADLESSensure_logged_inrb  r   rc  RuntimeErrorr   rm   
MAX_ORDERSr   r   rL   r9  rZ   r   rG   rA  rp  r  r   r   r  r  r%  r<   PULLED_INFO_ROOTr  rg   r  quit)rd  
started_atcutoff_dater  ckrH  history_rowsr   candidate_rowsdetailed_ordersr   excrr  rx  tracking_numberstracking_cacher4  incoming_ordersdelivered_countrW  r  rn  re  style_summaryincoming_unitstracked_shipmentspending_shipmentsr   r  s                                r3   mainr  J  s   FJ//#i]&CCKF	89L8MRPaObbc
de				!B!!"|$!OFv(9: 12*6+=+=>WXX $
#77;''3{+;{?T?T?V+V C# 	 

 :+KZ8N%c,&7%8 9N+,,L]O[ac	

 13#N!<JE+E7!C4G3H3}K]J^_`NK(89&&'9&:L:Lc'RS	 = " -,E %		+r :Hhll+;<= C
8<<(89:@@B : C,
 <>&/0@&J"E?.ugQs;K7L6MRP_O`abT2I&Zi2j/ 'K 13$E!IIk26",X\\:J-K"L"R"R"T"?+9+=+=o+NHZ( 7 5C54I1FHh	$E(O (E*'E) )E*(?		+@V(WE$%&&u-1$ %  	0(9aQ`aa  
( 
 
 $E		+r2I!Q&!$sy$s!ss % x||~777K/ 3s<0!3~#6'c"23&c/2c-0^&(9&(9$ - o-
0 	W%c/&:%;;M=!"),A.,Q+R S 	

 	KKM[
&  Ns='9&:"SEBC0]1C0DBseLMMN
  T	/):"SEBC26/9/9J"SERSSTT  			KKM 		s   
AV "S>SS"A:V =S#V (7T3
$0T3
:V T9AV 2GV V  V #T0.6T+$V +T00	V 9U=-U81V 8U==V  VVV6V%$V6%V30V62V33V6__main__>   r   yonyestruerP  )K
__future__r   importlib.utilr(   r  osrC   r&   collectionsr   r   r   r   pathlibr   typingr	   urllib.parser
   bs4r   selenium.webdriver.common.byr   selenium.webdriver.support.uir   __file__resolve	THIS_FILEr  r  ROOTr+   	with_namer  r   r  ra  environr   rE   r   r  maxre   r  r  rF  r   r4   rG   rP   r]   r`   rg   rp   rv   r   r   r   r   r   r   r   r   r  r9  rI  rp  r  r  r  r  r  __name__
SystemExitr=   r5   r3   <module>r     s/   "   	 	 
  . .      + 7N""$	$$Q' !O3mCFff!!"78{ ' j zz~~mS1779??AEddAs2::>>*EtLTTPTUVC

'?ELLMN
q#bjjnn-BDIQQTRS  qQQ	1
A
Aar
 
/
		(6
C<6"!H,TnJZ aF6r#@F z
TV
 r5   