@@ -536,6 +536,16 @@ def __lt__(self, other):
536536 def __repr__ (self ):
537537 return f"{ self .port !r} :{ self .device_id } "
538538
539+ @property
540+ def repr_for_qarg (self ):
541+ """Object representation for qrexec argument"""
542+ res = repr (self ).replace (":" , "+" )
543+ # replace '?' in category
544+ unknown_dev = repr (DeviceInterface .unknown ())
545+ if res .endswith (unknown_dev ):
546+ res = res [:- len (unknown_dev )] + "_" * len (unknown_dev )
547+ return res .replace ("*" , "_" )
548+
539549 def __str__ (self ):
540550 return f"{ self .port } :{ self .device_id } "
541551
@@ -595,12 +605,21 @@ def _parse(
595605 """
596606 if backend is None :
597607 backend_name , identity = representation .split (sep , 1 )
608+ if backend_name == "_" :
609+ backend_name = "*"
598610 if backend_name != "*" :
599611 backend = get_domain (backend_name )
600612 else :
601613 identity = representation
602614
603- port_id , _ , devid = identity .partition (":" )
615+ port_id , _ , devid = identity .replace (sep , ":" ).partition (":" )
616+ if port_id == "_" :
617+ port_id = "*"
618+ if devid == "_" :
619+ devid = "*"
620+ unknown_dev = repr (DeviceInterface .unknown ())
621+ if devid .endswith ("_" * (len (unknown_dev ))):
622+ devid = devid [:- len (unknown_dev )] + unknown_dev
604623 return cls (
605624 Port (backend_domain = backend , port_id = port_id , devclass = devclass ),
606625 device_id = devid or None ,
@@ -1276,6 +1295,11 @@ def clone(self, **kwargs):
12761295 def __repr__ (self ):
12771296 return f"{ self .virtual_device !r} "
12781297
1298+ @property
1299+ def repr_for_qarg (self ):
1300+ """Object representation for qrexec argument"""
1301+ return self .virtual_device .repr_for_qarg
1302+
12791303 def __str__ (self ):
12801304 return f"{ self .virtual_device } "
12811305
0 commit comments