99from marimo ._server .rtc .doc import LoroDocManager
1010from marimo ._types .ids import CellId_t
1111
12- if sys .version_info >= (3 , 11 ):
12+ if sys .version_info >= (3 , 11 ) and sys . version_info < ( 3 , 14 ) :
1313 from loro import LoroDoc , LoroText
1414
1515doc_manager = LoroDocManager ()
@@ -29,7 +29,9 @@ async def setup_doc_manager() -> AsyncGenerator[None, None]:
2929 doc_manager .loro_docs_cleaners .clear ()
3030
3131
32- @pytest .mark .skipif ("sys.version_info < (3, 11)" )
32+ @pytest .mark .skipif (
33+ "sys.version_info < (3, 11) or sys.version_info >= (3, 14)"
34+ )
3335async def test_quick_reconnection (setup_doc_manager : None ) -> None :
3436 """Test that quick reconnection properly handles cleanup task cancellation"""
3537 del setup_doc_manager
@@ -65,7 +67,9 @@ async def test_quick_reconnection(setup_doc_manager: None) -> None:
6567 ) # Original client + reconnected client
6668
6769
68- @pytest .mark .skipif ("sys.version_info < (3, 11)" )
70+ @pytest .mark .skipif (
71+ "sys.version_info < (3, 11) or sys.version_info >= (3, 14)"
72+ )
6973async def test_two_users_sync (setup_doc_manager : None ) -> None :
7074 """Test that two users can connect and sync text properly without duplicates"""
7175 del setup_doc_manager
@@ -111,7 +115,9 @@ async def test_two_users_sync(setup_doc_manager: None) -> None:
111115 assert lang_text_typed .to_string () == "python"
112116
113117
114- @pytest .mark .skipif ("sys.version_info < (3, 11)" )
118+ @pytest .mark .skipif (
119+ "sys.version_info < (3, 11) or sys.version_info >= (3, 14)"
120+ )
115121async def test_concurrent_doc_creation (setup_doc_manager : None ) -> None :
116122 """Test concurrent doc creation doesn't cause issues"""
117123 del setup_doc_manager
@@ -130,7 +136,9 @@ async def test_concurrent_doc_creation(setup_doc_manager: None) -> None:
130136 assert len (doc_manager .loro_docs ) == 1
131137
132138
133- @pytest .mark .skipif ("sys.version_info < (3, 11)" )
139+ @pytest .mark .skipif (
140+ "sys.version_info < (3, 11) or sys.version_info >= (3, 14)"
141+ )
134142async def test_concurrent_client_operations (
135143 setup_doc_manager : None ,
136144) -> None :
@@ -157,7 +165,9 @@ async def client_operation(queue: asyncio.Queue[bytes]) -> None:
157165 assert len (doc_manager .loro_docs_clients [file_key ]) == 0
158166
159167
160- @pytest .mark .skipif ("sys.version_info < (3, 11)" )
168+ @pytest .mark .skipif (
169+ "sys.version_info < (3, 11) or sys.version_info >= (3, 14)"
170+ )
161171async def test_cleanup_task_management (setup_doc_manager : None ) -> None :
162172 """Test cleanup task management and cancellation"""
163173 del setup_doc_manager
@@ -189,7 +199,9 @@ async def test_cleanup_task_management(setup_doc_manager: None) -> None:
189199 await doc_manager .remove_client (file_key , new_queue )
190200
191201
192- @pytest .mark .skipif ("sys.version_info < (3, 11)" )
202+ @pytest .mark .skipif (
203+ "sys.version_info < (3, 11) or sys.version_info >= (3, 14)"
204+ )
193205async def test_broadcast_update (setup_doc_manager : None ) -> None :
194206 """Test broadcast update functionality"""
195207 del setup_doc_manager
@@ -215,7 +227,9 @@ async def test_broadcast_update(setup_doc_manager: None) -> None:
215227 assert await queue .get () == message
216228
217229
218- @pytest .mark .skipif ("sys.version_info < (3, 11)" )
230+ @pytest .mark .skipif (
231+ "sys.version_info < (3, 11) or sys.version_info >= (3, 14)"
232+ )
219233async def test_remove_nonexistent_doc (setup_doc_manager : None ) -> None :
220234 """Test removing a doc that doesn't exist"""
221235 del setup_doc_manager
@@ -226,7 +240,9 @@ async def test_remove_nonexistent_doc(setup_doc_manager: None) -> None:
226240 assert file_key not in doc_manager .loro_docs_cleaners
227241
228242
229- @pytest .mark .skipif ("sys.version_info < (3, 11)" )
243+ @pytest .mark .skipif (
244+ "sys.version_info < (3, 11) or sys.version_info >= (3, 14)"
245+ )
230246async def test_remove_nonexistent_client (setup_doc_manager : None ) -> None :
231247 """Test removing a client that doesn't exist"""
232248 del setup_doc_manager
@@ -236,7 +252,9 @@ async def test_remove_nonexistent_client(setup_doc_manager: None) -> None:
236252 assert file_key not in doc_manager .loro_docs_clients
237253
238254
239- @pytest .mark .skipif ("sys.version_info < (3, 11)" )
255+ @pytest .mark .skipif (
256+ "sys.version_info < (3, 11) or sys.version_info >= (3, 14)"
257+ )
240258async def test_concurrent_doc_removal (setup_doc_manager : None ) -> None :
241259 """Test concurrent doc removal doesn't cause issues"""
242260 del setup_doc_manager
@@ -255,7 +273,7 @@ async def test_concurrent_doc_removal(setup_doc_manager: None) -> None:
255273
256274
257275@pytest .mark .skipif (
258- sys .version_info < (3 , 11 ), reason = "Python 3.10+ required for Barrier "
276+ " sys.version_info < (3, 11) or sys.version_info >= (3, 14) "
259277)
260278async def test_prevent_lock_deadlock (setup_doc_manager : None ) -> None :
261279 """Test that our deadlock prevention measures work correctly.
0 commit comments