You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							40 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							40 lines
						
					
					
						
							1.4 KiB
						
					
					
				import json
 | 
						|
import subprocess
 | 
						|
import time
 | 
						|
from tempfile import NamedTemporaryFile
 | 
						|
 | 
						|
STILL_PROCESSING = "File is still processing. Check back later."
 | 
						|
 | 
						|
 | 
						|
def test_file_cli() -> None:
 | 
						|
    contents = json.dumps({"prompt": "1 + 3 =", "completion": "4"}) + "\n"
 | 
						|
    with NamedTemporaryFile(suffix=".jsonl", mode="wb") as train_file:
 | 
						|
        train_file.write(contents.encode("utf-8"))
 | 
						|
        train_file.flush()
 | 
						|
        create_output = subprocess.check_output(
 | 
						|
            ["openai", "api", "files.create", "-f", train_file.name, "-p", "fine-tune"]
 | 
						|
        )
 | 
						|
    file_obj = json.loads(create_output)
 | 
						|
    assert file_obj["bytes"] == len(contents)
 | 
						|
    file_id: str = file_obj["id"]
 | 
						|
    assert file_id.startswith("file-")
 | 
						|
    start_time = time.time()
 | 
						|
    while True:
 | 
						|
        delete_result = subprocess.run(
 | 
						|
            ["openai", "api", "files.delete", "-i", file_id],
 | 
						|
            stdout=subprocess.PIPE,
 | 
						|
            stderr=subprocess.PIPE,
 | 
						|
            encoding="utf-8",
 | 
						|
        )
 | 
						|
        if delete_result.returncode == 0:
 | 
						|
            break
 | 
						|
        elif STILL_PROCESSING in delete_result.stderr:
 | 
						|
            time.sleep(0.5)
 | 
						|
            if start_time + 60 < time.time():
 | 
						|
                raise RuntimeError("timed out waiting for file to become available")
 | 
						|
            continue
 | 
						|
        else:
 | 
						|
            raise RuntimeError(
 | 
						|
                f"delete failed: stdout={delete_result.stdout} stderr={delete_result.stderr}"
 | 
						|
            )
 |