@@ -83,7 +83,9 @@ def parse_outcomes(lines):
8383
8484
8585class Example :
86- def __init__ (self , files : str | dict [str , str ]):
86+ files : dict [str , str | bytes ]
87+
88+ def __init__ (self , files : str | dict [str , str | bytes ]):
8789 """
8890 Parameters:
8991 files: a collection of files where inline-snapshot operates on,
@@ -131,12 +133,20 @@ def normalize_path(path):
131133 and ".pytest_cache" not in p .parts
132134 }
133135
134- def with_files (self , extra_files ):
135- return Example (self .files | extra_files )
136+ def with_files (self , extra_files : dict [str , str | bytes ]) -> Example :
137+ return Example ({** self .files , ** extra_files })
138+
139+ def read_text (self , name : str ) -> str :
140+ text = self .files [name ]
141+ assert isinstance (text , str )
142+ return text
136143
137- def change_code (self , func ):
144+ def change_code (self , func ) -> Example :
138145 return Example ({name : func (text ) for name , text in self .files .items ()})
139146
147+ def replace (self , text , new_text ) -> Example :
148+ return self .change_code (lambda code : code .replace (text , new_text ))
149+
140150 def run_inline (
141151 self ,
142152 args : list [str ] = [],
0 commit comments