@@ -527,3 +527,41 @@ def test_delete_dataset_run_with_folder_names():
527527 # Verify the run is deleted
528528 runs_after = langfuse .get_dataset_runs (dataset_name = folder_name )
529529 assert len (runs_after .data ) == 0
530+
531+
532+ def test_get_dataset_with_version ():
533+ """Test that get_dataset correctly filters items by version timestamp."""
534+ from datetime import datetime , timezone
535+ import time
536+
537+ langfuse = Langfuse (debug = False )
538+
539+ # Create dataset
540+ name = create_uuid ()
541+ langfuse .create_dataset (name = name )
542+
543+ # Create first item
544+ item1 = langfuse .create_dataset_item (dataset_name = name , input = {"version" : "v1" })
545+ langfuse .flush ()
546+ time .sleep (3 ) # Ensure persistence and clear temporal separation
547+
548+ # Capture timestamp AFTER first item, BEFORE second item
549+ query_timestamp = datetime .now (timezone .utc )
550+ time .sleep (3 ) # Ensure second item is created AFTER query_timestamp
551+
552+ # Create second item
553+ langfuse .create_dataset_item (dataset_name = name , input = {"version" : "v2" })
554+ langfuse .flush ()
555+ time .sleep (3 ) # Ensure persistence
556+
557+ # Fetch at the query_timestamp (should only return first item)
558+ dataset = langfuse .get_dataset (name , version = query_timestamp )
559+
560+ # Verify only first item is retrieved
561+ assert len (dataset .items ) == 1
562+ assert dataset .items [0 ].input == {"version" : "v1" }
563+ assert dataset .items [0 ].id == item1 .id
564+
565+ # Verify fetching without version returns both items (latest)
566+ dataset_latest = langfuse .get_dataset (name )
567+ assert len (dataset_latest .items ) == 2
0 commit comments