@@ -316,16 +316,27 @@ def test_validate_role_context_rust(benchmark, rust_validator):
316316 reason = "" ,
317317)
318318def test_validate_pattern_simple_rust (benchmark , rust_validator ):
319- """Validate a simple entity pattern via Rust PyO3 extraction + validation."""
320- from type_bridge_core import EntityPattern , HasConstraint , LiteralValue
321-
322- pattern = EntityPattern (
323- variable = "$p" ,
324- type_name = "person" ,
325- constraints = [
326- HasConstraint (attr_name = "name" , value = LiteralValue (value = "Alice" , value_type = "string" ))
327- ],
328- )
319+ """Validate a simple entity pattern via Rust depythonize."""
320+ pattern = {
321+ "type" : "Entity" ,
322+ "data" : {
323+ "variable" : "$p" ,
324+ "type_name" : "person" ,
325+ "constraints" : [
326+ {
327+ "type" : "Has" ,
328+ "data" : {
329+ "attr_name" : "name" ,
330+ "value" : {
331+ "type" : "Literal" ,
332+ "data" : {"value" : "Alice" , "value_type" : "string" },
333+ },
334+ },
335+ }
336+ ],
337+ "is_strict" : False ,
338+ },
339+ }
329340 benchmark (rust_validator .validate_pattern , pattern )
330341
331342
@@ -335,54 +346,71 @@ def test_validate_pattern_simple_rust(benchmark, rust_validator):
335346)
336347def test_validate_pattern_complex_rust (benchmark , rust_validator ):
337348 """Validate a complex nested pattern (Or + Relation + Not) via Rust."""
338- from type_bridge_core import (
339- EntityPattern ,
340- HasConstraint ,
341- LiteralValue ,
342- NotPattern ,
343- OrPattern ,
344- RelationPattern ,
345- RolePlayer ,
346- )
347-
348- pattern = OrPattern (
349- alternatives = [
349+ pattern = {
350+ "type" : "Or" ,
351+ "data" : [
350352 [
351- EntityPattern (
352- variable = "$p" ,
353- type_name = "person" ,
354- constraints = [
355- HasConstraint (
356- attr_name = "name" , value = LiteralValue (value = "Alice" , value_type = "string" )
357- ),
358- HasConstraint (
359- attr_name = "age" , value = LiteralValue (value = 30 , value_type = "long" )
360- ),
361- ],
362- ),
363- RelationPattern (
364- variable = "$r" ,
365- type_name = "employment" ,
366- role_players = [
367- RolePlayer (role = "employee" , player_var = "$p" ),
368- RolePlayer (role = "employer" , player_var = "$c" ),
369- ],
370- ),
353+ {
354+ "type" : "Entity" ,
355+ "data" : {
356+ "variable" : "$p" ,
357+ "type_name" : "person" ,
358+ "constraints" : [
359+ {
360+ "type" : "Has" ,
361+ "data" : {
362+ "attr_name" : "name" ,
363+ "value" : {
364+ "type" : "Literal" ,
365+ "data" : {"value" : "Alice" , "value_type" : "string" },
366+ },
367+ },
368+ },
369+ {
370+ "type" : "Has" ,
371+ "data" : {
372+ "attr_name" : "age" ,
373+ "value" : {
374+ "type" : "Literal" ,
375+ "data" : {"value" : 30 , "value_type" : "long" },
376+ },
377+ },
378+ },
379+ ],
380+ "is_strict" : False ,
381+ },
382+ },
383+ {
384+ "type" : "Relation" ,
385+ "data" : {
386+ "variable" : "$r" ,
387+ "type_name" : "employment" ,
388+ "role_players" : [
389+ {"role" : "employee" , "player_var" : "$p" },
390+ {"role" : "employer" , "player_var" : "$c" },
391+ ],
392+ "constraints" : [],
393+ },
394+ },
371395 ],
372396 [
373- NotPattern (
374- patterns = [
375- EntityPattern (
376- variable = "$p" ,
377- type_name = "retired-person" ,
378- constraints = [],
379- is_strict = True ,
380- ),
381- ]
382- ),
397+ {
398+ "type" : "Not" ,
399+ "data" : [
400+ {
401+ "type" : "Entity" ,
402+ "data" : {
403+ "variable" : "$p" ,
404+ "type_name" : "retired-person" ,
405+ "constraints" : [],
406+ "is_strict" : True ,
407+ },
408+ }
409+ ],
410+ }
383411 ],
384- ]
385- )
412+ ],
413+ }
386414 benchmark (rust_validator .validate_pattern , pattern )
387415
388416
@@ -396,10 +424,11 @@ def test_validate_pattern_complex_rust(benchmark, rust_validator):
396424 reason = "" ,
397425)
398426def test_validate_statement_simple_rust (benchmark , rust_validator ):
399- """Validate a simple IsaStatement via Rust."""
400- from type_bridge_core import IsaStatement
401-
402- stmt = IsaStatement (variable = "$p" , type_name = "person" )
427+ """Validate a simple Isa statement via Rust depythonize."""
428+ stmt = {
429+ "type" : "Isa" ,
430+ "data" : {"variable" : "$p" , "type_name" : "person" },
431+ }
403432 benchmark (rust_validator .validate_statement , stmt )
404433
405434
@@ -408,27 +437,41 @@ def test_validate_statement_simple_rust(benchmark, rust_validator):
408437 reason = "" ,
409438)
410439def test_validate_statement_relation_rust (benchmark , rust_validator ):
411- """Validate a RelationStatement with role players and attributes via Rust."""
412- from type_bridge_core import HasStatement , LiteralValue , RelationStatement , RolePlayer
413-
414- stmt = RelationStatement (
415- variable = "$rel" ,
416- type_name = "employment" ,
417- role_players = [
418- RolePlayer (role = "employee" , player_var = "$p" ),
419- RolePlayer (role = "employer" , player_var = "$c" ),
420- ],
421- attributes = [
422- HasStatement (
423- subject_var = "$rel" ,
424- attr_name = "start-date" ,
425- value = LiteralValue (value = "2024-01-15" , value_type = "date" ),
426- ),
427- HasStatement (
428- subject_var = "$rel" ,
429- attr_name = "salary" ,
430- value = LiteralValue (value = 95000 , value_type = "long" ),
431- ),
432- ],
433- )
440+ """Validate a Relation statement with role players and attributes via Rust."""
441+ stmt = {
442+ "type" : "Relation" ,
443+ "data" : {
444+ "variable" : "$rel" ,
445+ "type_name" : "employment" ,
446+ "role_players" : [
447+ {"role" : "employee" , "player_var" : "$p" },
448+ {"role" : "employer" , "player_var" : "$c" },
449+ ],
450+ "include_variable" : True ,
451+ "attributes" : [
452+ {
453+ "type" : "Has" ,
454+ "data" : {
455+ "subject_var" : "$rel" ,
456+ "attr_name" : "start-date" ,
457+ "value" : {
458+ "type" : "Literal" ,
459+ "data" : {"value" : "2024-01-15" , "value_type" : "date" },
460+ },
461+ },
462+ },
463+ {
464+ "type" : "Has" ,
465+ "data" : {
466+ "subject_var" : "$rel" ,
467+ "attr_name" : "salary" ,
468+ "value" : {
469+ "type" : "Literal" ,
470+ "data" : {"value" : 95000 , "value_type" : "long" },
471+ },
472+ },
473+ },
474+ ],
475+ },
476+ }
434477 benchmark (rust_validator .validate_statement , stmt )
0 commit comments