+
    ~j  c                   L   R t ^ RIt^ RIHu Ht ^ RIt^ RIt^ RI	t	^ RI
t
]P                  R 4       t]P                  P                  R. RO4      R 4       tR tR tR tR tR	 tR
 tR t]P                  P                  R. RO4      R 4       tR tR tR tR tR tR tR tR# )zFast, deterministic unit tests for Jessica's tool logic.

These never touch the real vault (VAULT is monkeypatched to a tmp dir) and never
call an LLM, so they're cheap and safe to run anywhere.
Nc                 4    VP                  \        R V 4       V # )VAULT)setattrvault)tmp_pathmonkeypatchs   &&B/Users/mitch_tango/dev/rabbit-r1-livekit/agent/tests/test_tools.py	tmp_vaultr      s    w1O    zitem,sectionc                 *   \         P                  q"! V 4      q3V8H  qD'       Egk   \        P                  ! RV3RW134      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      RR\        P
                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MRR\        P                  ! V4      RR\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p;r4R# )==py0r   py2py3itempy5py7sectionzassert %(py9)spy9Nr   )zX%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.categorize_grocery
}(%(py3)s)
} == %(py7)s)
r   categorize_grocery
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)r   r   @py_assert1@py_assert4@py_assert6@py_format8@py_format10s   &&     r   test_categorize_groceryr#      s     ##4#D)4W44444)444444544445444#444444D4444D444)444444W4444W44444444r	   c                    V R ,          P                  4        V R ,          R,          P                  R4       \        P                  pRq!! V4      pRqCV8H  qU'       g   \        P
                  ! RV3RW434      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      R
\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;rTV R ,          R,          P                  4       pRqV9   q'       g   \        P
                  ! RV
3RW34      R\        P                  ! V	4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR;rVP                  pRq!! V4      q8P                  pRq! V4      qV8  qU'       Egm   \        P
                  ! RV3R W?34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;p;p;rR# )!TasksGrocery List.mdz## Produce
- [ ] apples
bananasProducer   r   r   py4py6r   assert %(py11)spy11Nz- [ ] bananaspy1r   contentassert %(py5)sr   z
## Producepy8py10py12py14assert %(py16)spy16r   )zQ%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.add_grocery
}(%(py4)s)
} == %(py9)sinz%(py1)s in %(py3)s)>)z%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.index
}(%(py4)s)
} > %(py14)s
{%(py14)s = %(py10)s
{%(py10)s = %(py8)s.index
}(%(py12)s)
})mkdir
write_textr   add_groceryr   r   r   r   r   r   r   r   	read_textindex)r   r   @py_assert3@py_assert5@py_assert8@py_assert7r"   @py_format12r.   @py_assert0@py_assert2@py_format4@py_format6@py_assert9@py_assert11@py_assert13@py_format15@py_format17s   &                 r   $test_add_grocery_files_under_sectionrM   #   s(   !,,889UV4Y4Y'494944444'444444544445444444Y444'4449444444447"%66AACG%g%%%%%?%%%?%%%%%%g%%%%g%%%%%%%%==AA=#AmmALAmL&AA&AAAAAA#AAAAAA7AAAA7AAA=AAAAAA#AAAAAAgAAAAgAAAmAAALAAA&AAAAAAAAAAr	   c                 n   \         P                  ! R 4       V R,          R,          P                  4       pRq"V9   q3'       g   \        P                  ! RV3RW!34      R\        P
                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR	;r#R
q"V9   q3'       g   \        P                  ! RV3RW!34      R\        P
                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR	;r#R	# )zfrozen wafflesr%   r&   z	## Frozenr-   r   r.   r/   r   Nz- [ ] frozen wafflesr6   r8   )r   r<   r=   r   r   r   r   r   r   r   r   )r   r.   rD   rE   rF   rG   s   &     r   (test_add_grocery_creates_missing_sectionrO   ,   s    	&'7"%66AACG!'!!!!!;!!!;!!!!!!'!!!!'!!!!!!!!!,W,,,,,!,,,!,,,,,,W,,,,W,,,,,,,,r	   c                    \         P                  ! R R4       V R,          P                  4       pRq"V9   q3'       g   \        P                  ! R
V3RW!34      R\        P
                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR	;r#R	# )NOTEzcall the architectzJessica Inbox.mdzNOTE: call the architectr-   r   inboxr/   r   Nr6   r8   )r   capturer=   r   r   r   r   r   r   r   r   )r   rR   rD   rE   rF   rG   s   &     r   #test_capture_creates_inbox_with_tagrT   3   s    	MM&./++668E%......%...%..................r	   c                 r   \         P                  ! R RR4       V R,          R,          P                  4       pRq"V9   q3'       g   \        P                  ! RV3RW!34      R\        P
                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MR/,          pRR	V/,          p\        \        P                  ! V4      4      hR
;r#Rq"V9   q3'       g   \        P                  ! RV3RW!34      R\        P
                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P
                  ! V4      MR/,          pRR	V/,          p\        \        P                  ! V4      4      hR
;r#R
# )zTasks/Household.mdz## When I Get To Itz- [ ] fix gater%   zHousehold.mdr-   r   txtr/   r   Nr6   r8   )r   append_under_headingr=   r   r   r   r   r   r   r   r   )r   rV   rD   rE   rF   rG   s   &     r   test_append_under_new_headingrX   9   s    	35JL\]w/
:
:
<C 'C''''' ''' ''''''C''''C''''''''"s""""""""""""""s""""s""""""""r	   c                    V R ,          P                  4        V R ,          R,          P                  R4       \        P                  ! 4       pRq"V9   q3'       g   \        P
                  ! RV3RW!34      R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR	;r#R
q"V9   q3'       g   \        P
                  ! RV3RW!34      R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR	;r#Rq"V9  q3'       g   \        P
                  ! RV3RW!34      R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR	;r#R	# )r%   zTask Board.mdza## This Week
- [ ] later thing
## Today / Focus
- [ ] call Bob
- [x] done item
## Done
- [x] old
zcall Bobr-   r   itemsr/   r   Nz	done itemzlater thingr6   r8   not inz%(py1)s not in %(py3)s)r:   r;   r   read_today_focusr   r   r   r   r   r   r   r   )r   rZ   rD   rE   rF   rG   s   &     r   'test_read_today_focus_only_today_columnr_   @   sZ   !?*66	
 ""$E::%;;%%%%%%%%=%%%=%%%%%%%%%%%%%%%%%%r	   c                    \         P                  ! R 4       R \         P                  ! 4        4       p\        V4      q"'       g   RRR\        P
                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      /,          p\        \        P                  ! V4      4      hR;r\         P                  pR q!! V4      pRqTVJ qf'       g   \        P                  ! RV3RWE34      RR	\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MR	R\        P                  ! V4      R\        P                  ! V4      R
\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;reR \         P                  ! 4        4       p\        V4      q"'       * qD'       g   RRR\        P
                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      /,          p	\        \        P                  ! V	4      4      hR;p;r$R# )	soy saucec              3   ,   "   T F
  pR V9   x  K  	  R# 5ira   N .0is   & r   	<genexpr>-test_pantry_add_and_remove.<locals>.<genexpr>O   s     =)<A{a)<   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}r   anyr   r)   NTr   r*   r   r+   r,   c              3   ,   "   T F
  pR V9   x  K  	  R# 5irc   rd   re   s   & r   rh   ri   Q   s     A-@;!#-@rj   z0assert not %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}is)zS%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.remove_pantry
}(%(py4)s)
} is %(py9)s)r   
add_pantryread_pantryrk   r   r   r   r   r   r   r   remove_pantryr   )
r   r   r?   @py_format5r@   rA   rB   r"   rC   rG   s
   &         r   test_pantry_add_and_removers   M   s   	[!=):):)<==3==========3====3==============3{3{+3t3t33333+333333533335333333{333+333t33333333AU->->-@AAsAAAAAAAAAAAAsAAAAsAAAAAAAAAAAAAAAr	   c                     \         P                  ! \        4      ;_uu_ 4        \        P                  ! R 4       RRR4       R#   + '       g   i     R# ; i)z../../etc/passwdN)pytestraises
ValueErrorr   
_safe_path)r   s   &r   test_safe_path_rejects_escapery   T   s/    	z	"	"+, 
#	"	"	"s   AA	zvalue,from_u,to_u,expectedc                    \         P                  ! WV4      p. pR qdVJqwq'       d   W49   qpV'       Eg   \        P                  ! RV3RWF34      RR\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      /,          p
RRV
/,          qP                  V4       V'       d   \        P                  ! RX	3RW434      RR\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRRR\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pR	R
V/,          qP                  V4       \        P                  ! V^ 4      / ,          pRRV/,          p\        \        P                  ! V4      4      hR ;p;p;p;riR # )Nr   outr   %(py7)sr   r   expectedr,   z%(py13)spy13r4   r5   is notz%(py2)s is not %(py5)sr6   )z%(py9)s in %(py11)s)agentconvert_measurer   r   r   r   r   r   append_format_boolopr   r   )valuefrom_uto_ur}   r{   r   r   r?   rD   @py_assert10rG   r!   rC   @py_format14rK   rL   s   &&&&            r   test_convert_measurer   Y   s     

t
4C.d.d?..x....3......3....3...d.........x......x....x.......3....3................r	   c                     \         P                  p ^pRpRq0! WV4      pRqTVJ qf'       Eg'   \        P                  ! RV3RWE34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      R
\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p ;p;p;p;p;reR# )   mileskgNr   r   r   r)   r*   r0   r1   r~   zassert %(py15)spy15rm   )zj%(py10)s
{%(py10)s = %(py2)s
{%(py2)s = %(py0)s.convert_measure
}(%(py4)s, %(py6)s, %(py8)s)
} is %(py13)s)
r   r   r   r   r   r   r   r   r   r   )	r   r?   r@   rB   rH   @py_assert12rI   r   @py_format16s	            r   !test_convert_measure_incompatibler   i   s      ::G:T: T2:d:d:::::2::::::5::::5::: ::::::G:::T:::2:::d:::::::::r	   c            
         \         P                  ! R RRR/R RRR RRR/./R.4      p . ROqV8H  q"'       g   \        P                  ! RV3RW34      RR	\        P
                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MR	R
\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;r!R# )z@type	HowToSteptextDo thing oneHowToSectionitemListElementSub stepPlain string stepr   stepsr   r/   r   N)r   r   r   r   z%(py0)s == %(py3)s)
recipes_walk_instructionsr   r   r   r   r   r   r   r   )r   rE   r   rF   rG   s        r   'test_recipes_walk_instructions_flattensr   m   s    &&k6>:!Wk6:$N#O  	
	E FEEEEEEE5EEEEEE5EEEE5EEEEEEEEEEEEr	   c                 2   V R ,          P                  R4       \        P                  ! R4      p. pRq1VJqDqT'       d   Rqa^ ,          qvV9   qpV'       Eg\   \        P                  ! RV3RW34      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      /,          p	RR	V	/,          qP                  V
4       V'       dk   \        P                  ! RX3RXX34      R
\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          qP                  V4       \        P                  ! V^ 4      / ,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;p;p;rV^,          qUP                  pRq?! V4      pV'       g   RR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      /,          p
\        \        P                  ! V
4      4      hR;p;p;pp\        P                  pRqB! V4      pRpVVJ pV'       g   \        P                  ! R V3R!VV34      RR\
        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;ppR# )"z
Recipes.mdzo- [Easy Skillet Lemon Chicken](https://example.com/lemon)
- [Grilled Caesar Salad](https://example.com/caesar)
lemon chickenNzLemon Chickenr   hitr   r|   r   r1   r~   %(py15)sr   assert %(py18)spy18httpzLassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.startswith
}(%(py5)s)
}r-   r   zbeef wellingtonr   r   r)   r*   r   r+   r,   r   r   r6   )z%(py10)s in %(py13)srm   )zQ%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.find_recipe
}(%(py4)s)
} is %(py9)s)r;   r   find_reciper   r   r   r   r   r   r   r   r   r   
startswith)r   r   r   r   r?   rD   rH   r   rI   rG   r!   r   r   rL   @py_format19rE   r    r@   rA   rB   r"   rC   s   &                     r   test_find_recipe_legacy_linksr   {   s   ))	A 

o
.C8d8d?888a&8&888883888888388883888d888888888&888888&8888888888888888q6$$V$V$$$$$$6$$$$$$V$$$$$$$$$$$909019T91T999991T99999979999799999909991999T999999999r	   c                    V R ,          R,          pVP                  RR7       VR,          P                  R4       \        P                  ! R4      p. pRqBVJqUqe'       d   V^ ,          pRqV8H  qpV'       Eg\   \        P
                  ! R"V3R#W$34      R	R
\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR
R\        P                  ! V4      /,          p
RRV
/,          qP                  V4       V'       dk   \        P
                  ! R$X	3R%XX34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          qP                  V4       \        P                  ! V^ 4      / ,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;p;p;rV^,          qfP                  pRpV! V4      pV'       * pV'       g   RR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          p\        \        P                  ! V4      4      hR;p;p;p;pp\        P                  ! V^,          4      pVR,          pRqVV8H  pV'       gy   \        P
                  ! R$V3R&We34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;ppVR,          pRR.qVV8H  pV'       gy   \        P
                  ! R$V3R&We34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;ppVR,          pR R!.qVV8H  pV'       gy   \        P
                  ! R$V3R&We34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;ppR# )'RecipeszGood ThingsTparentszBasil Pesto.mdz---
type: recipe
title: Basil Pesto
tags: [recipe/sauce, pesto]
url:
---

A streamlined pesto with generous Parmesan.

## Ingredients
- 1 cup Parmesan
- 2 cups basil leaves

## Steps
1. Pulse the Parmesan.
2. Add basil and oil.

## Notes
- great on pasta
pestoNzBasil Pestor   r   r   r|   r   r1   r~   r   r   r   r   r   zPassert not %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.startswith
}(%(py5)s)
}r-   r   namer)   assert %(py6)sr*   ingredientsz1 cup Parmesanz2 cups basil leavesr   zPulse the Parmesan.zAdd basil and oil.r   r   r   )z%(py10)s == %(py13)sz%(py1)s == %(py4)s)r:   r;   r   r   r   r   r   r   r   r   r   r   r   r   r   load_recipe)r   dr   r   r   r?   rD   rH   r   rI   rG   r!   r   r   rL   r   rE   r    rA   @py_format9datarr   @py_format7s   &                      r   "test_structured_recipe_note_parsedr      s   I-AGGDG	%%	" 

g
&C6d6d?66s1v66666663666666366663666d666666666v666v66666666666666666661v(  (( (((((((((v((( ((((((((((((((s1v&D<(=(=(((((<(((<(((=((((((((K#35J"KK"KKKKKKKKKKKK"KKKKKKKKK=I24HIIIIIIII=III=IIIIIIIIIIIIr	   c                  N	   \         P                  p R q! V4      pRq2V8H  qD'       g   \        P                  ! RV3RW#34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p ;p;p;rC\         P                  p Rq! V4      pRq2V8H  qD'       g   \        P                  ! RV3RW#34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p ;p;p;rC\         P                  p Rq! V4      pRq2V8H  qD'       g   \        P                  ! RV3RW#34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p ;p;p;rC\         P                  p Rq! V4      pRq2V8H  qD'       g   \        P                  ! RV3RW#34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p ;p;p;rCR# )PT45Mz
45 minutesr   r   r   r)   r*   r    r+   r,   NPT1H30Mz1 hour 30 minutesPT2Hz2 hoursr   )z\%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s._iso_duration_to_human
}(%(py4)s)
} == %(py9)s)
r   _iso_duration_to_humanr   r   r   r   r   r   r   r   )r   r?   r@   rA   rB   r"   rC   s          r   test_iso_duration_to_humanr      s|   ))B'B)'2BlBlBBBBB2BBBBBB7BBBB7BBB)BBB'BBB2BBBlBBBBBBBB))K)K))4K8KK8KKKKKK4KKKKKK7KKKK7KKK)KKK)KKK4KKK8KKKKKKKKK))>&>)&1>Y>Y>>>>>1>>>>>>7>>>>7>>>)>>>&>>>1>>>Y>>>>>>>>))5$5)$/525255555/555555755557555)555$555/5552555555555r	   c                     VP                  \        R R 4       \        P                  ! R4      pRq2V8H  qD'       g   \        P                  ! R V3R!W#34      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR	;rCW,          P                  4       pR
qV9   q3'       g   \        P                  ! R"V3R#W34      R\        P                  ! V4      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR	;rRqV9   q3'       g   \        P                  ! R"V3R#W34      R\        P                  ! V4      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR	;rRqV9   q3'       g   \        P                  ! R"V3R#W34      R\        P                  ! V4      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR	;rRqV9   q3'       g   \        P                  ! R"V3R#W34      R\        P                  ! V4      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR	;r\        P                  ! R4      p	. pR	qV
Jqq'       d   V	^,          qV8H  qpV'       Eg   \        P                  ! R$V3R%W34      RR\
        P                  ! 4       9   g   \        P                  ! V	4      '       d   \        P                  ! V	4      MRR\        P                  ! V
4      /,          pRRV/,          qP                  V4       V'       d   \        P                  ! R X3R&XV34      R\        P                  ! V4      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          pVP                  V4       \        P                  ! V^ 4      / ,          pRRV/,          p\        \        P                  ! V4      4      hR	;p;p;p;p
;r\        P                  ! V4      R,          ^ ,          pRqV8H  q3'       gy   \        P                  ! R V3R'W34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR	;p;r;R	# )(
_fetch_webc                 .    R RRRR.RRR.RV R	R
RRRRRR/# )r   zTest Lemon Chickenr   z2 lemonsz4 chicken breastsr   Season the chicken.zSear and finish in the oven.urlauthorzA Cookservings4
total_timez
30 minutessourcezexample.comrd   )r   s   &r   <lambda>?test_import_web_recipe_writes_structured_note.<locals>.<lambda>   s=    (J(;<+-KL3h,m	
r	   zhttps://example.com/lemonz!Recipes/Web/Test Lemon Chicken.mdr   relr   r/   r   Nztitle: Test Lemon Chickenr-   notezauthor: A Cookz
- 2 lemonsz1. Season the chicken.r   r   r   r|   r   r1   r2   z%(py14)sr3   zassert %(py17)spy17r   r   r)   r   r*   r   r   r6   r8   r   r   )z%(py10)s == %(py12)sr   )r   r   import_web_reciper   r   r   r   r   r   r   r   r=   r   r   r   r   )r   r   r   rE   r   rF   rG   r   rD   r   r   r?   rH   rI   r!   @py_format13rK   r   @py_format18rr   r   s   &&                   r   -test_import_web_recipe_writes_structured_noter      sh   		
 
#
#$?
@C555555553555555355553555555555555O&&(D&.$.....&...&......$....$........#t##############t####t########4<<44#+t+++++#+++#++++++t++++t++++++++


o
.C,d,d?,,s1v,},,,,3,,,,,,3,,,,3,,,d,,,,,,,,,v,,,v,,,,,,,,,,,,,,,,,,,,,,,,,,s#G,Q/H3HH3HHHHHH/HHH/HHH3HHHHHHHHHr	   c                     V R ,          pVR,          P                  RR7       VR,          R,          P                  R4       VR,          P                  R4       VR,          P                  4        VR,          R	,          P                  R
4       \        P                  ! 4        UUu. uF  w  r#VNK	  	  pppRqUV9   qf'       g   \        P
                  ! RV3RWT34      R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR;rVRqUV9  qf'       g   \        P
                  ! RV3RWT34      R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR;rVRqUV9  qf'       g   \        P
                  ! RV3RWT34      R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR;rVR# u uppi )r   CookbookTr   zReal.mdz#---
title: Real
---
## Steps
1. go
z	README.mdz# readme_inboxzscan.mdz---
title: Scan
---
Realr-   r   titlesr/   r   NREADMEScanr6   r8   r[   r]   )r:   r;   r   list_saved_recipesr   r   r   r   r   r   r   r   )	r   rt_r   rD   rE   rF   rG   s	   &        r    test_list_skips_readme_and_inboxr      s   IA^4(^i++,VW_  ,\\I))*CD#66898DAa8F9V66VV!6!!!!!8!!!8!!!!!!6!!!!6!!!!!!!!66 :s   (K:))	asparagusr(   )zchicken thighszMeat / Protein)z
whole milkDairy)z	olive oilPantry)zpaper towels	Household)zfrozen peasFrozen))r   r   kmz8.04)i^  
fahrenheitcelsius176)    r   r   32)   cupsml473)   inchescmz7.62)d   r   kelvin373)__doc__builtinsr   _pytest.assertion.rewrite	assertionrewriter   ru   r   r   r   fixturer   markparametrizer#   rM   rO   rT   rX   r_   rs   ry   r   r   r   r   r   r   r   r   rd   r	   r   <module>r      s          
 
5
5B-/#
&B-
  
/
/
;F	:J:6I8
 r	   