
    jr                    \   d Z ddlmZ ddlZddlmc mZ ddl	Z
ddlZddlmZ ddlZ ee      j!                         j"                  d   Z ee      ej(                  vr"ej(                  j+                  d ee             edz  Zd Zd Zd	 Zd
 ZddlZddlZd ZddZd Zd Z d Z!d Z"y)u  test_owner_trigger_2553_plus1_high_fix.py — task-2553+1 F1-solo regression.

F1 = `/gemini review` comment trigger 의 endpoint/args allowlist 강화. token transport 무관 (task-2553+1 §2). clean replacement PR 의 6-file effective diff #2 (회장 §5 single authority).
    )annotationsN)Path   zanu_v2/owner_trigger_pat.pyc                     t         j                  j                  dt              } t         j                  j	                  |       }|t
        j                  | j                  <   | j                  j                  |       |S )N'anu_v2_owner_trigger_pat_2553p1_highfix)
	importlibutilspec_from_file_location_OTPmodule_from_specsysmodulesnameloaderexec_module)specmods     N/home/jay/workspace/tests/regression/test_owner_trigger_2553_plus1_high_fix.py	_load_otpr      sZ    >>1114D ..
)
)$
/C CKK		KKC J    c                    t               } | j                  }d}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}y)	uA   F1 invariant: 허용 comment body 는 정확히 `/gemini review`.z/gemini review)==)z<%(py2)s
{%(py2)s = %(py0)s.ALLOWED_COMMENT_BODY
} == %(py5)sotp)py0py2py5zassert %(py7)spy7N)
r   ALLOWED_COMMENT_BODY
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)r   @py_assert1@py_assert4@py_assert3@py_format6@py_format8s         r   2test_allowed_comment_body_is_exactly_gemini_reviewr,      s    
+C##7'77#'77777#'777777737773777#777'77777777r   c            	        t               } t        j                  t              5 }| j	                  g dddd       ddd       | j
                  }j                  }t        |      }||v }|sKt        j                  d|fd||f      dt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      d	t        j                         v st        j                  t              rt        j                  t              nd	d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}}y# 1 sw Y   xY w)uE   F1 invariant: 다른 endpoint → ENDPOINT_NOT_ALLOWED 정적 차단.)api-XPOSTz/repos/o/r/issues/1/labels-fzbody=/gemini reviewor   Nin)zy%(py2)s
{%(py2)s = %(py0)s.ERR_ENDPOINT_NOT_ALLOWED
} in %(py9)s
{%(py9)s = %(py4)s(%(py7)s
{%(py7)s = %(py5)s.value
})
}r   streir   r   py4r   r   py9assert %(py11)spy11)r   pytestraises	Exception_assert_args_allowlistERR_ENDPOINT_NOT_ALLOWEDvaluer7   r   r    r!   r"   r#   r$   r%   r&   r   r8   r'   @py_assert6@py_assert8r)   @py_format10@py_format12s           r   ,test_args_allowlist_rejects_foreign_endpointrI   %   s   
+C	y	! 
R""*a	

 ''8rxx83x=8'=8888'=88888838883888'88888838883888888r888r888x888=8888888
 
   GGc            	        t               } t        j                  t              5 }| j	                  g dddd       ddd       | j
                  }j                  }t        |      }||v }|sKt        j                  d|fd||f      dt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      d	t        j                         v st        j                  t              rt        j                  t              nd	d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}}y# 1 sw Y   xY w)u=   F1 invariant: 다른 body → BODY_NOT_ALLOWED 정적 차단.)r.   r/   r0   z/repos/o/r/issues/1/commentsr1   zbody=please merger2   r3   r4   Nr5   )zu%(py2)s
{%(py2)s = %(py0)s.ERR_BODY_NOT_ALLOWED
} in %(py9)s
{%(py9)s = %(py4)s(%(py7)s
{%(py7)s = %(py5)s.value
})
}r   r7   r8   r9   r<   r=   )r   r>   r?   r@   rA   ERR_BODY_NOT_ALLOWEDrC   r7   r   r    r!   r"   r#   r$   r%   r&   rD   s           r   (test_args_allowlist_rejects_foreign_bodyrM   1   s   
+C	y	! 
R""(a	

 ##42884s8}4#}4444#}44444434443444#444444s444s444444244424448444}4444444
 
rJ   c                 6   t         j                  j                  dt              } g }d}| |u}|}|r| j                  }d}||u}|}|slt        j                  d|fd| |f      dt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      dz  }dd|iz  }	|j                  |	       |rt        j                  dfd	f      dt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      d
z  }
dd|
iz  }|j                  |       t        j                  |d      i z  }dd|iz  }t        t        j                  |            dx}x}x}x}x}x}}t         j                  j                  |       }|t         j"                  | j$                  <   | j                  j'                  |       |S )u  sys.modules 등록형 로더 — Python 3.12 frozen dataclass 문자열 어노 해소.

    기존 `_load_otp` 는 sys.modules 미등록이라 3.12 에서 @dataclass(line 77)
    문자열 어노 해소가 깨진다(본 task 무관·사전존재). 본 helper 는 동일 모듈을
    sys.modules 선등록 후 로드하여 is_duplicate_trigger 동치 검증을 가능케 한다.
    *anu_v2_owner_trigger_pat_2553p10_streamingN)is not)z%(py2)s is not %(py5)sr   )r   r   z%(py7)sr   )z5%(py11)s
{%(py11)s = %(py9)s.loader
} is not %(py14)s)r;   r=   py14z%(py16)spy16r   assert %(py19)spy19)r   r	   r
   r   r   r   r    r!   r"   r#   r$   append_format_boolopr%   r&   r   r   r   r   r   )r   r'   r(   r)   @py_assert0@py_assert10@py_assert13@py_assert12r*   r+   @py_format15@py_format17@py_format18@py_format20r   s                  r   _load_otp_streamingr_   F   s5    >>114dD 8t74t77474 777774t77777747774777t77777774777777777777777477777777777777
..
)
)$
/C CKK		KKC Jr   c                2    | dz  }|j                  |       |S )Nzaudit.jsonl)write_bytes)tmp_pathcontent_bytesps      r   _writere   W   s    = AMM- Hr   c                   t               }d}t        j                  ||j                  d      }t        j                  ||j                  d      }|j
                  }d}||z   }|j                  } |       }	t        | |	      }
 ||
|      }d}||u }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndd	t        j                         v st        j                  |       rt        j                  |       nd	d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      t        j                  |      t        j                  |	      t        j                  |
      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}x}	x}
x}x}}|j
                  }d}||z   }|j                  } |       }	t        | |	      }
 ||
|      }d}||u }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndd	t        j                         v st        j                  |       rt        j                  |       nd	dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |	      t        j                  |
      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}x}	x}
x}x}}t        j                  d|j                  d      }|j
                  }d}||z   }|j                  } |       }	t        | |	      }
 ||
|      }d}||u }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndd	t        j                         v st        j                  |       rt        j                  |       nd	dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |	      t        j                  |
      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}x}	x}
x}x}}|j
                  }d}d}||z   }|j                  }	 |	       }
||
z   }t        | |      } |||      }d}||u }|s1t        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndd	t        j                         v st        j                  |       rt        j                  |       nd	t        j                  |      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      t        j                  |	      t        j                  |
      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}x}	x}
x}x}x}x}}|j
                  }d}| |z  } |||      }d}	||	u }|sWt        j                  d|fd||	f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      d	t        j                         v st        j                  |       rt        j                  |       nd	t        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |	      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}x}}	|j
                  } || |      }d}||u }|sCt        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      d	t        j                         v st        j                  |       rt        j                  |       nd	dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }d d!|iz  }t        t        j                  |            dx}x}x}}y)"u]   매칭/미매칭/깨진라인-skip/dedupe 마커우선 — 스트리밍 전후 동일 결과.128#6c443d87
dedupe_keyoutcome
Tisz%(py17)s
{%(py17)s = %(py2)s
{%(py2)s = %(py0)s.is_duplicate_trigger
}(%(py14)s
{%(py14)s = %(py3)s(%(py4)s, %(py12)s
{%(py12)s = %(py10)s
{%(py10)s = (%(py5)s + %(py7)s).encode
}()
})
}, %(py15)s)
} is %(py20)sr   re   rb   okkeyr   r   py3r:   r   r   py10py12rQ   py15py17py20assert %(py22)spy22Npendz999#xFothers
   {not json
z%(py20)s
{%(py20)s = %(py2)s
{%(py2)s = %(py0)s.is_duplicate_trigger
}(%(py17)s
{%(py17)s = %(py3)s(%(py4)s, (%(py6)s + %(py14)s
{%(py14)s = %(py12)s
{%(py12)s = (%(py7)s + %(py9)s).encode
}()
}))
}, %(py18)s)
} is %(py23)sr   r   rr   r:   py6r   r;   rt   rQ   rv   py18rw   py23assert %(py25)spy25zabsent.jsonl)zp%(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.is_duplicate_trigger
}((%(py3)s / %(py5)s), %(py7)s)
} is %(py12)s)r   r   rr   r   r   r;   rt   zassert %(py14)srQ   )zc%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.is_duplicate_trigger
}(%(py3)s, %(py4)s)
} is %(py9)s)r   r   rr   r:   r~   r;   r<   r=   r_   jsondumps
OUTCOME_OKOUTCOME_PENDINGis_duplicate_triggerencodere   r   r    r!   r"   r#   r$   r%   r&   )rb   r   rp   ro   rz   r'   rE   rF   @py_assert9@py_assert11rY   @py_assert16@py_assert19@py_assert18@py_format21@py_format23r{   @py_assert5rX   @py_assert15@py_assert22@py_assert21@py_format24@py_format26r(   @py_format13r[   @py_assert7rG   rH   s                                 r   ,test_is_duplicate_streaming_equivalence_corer   ]   s   

C
C	33>>B	CB::SS5H5HIJD##X4Xb4iXi5G5GX5G5IXF85I$JX#$JCPXTXXPTXXXXXPTXXXXXXX3XXX3XXX#XXXXXXFXXXFXXXXXX8XXX8XXXXXXbXXXbXXX4XXX5GXXX5IXXX$JXXXXXXCXXXCXXXPXXXTXXXXXXXXX##ZTZdTkZk5I5IZ5I5KZF85K$LZ#$LcRZVZZRVZZZZZRVZZZZZZZ3ZZZ3ZZZ#ZZZZZZFZZZFZZZZZZ8ZZZ8ZZZZZZdZZZdZZZTZZZ5IZZZ5KZZZ$LZZZZZZcZZZcZZZRZZZVZZZZZZZZZJJg#..IJE##\d\edl\l5J5J\5J5L\F85L$M\#$MsS\W\\SW\\\\\SW\\\\\\\3\\\3\\\#\\\\\\F\\\F\\\\\\8\\\8\\\\\\e\\\e\\\d\\\5J\\\5L\\\$M\\\\\\s\\\s\\\S\\\W\\\\\\\\\##knkTkT	k	GYGYkGYG[knG[6[kF86[$]k#$]_bckgkkcgkkkkkcgkkkkkkk3kkk3kkk#kkkkkkFkkkFkkkkkk8kkk8kkknkkkkkkkkkkkkTkkkGYkkkG[kkk$]kkkkkk_bkkk_bkkkckkkgkkkkkkkkkk##L~LH~$=L#$=sCLuLCuLLLLCuLLLLLL3LLL3LLL#LLLLLLHLLLHLLL~LLLLLLsLLLsLLLCLLLuLLLLLLLL##;#Hc2;e;2e;;;;2e;;;;;;3;;;3;;;#;;;;;;H;;;H;;;;;;c;;;c;;;2;;;e;;;;;;;r   c                   t               }d}t        j                  ||j                  d      }t        j                  ||j                  d      }|j
                  }|j                  } |       }t        | |      } |||      }	d}
|	|
u }|s	t        j                  d|fd|	|
f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |       rt        j                  |       ndd	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |      t        j                  |      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |	      t        j                  |
      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}x}	x}}
|j
                  }d}d}||z   }|j                  } |       }	||	z   }t        | |      }
 ||
|      }d}||u }|s1t        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      d	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |      t        j                  |	      t        j                  |
      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}x}x}x}	x}x}
x}x}}dt        j                  dd	d      dz   j                         z   dz   |dz   j                         z   dz   }|j
                  }t        | |      } |||      }d}||u }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |       rt        j                  |       nddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      t        j                  |      d	z  }dd|iz  }t        t        j                  |            dx}x}x}x}}|j
                  }d}t        | |      } |||      }d}	||	u }|st        j                  d|fd ||	f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      t        j                  |	      d!	z  }d"d#|iz  }t        t        j                  |            dx}x}x}x}x}}	|j
                  }d$}||z   }|j                  } |       }t        | |      }	 ||	|      }
d}|
|u }|st        j                  d|fd%|
|f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |       rt        j                  |       ndd	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |      t        j                  |      t        j                  |	      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |
      t        j                  |      d&z  }d'd(|iz  }t        t        j                  |            dx}x}x}x}x}x}	x}
x}}|j
                  }d)}||z   }|j                  } |       }t        | |      }	 ||	|      }
d}|
|u }|st        j                  d|fd%|
|f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |       rt        j                  |       ndd	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |      t        j                  |      t        j                  |	      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |
      t        j                  |      d&z  }d'd(|iz  }t        t        j                  |            dx}x}x}x}x}x}	x}
x}}y)*u]   9-R.5 적대적 동치: trailing-newline無 / BOM첫라인 / 다수+빈줄혼재 / 빈파일.rg   rh   Trl   )z%(py14)s
{%(py14)s = %(py2)s
{%(py2)s = %(py0)s.is_duplicate_trigger
}(%(py11)s
{%(py11)s = %(py3)s(%(py4)s, %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py5)s.encode
}()
})
}, %(py12)s)
} is %(py17)sr   re   rb   ro   rp   )r   r   rr   r:   r   r   r;   r=   rt   rQ   rv   rS   rT   Ns   ﻿rk   Fr|   r}   r   r   s   

as      
   
)z%(py10)s
{%(py10)s = %(py2)s
{%(py2)s = %(py0)s.is_duplicate_trigger
}(%(py7)s
{%(py7)s = %(py3)s(%(py4)s, %(py5)s)
}, %(py8)s)
} is %(py13)sblob)	r   r   rr   r:   r   r   py8rs   py13zassert %(py15)sru   r   )z%(py11)s
{%(py11)s = %(py2)s
{%(py2)s = %(py0)s.is_duplicate_trigger
}(%(py8)s
{%(py8)s = %(py3)s(%(py4)s, %(py6)s)
}, %(py9)s)
} is %(py14)s)	r   r   rr   r:   r~   r   r;   r=   rQ   zassert %(py16)srR   z
rn   rq   rx   ry   r   ) rb   r   rp   ro   rz   r'   rE   rF   rX   rY   r   r   r]   r^   r   r   r   r   r   r   r   r   r   rZ   @py_format14@py_format16r   r[   r\   r   r   r   s                                    r   .test_is_duplicate_streaming_adversarial_parityr   r   sr   

C
C	33>>B	CB::SS5H5HIJD##ORYYOY[OF8[$AO#$A3GO4OG4OOOOG4OOOOOO3OOO3OOO#OOOOOOFOOOFOOOOOO8OOO8OOOOOOROOOROOOYOOO[OOO$AOOOOOO3OOO3OOOGOOO4OOOOOOOO##k_kTkT	k	GYGYkGYG[k_G[5[kF85[$\k#$\^abkfkkbfkkkkkbfkkkkkkk3kkk3kkk#kkkkkkFkkkFkkkkkk8kkk8kkk_kkkkkkkkkkkkTkkkGYkkkG[kkk$\kkkkkk^akkk^akkkbkkkfkkkkkkkkkktzz"FG$NVVXX+--/0278D##HF8T$:H#$:C@HDH@DHHHH@DHHHHHH3HHH3HHH#HHHHHHFHHHFHHHHHH8HHH8HHHHHHTHHHTHHH$:HHHHHHCHHHCHHH@HHHDHHHHHHH##HSHF8S$9H#$93?H5H?5HHHH?5HHHHHH3HHH3HHH#HHHHHHFHHHFHHHHHH8HHH8HHHSHHH$9HHHHHH3HHH3HHH?HHH5HHHHHHHH##Z6Zb6kZk5I5IZ5I5KZF85K$LZ#$LcRZVZZRVZZZZZRVZZZZZZZ3ZZZ3ZZZ#ZZZZZZFZZZFZZZZZZ8ZZZ8ZZZZZZbZZZbZZZ6ZZZ5IZZZ5KZZZ$LZZZZZZcZZZcZZZRZZZVZZZZZZZZZ##X4Xb4iXi5G5GX5G5IXF85I$JX#$JCPXTXXPTXXXXXPTXXXXXXX3XXX3XXX#XXXXXXFXXXFXXXXXX8XXX8XXXXXXbXXXbXXX4XXX5GXXX5IXXX$JXXXXXXCXXXCXXXPXXXTXXXXXXXXXXr   c                    t               }t        | d      }t        j                  t              5  |j                  |d       ddd       y# 1 sw Y   yxY w)uW   9-R.3 decode-error parity: invalid utf-8 → UnicodeDecodeError 전파(False 변환 0).s    invalid utf8 rg   N)r_   re   r>   r?   UnicodeDecodeErrorr   )rb   r   rd   s      r   3test_is_duplicate_decode_error_propagates_not_falser      sI    

Cx67A	)	* 4  N34 4 4s   AAc                    ddl ddl} t               }| j                  t	        j
                  |j                              }j                  |      }|j                  d   }j                  }t        ||      }|sddt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |      rt        j                  |      nddt        j                         v st        j                        rt        j                        ndt        j                  |      t        j                  |      dz  }t!        t        j"                  |            dx}}j%                  |      D ch c]N  }t        |j&                        r6t        |j(                  j*                        r|j(                  j,                  P }	}d}
|
|	v}|st        j.                  d	|fd
|
|	f      t        j                  |
      dt        j                         v st        j                  |	      rt        j                  |	      nddz  }t        j0                  d      dz   d|iz  }t!        t        j"                  |            dx}
}d}
|
|	v}|st        j.                  d	|fd
|
|	f      t        j                  |
      dt        j                         v st        j                  |	      rt        j                  |	      nddz  }t        j0                  d      dz   d|iz  }t!        t        j"                  |            dx}
}d}
|
|	v }|st        j.                  d|fd|
|	f      t        j                  |
      dt        j                         v st        j                  |	      rt        j                  |	      nddz  }t        j0                  d      dz   d|iz  }t!        t        j"                  |            dx}
}t3        fdj%                  |      D              }|s{t        j0                  d      dz   ddt        j                         v st        j                  |      rt        j                  |      ndiz  }t!        t        j"                  |            t5               }j%                  |      D ]_  }t        |j6                        st        |j8                  j:                        s;|j=                  |j8                  j>                         a d}
|
|v }|st        j.                  d|fd|
|f      t        j                  |
      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }t!        t        j"                  |            dx}
}|j@                  }h d} ||      }|st        j0                  d|       d z   dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      d!z  }t!        t        j"                  |            dx}x}}yc c}w )"u+  §12.5 정적 증명(AST): is_duplicate_trigger 가 read_text/splitlines 호출 부재 +

    파일객체 스트리밍(open + iter) 사용 + except 핸들러는 OSError 만(9-R.3 미확대).
    AST 기반 — 설명 주석/docstring 의 'read_text' 문자열 언급에 오탐되지 않는다.
    r   NzVassert %(py6)s
{%(py6)s = %(py0)s(%(py1)s, %(py4)s
{%(py4)s = %(py2)s.FunctionDef
})
}
isinstancefnast)r   py1r   r:   r~   	read_text)not in)z%(py1)s not in %(py3)scalled_attrs)r   rr   u3   is_duplicate_trigger 가 여전히 read_text 호출z
>assert %(py5)sr   
splitlinesu(   splitlines() 전량 분할 호출 잔존openr5   )z%(py1)s in %(py3)su&   스트리밍 path.open() 호출 부재c              3     K   | ]^  }t        |j                        xrB t        |j                  j                        xr  t        |j                  j                         ` y w)N)r   ForiterNametarget).0nr   s     r   	<genexpr>zBtest_is_duplicate_no_read_text_streaming_static.<locals>.<genexpr>   sY        	1cgg 	+qvvsxx(	+qxx*	+s   A$A'u0   파일객체 for-line 스트리밍 순회 부재z
>assert %(py0)sr   has_file_iterOSErrorhandler_typeszassert %(py5)s>   r@   
ValueErrorBaseExceptionr   u    except 핸들러 부당 확대: zN
>assert %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.isdisjoint
}(%(py4)s)
})r   r   r:   r~   )!r   textwrapr_   dedentinspect	getsourcer   parsebodyFunctionDefr   r!   r"   r   r#   r$   r%   r&   walkCallfunc	Attributeattrr    _format_assertmsganysetExceptHandlertyper   addid
isdisjoint)r   r   srctreer   r)   r   @py_format7r   r   rW   @py_assert2@py_format4r*   r   @py_format1r   r'   r   s                     @r   /test_is_duplicate_no_read_text_streaming_staticr      sR    

C
//'++C,D,DE
FC99S>D	1B//*:b/********:***:******b***b******#***#***/********** "a"z!&&#--'H 	
L  a;l*aaa;laaa;aaaaaalaaalaaaa,aaaaaaaW<|+WWW<|WWW<WWWWWW|WWW|WWWW-WWWWWWWK6\!KKK6\KKK6KKKKKK\KKK\KKKK#KKKKKKK  "	 M LLLLLLLLL=LLL=LLLLLEMXXb\ )a**+
1663880Laffii() %9%%%%9%%%9%%%%%%%%%%%%%%%%## :J:#J :  :(9(9	)-9: :396: :!9!9  : :09	  : :09	 $ : :09	 	K: :09	 : : :&9&9: : :1s   +A[)rc   bytes)#__doc__
__future__r   builtinsr!   _pytest.assertion.rewrite	assertionrewriter   importlib.utilr   r   pathlibr   r>   __file__resolveparents_WSr7   pathinsertr   r   r,   rI   rM   r   r   r_   re   r   r   r   r    r   r   <module>r      s   
 #     
  
8n&&q)s8388HHOOAs3x 
**8	9	5"  "<*Y*4):r   