boulder-opal-scale-up-sdk 1.0.6__py3-none-any.whl → 1.0.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. {boulder_opal_scale_up_sdk-1.0.6.dist-info → boulder_opal_scale_up_sdk-1.0.8.dist-info}/METADATA +4 -6
  2. {boulder_opal_scale_up_sdk-1.0.6.dist-info → boulder_opal_scale_up_sdk-1.0.8.dist-info}/RECORD +46 -39
  3. boulderopalscaleupsdk/common/dtypes.py +36 -10
  4. boulderopalscaleupsdk/device/controller/qblox.py +159 -54
  5. boulderopalscaleupsdk/device/device.py +0 -1
  6. boulderopalscaleupsdk/device/processor/superconducting_processor.py +21 -1
  7. boulderopalscaleupsdk/experiments/chi01_scan.py +1 -1
  8. boulderopalscaleupsdk/experiments/cz_spectroscopy_by_bias.py +29 -48
  9. boulderopalscaleupsdk/experiments/drag_leakage_calibration.py +1 -4
  10. boulderopalscaleupsdk/experiments/fine_amplitude_calibration.py +4 -3
  11. boulderopalscaleupsdk/experiments/power_rabi.py +3 -3
  12. boulderopalscaleupsdk/experiments/power_rabi_ef.py +3 -3
  13. boulderopalscaleupsdk/experiments/ramsey.py +1 -1
  14. boulderopalscaleupsdk/experiments/ramsey_ef.py +1 -1
  15. boulderopalscaleupsdk/experiments/readout_classifier.py +2 -2
  16. boulderopalscaleupsdk/experiments/readout_optimization.py +3 -3
  17. boulderopalscaleupsdk/experiments/resonator_spectroscopy.py +1 -1
  18. boulderopalscaleupsdk/experiments/resonator_spectroscopy_by_bias.py +3 -3
  19. boulderopalscaleupsdk/experiments/resonator_spectroscopy_by_power.py +1 -1
  20. boulderopalscaleupsdk/experiments/t1.py +1 -1
  21. boulderopalscaleupsdk/experiments/t2.py +2 -2
  22. boulderopalscaleupsdk/experiments/t2_echo.py +1 -1
  23. boulderopalscaleupsdk/experiments/transmon_anharmonicity.py +1 -1
  24. boulderopalscaleupsdk/experiments/transmon_spectroscopy.py +2 -2
  25. boulderopalscaleupsdk/experiments/voltage_bias_fine_tune.py +7 -5
  26. boulderopalscaleupsdk/experiments/waveforms.py +15 -0
  27. boulderopalscaleupsdk/experiments/zz_ramsey.py +8 -14
  28. boulderopalscaleupsdk/plotting/dtypes.py +1 -1
  29. boulderopalscaleupsdk/protobuf/v1/device_pb2.py +33 -39
  30. boulderopalscaleupsdk/protobuf/v1/device_pb2.pyi +10 -18
  31. boulderopalscaleupsdk/protobuf/v1/device_pb2_grpc.py +0 -34
  32. boulderopalscaleupsdk/protobuf/v1/resource_pb2.py +40 -0
  33. boulderopalscaleupsdk/protobuf/v1/resource_pb2.pyi +52 -0
  34. boulderopalscaleupsdk/protobuf/v1/resource_pb2_grpc.py +104 -0
  35. boulderopalscaleupsdk/routines/__init__.py +2 -0
  36. boulderopalscaleupsdk/routines/coupler_discovery.py +37 -0
  37. boulderopalscaleupsdk/routines/one_qubit_calibration.py +4 -0
  38. boulderopalscaleupsdk/routines/resonator_mapping.py +1 -1
  39. boulderopalscaleupsdk/routines/transmon_retuning.py +0 -4
  40. boulderopalscaleupsdk/solutions/__init__.py +22 -0
  41. boulderopalscaleupsdk/solutions/common.py +23 -0
  42. boulderopalscaleupsdk/solutions/placeholder_solution.py +28 -0
  43. boulderopalscaleupsdk/third_party/quantum_machines/__init__.py +15 -0
  44. boulderopalscaleupsdk/third_party/quantum_machines/config.py +0 -3
  45. {boulder_opal_scale_up_sdk-1.0.6.dist-info → boulder_opal_scale_up_sdk-1.0.8.dist-info}/LICENSE +0 -0
  46. {boulder_opal_scale_up_sdk-1.0.6.dist-info → boulder_opal_scale_up_sdk-1.0.8.dist-info}/WHEEL +0 -0
@@ -16,7 +16,7 @@ from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
16
16
  from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
17
17
 
18
18
 
19
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.boulderopalscaleupsdk/protobuf/v1/device.proto\x12!boulderopalscaleupsdk.protobuf.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\"b\n\x12SetSnapshotRequest\x12\x1f\n\x0b\x64\x65vice_name\x18\x01 \x01(\tR\ndeviceName\x12+\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x04\x64\x61ta\"P\n\x13SetSnapshotResponse\x12\x1f\n\x0b\x64\x65vice_name\x18\x01 \x01(\tR\ndeviceName\x12\x18\n\x07version\x18\x02 \x01(\x05R\x07version\"O\n\x12GetSnapshotRequest\x12\x1f\n\x0b\x64\x65vice_name\x18\x01 \x01(\tR\ndeviceName\x12\x18\n\x07version\x18\x02 \x01(\x05R\x07version\"B\n\x13GetSnapshotResponse\x12+\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x04\x64\x61ta\"\x85\x01\n\rCreateRequest\x12\x19\n\x08\x61pp_name\x18\x01 \x01(\tR\x07\x61ppName\x12\x1f\n\x0b\x64\x65vice_name\x18\x02 \x01(\tR\ndeviceName\x12\x38\n\x0b\x64\x65vice_data\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\ndeviceData\"$\n\x0e\x43reateResponse\x12\x12\n\x04\x64one\x18\x01 \x01(\x08R\x04\x64one\"]\n\x0b\x43opyRequest\x12(\n\x10\x66rom_device_name\x18\x01 \x01(\tR\x0e\x66romDeviceName\x12$\n\x0eto_device_name\x18\x02 \x01(\tR\x0ctoDeviceName\"\"\n\x0c\x43opyResponse\x12\x12\n\x04\x64one\x18\x01 \x01(\x08R\x04\x64one\"L\n\x0eGetDataRequest\x12\x19\n\x08\x61pp_name\x18\x01 \x01(\tR\x07\x61ppName\x12\x1f\n\x0b\x64\x65vice_name\x18\x02 \x01(\tR\ndeviceName\"\xc6\x01\n\x0fGetDataResponse\x12>\n\x0eprocessor_data\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\rprocessorData\x12@\n\x0f\x63ontroller_data\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x0e\x63ontrollerData\x12\x31\n\x07\x64\x65\x66\x63\x61ls\x18\x04 \x03(\x0b\x32\x17.google.protobuf.StructR\x07\x64\x65\x66\x63\x61ls\"\x8b\x01\n\rUpdateRequest\x12\x19\n\x08\x61pp_name\x18\x01 \x01(\tR\x07\x61ppName\x12\x1f\n\x0b\x64\x65vice_name\x18\x02 \x01(\tR\ndeviceName\x12>\n\x0eprocessor_data\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\rprocessorData\"\x92\x01\n\x0eUpdateResponse\x12>\n\x0eprocessor_data\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\rprocessorData\x12@\n\x0f\x63ontroller_data\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructR\x0e\x63ontrollerData\"K\n\rDeleteRequest\x12\x19\n\x08\x61pp_name\x18\x01 \x01(\tR\x07\x61ppName\x12\x1f\n\x0b\x64\x65vice_name\x18\x02 \x01(\tR\ndeviceName\"$\n\x0e\x44\x65leteResponse\x12\x12\n\x04\x64one\x18\x01 \x01(\x08R\x04\x64one\"5\n\x12GetMetadataRequest\x12\x1f\n\x0b\x64\x65vice_name\x18\x01 \x01(\tR\ndeviceName\"J\n\x13GetMetadataResponse\x12\x33\n\x08metadata\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"\x1e\n\x1cGetAllDevicesMetadataRequest\"V\n\x1dGetAllDevicesMetadataResponse\x12\x35\n\tmetadatas\x18\x01 \x03(\x0b\x32\x17.google.protobuf.StructR\tmetadatas\"\x90\x01\n\x0bMaskRequest\x12\x44\n\x04mode\x18\x01 \x01(\x0e\x32\x30.boulderopalscaleupsdk.protobuf.v1.SelectionModeR\x04mode\x12\x1f\n\x0b\x64\x65vice_name\x18\x02 \x01(\tR\ndeviceName\x12\x1a\n\x08\x65lements\x18\x03 \x03(\tR\x08\x65lements\"\"\n\x0cMaskResponse\x12\x12\n\x04\x64one\x18\x01 \x01(\x08R\x04\x64one\"L\n\rUnmaskRequest\x12\x1f\n\x0b\x64\x65vice_name\x18\x01 \x01(\tR\ndeviceName\x12\x1a\n\x08\x65lements\x18\x02 \x03(\tR\x08\x65lements\"$\n\x0eUnmaskResponse\x12\x12\n\x04\x64one\x18\x01 \x01(\x08R\x04\x64one*a\n\rSelectionMode\x12\x1e\n\x1aSELECTION_MODE_UNSPECIFIED\x10\x00\x12\x18\n\x14SELECTION_MODE_ITEMS\x10\x01\x12\x16\n\x12SELECTION_MODE_ALL\x10\x02\x32\xb8\r\n\x14\x44\x65viceManagerService\x12\x8b\x01\n\x06\x43reate\x12\x30.boulderopalscaleupsdk.protobuf.v1.CreateRequest\x1a\x31.boulderopalscaleupsdk.protobuf.v1.CreateResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/v1/device/create:\x01*\x12\x83\x01\n\x04\x43opy\x12..boulderopalscaleupsdk.protobuf.v1.CopyRequest\x1a/.boulderopalscaleupsdk.protobuf.v1.CopyResponse\"\x1a\x82\xd3\xe4\x93\x02\x14\"\x0f/v1/device/copy:\x01*\x12\x97\x01\n\x07GetData\x12\x31.boulderopalscaleupsdk.protobuf.v1.GetDataRequest\x1a\x32.boulderopalscaleupsdk.protobuf.v1.GetDataResponse\"%\x82\xd3\xe4\x93\x02\x1f\"\x1a/v1/device/get_device_data:\x01*\x12\x8b\x01\n\x06Update\x12\x30.boulderopalscaleupsdk.protobuf.v1.UpdateRequest\x1a\x31.boulderopalscaleupsdk.protobuf.v1.UpdateResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/v1/device/update:\x01*\x12\x83\x01\n\x04Mask\x12..boulderopalscaleupsdk.protobuf.v1.MaskRequest\x1a/.boulderopalscaleupsdk.protobuf.v1.MaskResponse\"\x1a\x82\xd3\xe4\x93\x02\x14\"\x0f/v1/device/mask:\x01*\x12\x8b\x01\n\x06Unmask\x12\x30.boulderopalscaleupsdk.protobuf.v1.UnmaskRequest\x1a\x31.boulderopalscaleupsdk.protobuf.v1.UnmaskResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/v1/device/unmask:\x01*\x12\x8b\x01\n\x06\x44\x65lete\x12\x30.boulderopalscaleupsdk.protobuf.v1.DeleteRequest\x1a\x31.boulderopalscaleupsdk.protobuf.v1.DeleteResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/v1/device/delete:\x01*\x12\xa7\x01\n\x0bGetMetadata\x12\x35.boulderopalscaleupsdk.protobuf.v1.GetMetadataRequest\x1a\x36.boulderopalscaleupsdk.protobuf.v1.GetMetadataResponse\")\x82\xd3\xe4\x93\x02#\"\x1e/v1/device/get_device_metadata:\x01*\x12\xd1\x01\n\x15GetAllDevicesMetadata\x12?.boulderopalscaleupsdk.protobuf.v1.GetAllDevicesMetadataRequest\x1a@.boulderopalscaleupsdk.protobuf.v1.GetAllDevicesMetadataResponse\"5\x82\xd3\xe4\x93\x02/\"*/v1/device/get_all_devices_metadata_by_org:\x01*\x12\xa0\x01\n\x0bGetSnapshot\x12\x35.boulderopalscaleupsdk.protobuf.v1.GetSnapshotRequest\x1a\x36.boulderopalscaleupsdk.protobuf.v1.GetSnapshotResponse\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/v1/device/get_snapshot:\x01*\x12\xa0\x01\n\x0bSetSnapshot\x12\x35.boulderopalscaleupsdk.protobuf.v1.SetSnapshotRequest\x1a\x36.boulderopalscaleupsdk.protobuf.v1.SetSnapshotResponse\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/v1/device/set_snapshot:\x01*B\xaa\x02\n%com.boulderopalscaleupsdk.protobuf.v1B\x0b\x44\x65viceProtoP\x01ZNgithub.com/qctrl/boulder-opal-scale-up/proto/boulderopalscaleupsdk/protobuf/v1\xa2\x02\x03\x42PX\xaa\x02!Boulderopalscaleupsdk.Protobuf.V1\xca\x02!Boulderopalscaleupsdk\\Protobuf\\V1\xe2\x02-Boulderopalscaleupsdk\\Protobuf\\V1\\GPBMetadata\xea\x02#Boulderopalscaleupsdk::Protobuf::V1b\x06proto3')
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.boulderopalscaleupsdk/protobuf/v1/device.proto\x12!boulderopalscaleupsdk.protobuf.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\"b\n\x12SetSnapshotRequest\x12\x1f\n\x0b\x64\x65vice_name\x18\x01 \x01(\tR\ndeviceName\x12+\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x04\x64\x61ta\"P\n\x13SetSnapshotResponse\x12\x1f\n\x0b\x64\x65vice_name\x18\x01 \x01(\tR\ndeviceName\x12\x18\n\x07version\x18\x02 \x01(\x05R\x07version\"O\n\x12GetSnapshotRequest\x12\x1f\n\x0b\x64\x65vice_name\x18\x01 \x01(\tR\ndeviceName\x12\x18\n\x07version\x18\x02 \x01(\x05R\x07version\"B\n\x13GetSnapshotResponse\x12+\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x04\x64\x61ta\"\x85\x01\n\rCreateRequest\x12\x19\n\x08\x61pp_name\x18\x01 \x01(\tR\x07\x61ppName\x12\x1f\n\x0b\x64\x65vice_name\x18\x02 \x01(\tR\ndeviceName\x12\x38\n\x0b\x64\x65vice_data\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\ndeviceData\"$\n\x0e\x43reateResponse\x12\x12\n\x04\x64one\x18\x01 \x01(\x08R\x04\x64one\"L\n\x0eGetDataRequest\x12\x19\n\x08\x61pp_name\x18\x01 \x01(\tR\x07\x61ppName\x12\x1f\n\x0b\x64\x65vice_name\x18\x02 \x01(\tR\ndeviceName\"\xc6\x01\n\x0fGetDataResponse\x12>\n\x0eprocessor_data\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\rprocessorData\x12@\n\x0f\x63ontroller_data\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x0e\x63ontrollerData\x12\x31\n\x07\x64\x65\x66\x63\x61ls\x18\x04 \x03(\x0b\x32\x17.google.protobuf.StructR\x07\x64\x65\x66\x63\x61ls\"\x8b\x01\n\rUpdateRequest\x12\x19\n\x08\x61pp_name\x18\x01 \x01(\tR\x07\x61ppName\x12\x1f\n\x0b\x64\x65vice_name\x18\x02 \x01(\tR\ndeviceName\x12>\n\x0eprocessor_data\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\rprocessorData\"\x92\x01\n\x0eUpdateResponse\x12>\n\x0eprocessor_data\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\rprocessorData\x12@\n\x0f\x63ontroller_data\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructR\x0e\x63ontrollerData\"K\n\rDeleteRequest\x12\x19\n\x08\x61pp_name\x18\x01 \x01(\tR\x07\x61ppName\x12\x1f\n\x0b\x64\x65vice_name\x18\x02 \x01(\tR\ndeviceName\"$\n\x0e\x44\x65leteResponse\x12\x12\n\x04\x64one\x18\x01 \x01(\x08R\x04\x64one\"5\n\x12GetMetadataRequest\x12\x1f\n\x0b\x64\x65vice_name\x18\x01 \x01(\tR\ndeviceName\"J\n\x13GetMetadataResponse\x12\x33\n\x08metadata\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"U\n\x1cGetAllDevicesMetadataRequest\x12\x14\n\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x1f\n\x0bnext_cursor\x18\x02 \x01(\tR\nnextCursor\"w\n\x1dGetAllDevicesMetadataResponse\x12\x35\n\tmetadatas\x18\x01 \x03(\x0b\x32\x17.google.protobuf.StructR\tmetadatas\x12\x1f\n\x0bnext_cursor\x18\x02 \x01(\tR\nnextCursor\"\x90\x01\n\x0bMaskRequest\x12\x44\n\x04mode\x18\x01 \x01(\x0e\x32\x30.boulderopalscaleupsdk.protobuf.v1.SelectionModeR\x04mode\x12\x1f\n\x0b\x64\x65vice_name\x18\x02 \x01(\tR\ndeviceName\x12\x1a\n\x08\x65lements\x18\x03 \x03(\tR\x08\x65lements\"\"\n\x0cMaskResponse\x12\x12\n\x04\x64one\x18\x01 \x01(\x08R\x04\x64one\"L\n\rUnmaskRequest\x12\x1f\n\x0b\x64\x65vice_name\x18\x01 \x01(\tR\ndeviceName\x12\x1a\n\x08\x65lements\x18\x02 \x03(\tR\x08\x65lements\"$\n\x0eUnmaskResponse\x12\x12\n\x04\x64one\x18\x01 \x01(\x08R\x04\x64one*a\n\rSelectionMode\x12\x1e\n\x1aSELECTION_MODE_UNSPECIFIED\x10\x00\x12\x18\n\x14SELECTION_MODE_ITEMS\x10\x01\x12\x16\n\x12SELECTION_MODE_ALL\x10\x02\x32\xb2\x0c\n\x14\x44\x65viceManagerService\x12\x8b\x01\n\x06\x43reate\x12\x30.boulderopalscaleupsdk.protobuf.v1.CreateRequest\x1a\x31.boulderopalscaleupsdk.protobuf.v1.CreateResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/v1/device/create:\x01*\x12\x97\x01\n\x07GetData\x12\x31.boulderopalscaleupsdk.protobuf.v1.GetDataRequest\x1a\x32.boulderopalscaleupsdk.protobuf.v1.GetDataResponse\"%\x82\xd3\xe4\x93\x02\x1f\"\x1a/v1/device/get_device_data:\x01*\x12\x8b\x01\n\x06Update\x12\x30.boulderopalscaleupsdk.protobuf.v1.UpdateRequest\x1a\x31.boulderopalscaleupsdk.protobuf.v1.UpdateResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/v1/device/update:\x01*\x12\x83\x01\n\x04Mask\x12..boulderopalscaleupsdk.protobuf.v1.MaskRequest\x1a/.boulderopalscaleupsdk.protobuf.v1.MaskResponse\"\x1a\x82\xd3\xe4\x93\x02\x14\"\x0f/v1/device/mask:\x01*\x12\x8b\x01\n\x06Unmask\x12\x30.boulderopalscaleupsdk.protobuf.v1.UnmaskRequest\x1a\x31.boulderopalscaleupsdk.protobuf.v1.UnmaskResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/v1/device/unmask:\x01*\x12\x8b\x01\n\x06\x44\x65lete\x12\x30.boulderopalscaleupsdk.protobuf.v1.DeleteRequest\x1a\x31.boulderopalscaleupsdk.protobuf.v1.DeleteResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/v1/device/delete:\x01*\x12\xa7\x01\n\x0bGetMetadata\x12\x35.boulderopalscaleupsdk.protobuf.v1.GetMetadataRequest\x1a\x36.boulderopalscaleupsdk.protobuf.v1.GetMetadataResponse\")\x82\xd3\xe4\x93\x02#\"\x1e/v1/device/get_device_metadata:\x01*\x12\xd1\x01\n\x15GetAllDevicesMetadata\x12?.boulderopalscaleupsdk.protobuf.v1.GetAllDevicesMetadataRequest\x1a@.boulderopalscaleupsdk.protobuf.v1.GetAllDevicesMetadataResponse\"5\x82\xd3\xe4\x93\x02/\"*/v1/device/get_all_devices_metadata_by_org:\x01*\x12\xa0\x01\n\x0bGetSnapshot\x12\x35.boulderopalscaleupsdk.protobuf.v1.GetSnapshotRequest\x1a\x36.boulderopalscaleupsdk.protobuf.v1.GetSnapshotResponse\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/v1/device/get_snapshot:\x01*\x12\xa0\x01\n\x0bSetSnapshot\x12\x35.boulderopalscaleupsdk.protobuf.v1.SetSnapshotRequest\x1a\x36.boulderopalscaleupsdk.protobuf.v1.SetSnapshotResponse\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/v1/device/set_snapshot:\x01*B\xaa\x02\n%com.boulderopalscaleupsdk.protobuf.v1B\x0b\x44\x65viceProtoP\x01ZNgithub.com/qctrl/boulder-opal-scale-up/proto/boulderopalscaleupsdk/protobuf/v1\xa2\x02\x03\x42PX\xaa\x02!Boulderopalscaleupsdk.Protobuf.V1\xca\x02!Boulderopalscaleupsdk\\Protobuf\\V1\xe2\x02-Boulderopalscaleupsdk\\Protobuf\\V1\\GPBMetadata\xea\x02#Boulderopalscaleupsdk::Protobuf::V1b\x06proto3')
20
20
 
21
21
  _globals = globals()
22
22
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -26,8 +26,6 @@ if not _descriptor._USE_C_DESCRIPTORS:
26
26
  _globals['DESCRIPTOR']._serialized_options = b'\n%com.boulderopalscaleupsdk.protobuf.v1B\013DeviceProtoP\001ZNgithub.com/qctrl/boulder-opal-scale-up/proto/boulderopalscaleupsdk/protobuf/v1\242\002\003BPX\252\002!Boulderopalscaleupsdk.Protobuf.V1\312\002!Boulderopalscaleupsdk\\Protobuf\\V1\342\002-Boulderopalscaleupsdk\\Protobuf\\V1\\GPBMetadata\352\002#Boulderopalscaleupsdk::Protobuf::V1'
27
27
  _globals['_DEVICEMANAGERSERVICE'].methods_by_name['Create']._loaded_options = None
28
28
  _globals['_DEVICEMANAGERSERVICE'].methods_by_name['Create']._serialized_options = b'\202\323\344\223\002\026\"\021/v1/device/create:\001*'
29
- _globals['_DEVICEMANAGERSERVICE'].methods_by_name['Copy']._loaded_options = None
30
- _globals['_DEVICEMANAGERSERVICE'].methods_by_name['Copy']._serialized_options = b'\202\323\344\223\002\024\"\017/v1/device/copy:\001*'
31
29
  _globals['_DEVICEMANAGERSERVICE'].methods_by_name['GetData']._loaded_options = None
32
30
  _globals['_DEVICEMANAGERSERVICE'].methods_by_name['GetData']._serialized_options = b'\202\323\344\223\002\037\"\032/v1/device/get_device_data:\001*'
33
31
  _globals['_DEVICEMANAGERSERVICE'].methods_by_name['Update']._loaded_options = None
@@ -46,8 +44,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
46
44
  _globals['_DEVICEMANAGERSERVICE'].methods_by_name['GetSnapshot']._serialized_options = b'\202\323\344\223\002\034\"\027/v1/device/get_snapshot:\001*'
47
45
  _globals['_DEVICEMANAGERSERVICE'].methods_by_name['SetSnapshot']._loaded_options = None
48
46
  _globals['_DEVICEMANAGERSERVICE'].methods_by_name['SetSnapshot']._serialized_options = b'\202\323\344\223\002\034\"\027/v1/device/set_snapshot:\001*'
49
- _globals['_SELECTIONMODE']._serialized_start=2016
50
- _globals['_SELECTIONMODE']._serialized_end=2113
47
+ _globals['_SELECTIONMODE']._serialized_start=1973
48
+ _globals['_SELECTIONMODE']._serialized_end=2070
51
49
  _globals['_SETSNAPSHOTREQUEST']._serialized_start=145
52
50
  _globals['_SETSNAPSHOTREQUEST']._serialized_end=243
53
51
  _globals['_SETSNAPSHOTRESPONSE']._serialized_start=245
@@ -60,38 +58,34 @@ if not _descriptor._USE_C_DESCRIPTORS:
60
58
  _globals['_CREATEREQUEST']._serialized_end=610
61
59
  _globals['_CREATERESPONSE']._serialized_start=612
62
60
  _globals['_CREATERESPONSE']._serialized_end=648
63
- _globals['_COPYREQUEST']._serialized_start=650
64
- _globals['_COPYREQUEST']._serialized_end=743
65
- _globals['_COPYRESPONSE']._serialized_start=745
66
- _globals['_COPYRESPONSE']._serialized_end=779
67
- _globals['_GETDATAREQUEST']._serialized_start=781
68
- _globals['_GETDATAREQUEST']._serialized_end=857
69
- _globals['_GETDATARESPONSE']._serialized_start=860
70
- _globals['_GETDATARESPONSE']._serialized_end=1058
71
- _globals['_UPDATEREQUEST']._serialized_start=1061
72
- _globals['_UPDATEREQUEST']._serialized_end=1200
73
- _globals['_UPDATERESPONSE']._serialized_start=1203
74
- _globals['_UPDATERESPONSE']._serialized_end=1349
75
- _globals['_DELETEREQUEST']._serialized_start=1351
76
- _globals['_DELETEREQUEST']._serialized_end=1426
77
- _globals['_DELETERESPONSE']._serialized_start=1428
78
- _globals['_DELETERESPONSE']._serialized_end=1464
79
- _globals['_GETMETADATAREQUEST']._serialized_start=1466
80
- _globals['_GETMETADATAREQUEST']._serialized_end=1519
81
- _globals['_GETMETADATARESPONSE']._serialized_start=1521
82
- _globals['_GETMETADATARESPONSE']._serialized_end=1595
83
- _globals['_GETALLDEVICESMETADATAREQUEST']._serialized_start=1597
84
- _globals['_GETALLDEVICESMETADATAREQUEST']._serialized_end=1627
85
- _globals['_GETALLDEVICESMETADATARESPONSE']._serialized_start=1629
86
- _globals['_GETALLDEVICESMETADATARESPONSE']._serialized_end=1715
87
- _globals['_MASKREQUEST']._serialized_start=1718
88
- _globals['_MASKREQUEST']._serialized_end=1862
89
- _globals['_MASKRESPONSE']._serialized_start=1864
90
- _globals['_MASKRESPONSE']._serialized_end=1898
91
- _globals['_UNMASKREQUEST']._serialized_start=1900
92
- _globals['_UNMASKREQUEST']._serialized_end=1976
93
- _globals['_UNMASKRESPONSE']._serialized_start=1978
94
- _globals['_UNMASKRESPONSE']._serialized_end=2014
95
- _globals['_DEVICEMANAGERSERVICE']._serialized_start=2116
96
- _globals['_DEVICEMANAGERSERVICE']._serialized_end=3836
61
+ _globals['_GETDATAREQUEST']._serialized_start=650
62
+ _globals['_GETDATAREQUEST']._serialized_end=726
63
+ _globals['_GETDATARESPONSE']._serialized_start=729
64
+ _globals['_GETDATARESPONSE']._serialized_end=927
65
+ _globals['_UPDATEREQUEST']._serialized_start=930
66
+ _globals['_UPDATEREQUEST']._serialized_end=1069
67
+ _globals['_UPDATERESPONSE']._serialized_start=1072
68
+ _globals['_UPDATERESPONSE']._serialized_end=1218
69
+ _globals['_DELETEREQUEST']._serialized_start=1220
70
+ _globals['_DELETEREQUEST']._serialized_end=1295
71
+ _globals['_DELETERESPONSE']._serialized_start=1297
72
+ _globals['_DELETERESPONSE']._serialized_end=1333
73
+ _globals['_GETMETADATAREQUEST']._serialized_start=1335
74
+ _globals['_GETMETADATAREQUEST']._serialized_end=1388
75
+ _globals['_GETMETADATARESPONSE']._serialized_start=1390
76
+ _globals['_GETMETADATARESPONSE']._serialized_end=1464
77
+ _globals['_GETALLDEVICESMETADATAREQUEST']._serialized_start=1466
78
+ _globals['_GETALLDEVICESMETADATAREQUEST']._serialized_end=1551
79
+ _globals['_GETALLDEVICESMETADATARESPONSE']._serialized_start=1553
80
+ _globals['_GETALLDEVICESMETADATARESPONSE']._serialized_end=1672
81
+ _globals['_MASKREQUEST']._serialized_start=1675
82
+ _globals['_MASKREQUEST']._serialized_end=1819
83
+ _globals['_MASKRESPONSE']._serialized_start=1821
84
+ _globals['_MASKRESPONSE']._serialized_end=1855
85
+ _globals['_UNMASKREQUEST']._serialized_start=1857
86
+ _globals['_UNMASKREQUEST']._serialized_end=1933
87
+ _globals['_UNMASKRESPONSE']._serialized_start=1935
88
+ _globals['_UNMASKRESPONSE']._serialized_end=1971
89
+ _globals['_DEVICEMANAGERSERVICE']._serialized_start=2073
90
+ _globals['_DEVICEMANAGERSERVICE']._serialized_end=3659
97
91
  # @@protoc_insertion_point(module_scope)
@@ -63,20 +63,6 @@ class CreateResponse(_message.Message):
63
63
  done: bool
64
64
  def __init__(self, done: bool = ...) -> None: ...
65
65
 
66
- class CopyRequest(_message.Message):
67
- __slots__ = ("from_device_name", "to_device_name")
68
- FROM_DEVICE_NAME_FIELD_NUMBER: _ClassVar[int]
69
- TO_DEVICE_NAME_FIELD_NUMBER: _ClassVar[int]
70
- from_device_name: str
71
- to_device_name: str
72
- def __init__(self, from_device_name: _Optional[str] = ..., to_device_name: _Optional[str] = ...) -> None: ...
73
-
74
- class CopyResponse(_message.Message):
75
- __slots__ = ("done",)
76
- DONE_FIELD_NUMBER: _ClassVar[int]
77
- done: bool
78
- def __init__(self, done: bool = ...) -> None: ...
79
-
80
66
  class GetDataRequest(_message.Message):
81
67
  __slots__ = ("app_name", "device_name")
82
68
  APP_NAME_FIELD_NUMBER: _ClassVar[int]
@@ -140,14 +126,20 @@ class GetMetadataResponse(_message.Message):
140
126
  def __init__(self, metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ...
141
127
 
142
128
  class GetAllDevicesMetadataRequest(_message.Message):
143
- __slots__ = ()
144
- def __init__(self) -> None: ...
129
+ __slots__ = ("limit", "next_cursor")
130
+ LIMIT_FIELD_NUMBER: _ClassVar[int]
131
+ NEXT_CURSOR_FIELD_NUMBER: _ClassVar[int]
132
+ limit: int
133
+ next_cursor: str
134
+ def __init__(self, limit: _Optional[int] = ..., next_cursor: _Optional[str] = ...) -> None: ...
145
135
 
146
136
  class GetAllDevicesMetadataResponse(_message.Message):
147
- __slots__ = ("metadatas",)
137
+ __slots__ = ("metadatas", "next_cursor")
148
138
  METADATAS_FIELD_NUMBER: _ClassVar[int]
139
+ NEXT_CURSOR_FIELD_NUMBER: _ClassVar[int]
149
140
  metadatas: _containers.RepeatedCompositeFieldContainer[_struct_pb2.Struct]
150
- def __init__(self, metadatas: _Optional[_Iterable[_Union[_struct_pb2.Struct, _Mapping]]] = ...) -> None: ...
141
+ next_cursor: str
142
+ def __init__(self, metadatas: _Optional[_Iterable[_Union[_struct_pb2.Struct, _Mapping]]] = ..., next_cursor: _Optional[str] = ...) -> None: ...
151
143
 
152
144
  class MaskRequest(_message.Message):
153
145
  __slots__ = ("mode", "device_name", "elements")
@@ -20,11 +20,6 @@ class DeviceManagerServiceStub(object):
20
20
  request_serializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_device__pb2.CreateRequest.SerializeToString,
21
21
  response_deserializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_device__pb2.CreateResponse.FromString,
22
22
  )
23
- self.Copy = channel.unary_unary(
24
- '/boulderopalscaleupsdk.protobuf.v1.DeviceManagerService/Copy',
25
- request_serializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_device__pb2.CopyRequest.SerializeToString,
26
- response_deserializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_device__pb2.CopyResponse.FromString,
27
- )
28
23
  self.GetData = channel.unary_unary(
29
24
  '/boulderopalscaleupsdk.protobuf.v1.DeviceManagerService/GetData',
30
25
  request_serializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_device__pb2.GetDataRequest.SerializeToString,
@@ -83,13 +78,6 @@ class DeviceManagerServiceServicer(object):
83
78
  context.set_details('Method not implemented!')
84
79
  raise NotImplementedError('Method not implemented!')
85
80
 
86
- def Copy(self, request, context):
87
- """Make a copy of an existing device with a new name
88
- """
89
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
90
- context.set_details('Method not implemented!')
91
- raise NotImplementedError('Method not implemented!')
92
-
93
81
  def GetData(self, request, context):
94
82
  """Retrieve the device and controller states.
95
83
  """
@@ -161,11 +149,6 @@ def add_DeviceManagerServiceServicer_to_server(servicer, server):
161
149
  request_deserializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_device__pb2.CreateRequest.FromString,
162
150
  response_serializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_device__pb2.CreateResponse.SerializeToString,
163
151
  ),
164
- 'Copy': grpc.unary_unary_rpc_method_handler(
165
- servicer.Copy,
166
- request_deserializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_device__pb2.CopyRequest.FromString,
167
- response_serializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_device__pb2.CopyResponse.SerializeToString,
168
- ),
169
152
  'GetData': grpc.unary_unary_rpc_method_handler(
170
153
  servicer.GetData,
171
154
  request_deserializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_device__pb2.GetDataRequest.FromString,
@@ -239,23 +222,6 @@ class DeviceManagerService(object):
239
222
  options, channel_credentials,
240
223
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
241
224
 
242
- @staticmethod
243
- def Copy(request,
244
- target,
245
- options=(),
246
- channel_credentials=None,
247
- call_credentials=None,
248
- insecure=False,
249
- compression=None,
250
- wait_for_ready=None,
251
- timeout=None,
252
- metadata=None):
253
- return grpc.experimental.unary_unary(request, target, '/boulderopalscaleupsdk.protobuf.v1.DeviceManagerService/Copy',
254
- boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_device__pb2.CopyRequest.SerializeToString,
255
- boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_device__pb2.CopyResponse.FromString,
256
- options, channel_credentials,
257
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
258
-
259
225
  @staticmethod
260
226
  def GetData(request,
261
227
  target,
@@ -0,0 +1,40 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: boulderopalscaleupsdk/protobuf/v1/resource.proto
4
+ # Protobuf Python Version: 5.26.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
16
+
17
+
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n0boulderopalscaleupsdk/protobuf/v1/resource.proto\x12!boulderopalscaleupsdk.protobuf.v1\x1a\x1cgoogle/api/annotations.proto\"{\n\x0e\x41\x63quireRequest\x12#\n\rresource_name\x18\x01 \x01(\tR\x0cresourceName\x12!\n\x0cresource_key\x18\x02 \x01(\tR\x0bresourceKey\x12!\n\x0cprincipal_id\x18\x03 \x01(\tR\x0bprincipalId\"\x9e\x01\n\x0f\x41\x63quireResponse\x12\x1f\n\x0b\x61\x63quired_by\x18\x01 \x01(\tR\nacquiredBy\x12(\n\x10\x61\x63quired_by_name\x18\x02 \x01(\tR\x0e\x61\x63quiredByName\x12\x1f\n\x0b\x61\x63quired_at\x18\x03 \x01(\tR\nacquiredAt\x12\x1f\n\x0bretry_after\x18\x04 \x01(\x05R\nretryAfter\"\xb9\x01\n\x0eReleaseRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x1c\n\tprincipal\x18\x02 \x01(\tR\tprincipal\x12\x1b\n\tissued_at\x18\x03 \x01(\tR\x08issuedAt\x12\x1d\n\nexpires_at\x18\x04 \x01(\tR\texpiresAt\x12\x1a\n\x08resource\x18\x05 \x01(\tR\x08resource\x12!\n\x0cresource_key\x18\x06 \x01(\tR\x0bresourceKey\"A\n\x0fReleaseResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12\x14\n\x05\x65rror\x18\x02 \x01(\tR\x05\x65rror2\xc0\x02\n\x16ResourceManagerService\x12\x91\x01\n\x07\x41\x63quire\x12\x31.boulderopalscaleupsdk.protobuf.v1.AcquireRequest\x1a\x32.boulderopalscaleupsdk.protobuf.v1.AcquireResponse\"\x1f\x82\xd3\xe4\x93\x02\x19\"\x14/v1/resource/acquire:\x01*\x12\x91\x01\n\x07Release\x12\x31.boulderopalscaleupsdk.protobuf.v1.ReleaseRequest\x1a\x32.boulderopalscaleupsdk.protobuf.v1.ReleaseResponse\"\x1f\x82\xd3\xe4\x93\x02\x19\"\x14/v1/resource/release:\x01*B\xac\x02\n%com.boulderopalscaleupsdk.protobuf.v1B\rResourceProtoP\x01ZNgithub.com/qctrl/boulder-opal-scale-up/proto/boulderopalscaleupsdk/protobuf/v1\xa2\x02\x03\x42PX\xaa\x02!Boulderopalscaleupsdk.Protobuf.V1\xca\x02!Boulderopalscaleupsdk\\Protobuf\\V1\xe2\x02-Boulderopalscaleupsdk\\Protobuf\\V1\\GPBMetadata\xea\x02#Boulderopalscaleupsdk::Protobuf::V1b\x06proto3')
19
+
20
+ _globals = globals()
21
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'boulderopalscaleupsdk.protobuf.v1.resource_pb2', _globals)
23
+ if not _descriptor._USE_C_DESCRIPTORS:
24
+ _globals['DESCRIPTOR']._loaded_options = None
25
+ _globals['DESCRIPTOR']._serialized_options = b'\n%com.boulderopalscaleupsdk.protobuf.v1B\rResourceProtoP\001ZNgithub.com/qctrl/boulder-opal-scale-up/proto/boulderopalscaleupsdk/protobuf/v1\242\002\003BPX\252\002!Boulderopalscaleupsdk.Protobuf.V1\312\002!Boulderopalscaleupsdk\\Protobuf\\V1\342\002-Boulderopalscaleupsdk\\Protobuf\\V1\\GPBMetadata\352\002#Boulderopalscaleupsdk::Protobuf::V1'
26
+ _globals['_RESOURCEMANAGERSERVICE'].methods_by_name['Acquire']._loaded_options = None
27
+ _globals['_RESOURCEMANAGERSERVICE'].methods_by_name['Acquire']._serialized_options = b'\202\323\344\223\002\031\"\024/v1/resource/acquire:\001*'
28
+ _globals['_RESOURCEMANAGERSERVICE'].methods_by_name['Release']._loaded_options = None
29
+ _globals['_RESOURCEMANAGERSERVICE'].methods_by_name['Release']._serialized_options = b'\202\323\344\223\002\031\"\024/v1/resource/release:\001*'
30
+ _globals['_ACQUIREREQUEST']._serialized_start=117
31
+ _globals['_ACQUIREREQUEST']._serialized_end=240
32
+ _globals['_ACQUIRERESPONSE']._serialized_start=243
33
+ _globals['_ACQUIRERESPONSE']._serialized_end=401
34
+ _globals['_RELEASEREQUEST']._serialized_start=404
35
+ _globals['_RELEASEREQUEST']._serialized_end=589
36
+ _globals['_RELEASERESPONSE']._serialized_start=591
37
+ _globals['_RELEASERESPONSE']._serialized_end=656
38
+ _globals['_RESOURCEMANAGERSERVICE']._serialized_start=659
39
+ _globals['_RESOURCEMANAGERSERVICE']._serialized_end=979
40
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,52 @@
1
+ from google.api import annotations_pb2 as _annotations_pb2
2
+ from google.protobuf import descriptor as _descriptor
3
+ from google.protobuf import message as _message
4
+ from typing import ClassVar as _ClassVar, Optional as _Optional
5
+
6
+ DESCRIPTOR: _descriptor.FileDescriptor
7
+
8
+ class AcquireRequest(_message.Message):
9
+ __slots__ = ("resource_name", "resource_key", "principal_id")
10
+ RESOURCE_NAME_FIELD_NUMBER: _ClassVar[int]
11
+ RESOURCE_KEY_FIELD_NUMBER: _ClassVar[int]
12
+ PRINCIPAL_ID_FIELD_NUMBER: _ClassVar[int]
13
+ resource_name: str
14
+ resource_key: str
15
+ principal_id: str
16
+ def __init__(self, resource_name: _Optional[str] = ..., resource_key: _Optional[str] = ..., principal_id: _Optional[str] = ...) -> None: ...
17
+
18
+ class AcquireResponse(_message.Message):
19
+ __slots__ = ("acquired_by", "acquired_by_name", "acquired_at", "retry_after")
20
+ ACQUIRED_BY_FIELD_NUMBER: _ClassVar[int]
21
+ ACQUIRED_BY_NAME_FIELD_NUMBER: _ClassVar[int]
22
+ ACQUIRED_AT_FIELD_NUMBER: _ClassVar[int]
23
+ RETRY_AFTER_FIELD_NUMBER: _ClassVar[int]
24
+ acquired_by: str
25
+ acquired_by_name: str
26
+ acquired_at: str
27
+ retry_after: int
28
+ def __init__(self, acquired_by: _Optional[str] = ..., acquired_by_name: _Optional[str] = ..., acquired_at: _Optional[str] = ..., retry_after: _Optional[int] = ...) -> None: ...
29
+
30
+ class ReleaseRequest(_message.Message):
31
+ __slots__ = ("id", "principal", "issued_at", "expires_at", "resource", "resource_key")
32
+ ID_FIELD_NUMBER: _ClassVar[int]
33
+ PRINCIPAL_FIELD_NUMBER: _ClassVar[int]
34
+ ISSUED_AT_FIELD_NUMBER: _ClassVar[int]
35
+ EXPIRES_AT_FIELD_NUMBER: _ClassVar[int]
36
+ RESOURCE_FIELD_NUMBER: _ClassVar[int]
37
+ RESOURCE_KEY_FIELD_NUMBER: _ClassVar[int]
38
+ id: str
39
+ principal: str
40
+ issued_at: str
41
+ expires_at: str
42
+ resource: str
43
+ resource_key: str
44
+ def __init__(self, id: _Optional[str] = ..., principal: _Optional[str] = ..., issued_at: _Optional[str] = ..., expires_at: _Optional[str] = ..., resource: _Optional[str] = ..., resource_key: _Optional[str] = ...) -> None: ...
45
+
46
+ class ReleaseResponse(_message.Message):
47
+ __slots__ = ("success", "error")
48
+ SUCCESS_FIELD_NUMBER: _ClassVar[int]
49
+ ERROR_FIELD_NUMBER: _ClassVar[int]
50
+ success: bool
51
+ error: str
52
+ def __init__(self, success: bool = ..., error: _Optional[str] = ...) -> None: ...
@@ -0,0 +1,104 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
5
+ from boulderopalscaleupsdk.protobuf.v1 import resource_pb2 as boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_resource__pb2
6
+
7
+
8
+ class ResourceManagerServiceStub(object):
9
+ """Resource manager service.
10
+ """
11
+
12
+ def __init__(self, channel):
13
+ """Constructor.
14
+
15
+ Args:
16
+ channel: A grpc.Channel.
17
+ """
18
+ self.Acquire = channel.unary_unary(
19
+ '/boulderopalscaleupsdk.protobuf.v1.ResourceManagerService/Acquire',
20
+ request_serializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_resource__pb2.AcquireRequest.SerializeToString,
21
+ response_deserializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_resource__pb2.AcquireResponse.FromString,
22
+ )
23
+ self.Release = channel.unary_unary(
24
+ '/boulderopalscaleupsdk.protobuf.v1.ResourceManagerService/Release',
25
+ request_serializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_resource__pb2.ReleaseRequest.SerializeToString,
26
+ response_deserializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_resource__pb2.ReleaseResponse.FromString,
27
+ )
28
+
29
+
30
+ class ResourceManagerServiceServicer(object):
31
+ """Resource manager service.
32
+ """
33
+
34
+ def Acquire(self, request, context):
35
+ """Acquire access to the given resource.
36
+ """
37
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
38
+ context.set_details('Method not implemented!')
39
+ raise NotImplementedError('Method not implemented!')
40
+
41
+ def Release(self, request, context):
42
+ """Release access to the given resource.
43
+ """
44
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
45
+ context.set_details('Method not implemented!')
46
+ raise NotImplementedError('Method not implemented!')
47
+
48
+
49
+ def add_ResourceManagerServiceServicer_to_server(servicer, server):
50
+ rpc_method_handlers = {
51
+ 'Acquire': grpc.unary_unary_rpc_method_handler(
52
+ servicer.Acquire,
53
+ request_deserializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_resource__pb2.AcquireRequest.FromString,
54
+ response_serializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_resource__pb2.AcquireResponse.SerializeToString,
55
+ ),
56
+ 'Release': grpc.unary_unary_rpc_method_handler(
57
+ servicer.Release,
58
+ request_deserializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_resource__pb2.ReleaseRequest.FromString,
59
+ response_serializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_resource__pb2.ReleaseResponse.SerializeToString,
60
+ ),
61
+ }
62
+ generic_handler = grpc.method_handlers_generic_handler(
63
+ 'boulderopalscaleupsdk.protobuf.v1.ResourceManagerService', rpc_method_handlers)
64
+ server.add_generic_rpc_handlers((generic_handler,))
65
+
66
+
67
+ # This class is part of an EXPERIMENTAL API.
68
+ class ResourceManagerService(object):
69
+ """Resource manager service.
70
+ """
71
+
72
+ @staticmethod
73
+ def Acquire(request,
74
+ target,
75
+ options=(),
76
+ channel_credentials=None,
77
+ call_credentials=None,
78
+ insecure=False,
79
+ compression=None,
80
+ wait_for_ready=None,
81
+ timeout=None,
82
+ metadata=None):
83
+ return grpc.experimental.unary_unary(request, target, '/boulderopalscaleupsdk.protobuf.v1.ResourceManagerService/Acquire',
84
+ boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_resource__pb2.AcquireRequest.SerializeToString,
85
+ boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_resource__pb2.AcquireResponse.FromString,
86
+ options, channel_credentials,
87
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
88
+
89
+ @staticmethod
90
+ def Release(request,
91
+ target,
92
+ options=(),
93
+ channel_credentials=None,
94
+ call_credentials=None,
95
+ insecure=False,
96
+ compression=None,
97
+ wait_for_ready=None,
98
+ timeout=None,
99
+ metadata=None):
100
+ return grpc.experimental.unary_unary(request, target, '/boulderopalscaleupsdk.protobuf.v1.ResourceManagerService/Release',
101
+ boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_resource__pb2.ReleaseRequest.SerializeToString,
102
+ boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_resource__pb2.ReleaseResponse.FromString,
103
+ options, channel_credentials,
104
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -14,6 +14,7 @@
14
14
  """Routine library."""
15
15
 
16
16
  __all__ = [
17
+ "CouplerDiscovery",
17
18
  "OneQubitCalibration",
18
19
  "ResonatorMapping",
19
20
  "Routine",
@@ -23,6 +24,7 @@ __all__ = [
23
24
  ]
24
25
 
25
26
  from .common import Routine
27
+ from .coupler_discovery import CouplerDiscovery
26
28
  from .one_qubit_calibration import OneQubitCalibration
27
29
  from .resonator_mapping import ResonatorMapping
28
30
  from .transmon_coherence import TransmonCoherence
@@ -0,0 +1,37 @@
1
+ # Copyright 2025 Q-CTRL. All rights reserved.
2
+ #
3
+ # Licensed under the Q-CTRL Terms of service (the "License"). Unauthorized
4
+ # copying or use of this file, via any medium, is strictly prohibited.
5
+ # Proprietary and confidential. You may not use this file except in compliance
6
+ # with the License. You may obtain a copy of the License at
7
+ #
8
+ # https://q-ctrl.com/terms
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS. See the
12
+ # License for the specific language.
13
+
14
+ from pydantic import PrivateAttr
15
+
16
+ from .common import Routine
17
+
18
+
19
+ class CouplerDiscovery(Routine):
20
+ """
21
+ Parameters for running a coupler discovery routine.
22
+
23
+ Attributes
24
+ ----------
25
+ control_transmon : str
26
+ The reference for the transmon to use as control.
27
+ target_transmon : str
28
+ The reference for the transmon to use as target.
29
+ biases : list[float]
30
+ The biases to sweep the coupler through.
31
+ """
32
+
33
+ _routine_name: str = PrivateAttr("coupler_discovery")
34
+
35
+ control_transmon: str
36
+ target_transmon: str
37
+ biases: list[float]
@@ -28,9 +28,13 @@ class OneQubitCalibration(Routine):
28
28
  The reference for the transmon to target.
29
29
  gate : "sx" or "x"
30
30
  The gate to calibrate.
31
+ repetitions : list[int] or None, optional
32
+ List of repetition counts for the calibration experiment.
33
+ If not provided, a set of repetitions will be chosen based on the gate.
31
34
  """
32
35
 
33
36
  _routine_name: str = PrivateAttr("one_qubit_calibration")
34
37
 
35
38
  transmon: str
36
39
  gate: Literal["x", "sx"]
40
+ repetitions: list[int] | None = None
@@ -25,7 +25,7 @@ class ResonatorMapping(Routine):
25
25
  feedlines : list[str] or None
26
26
  The feedlines to target in the routine.
27
27
  If not provided, all feedlines in the device will be targeted.
28
- run_mixer_calibration: bool
28
+ run_mixer_calibration: bool, optional
29
29
  Whether to run mixer calibrations before running each program. Defaults to True.
30
30
  """
31
31
 
@@ -29,13 +29,9 @@ class TransmonRetuning(Routine):
29
29
  spectroscopy_waveform : ConstantWaveform or None, optional
30
30
  The drive pulse used during transmon spectroscopy.
31
31
  Defaults to a 10,000 ns pulse whose amplitude is defined by the logic of the experiment.
32
- force_rerun : bool, optional
33
- Whether to rerun the entire routine regardless transmon's current calibration status.
34
- Defaults to False.
35
32
  """
36
33
 
37
34
  _routine_name: str = PrivateAttr("transmon_retuning")
38
35
 
39
36
  transmon: str
40
37
  spectroscopy_waveform: ConstantWaveform | None = None
41
- force_rerun: bool = False
@@ -0,0 +1,22 @@
1
+ # Copyright 2025 Q-CTRL. All rights reserved.
2
+ #
3
+ # Licensed under the Q-CTRL Terms of service (the "License"). Unauthorized
4
+ # copying or use of this file, via any medium, is strictly prohibited.
5
+ # Proprietary and confidential. You may not use this file except in compliance
6
+ # with the License. You may obtain a copy of the License at
7
+ #
8
+ # https://q-ctrl.com/terms
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS. See the
12
+ # License for the specific language.
13
+
14
+ """Solution library."""
15
+
16
+ __all__ = [
17
+ "PlaceholderSolution",
18
+ "Solution",
19
+ ]
20
+
21
+ from .common import Solution
22
+ from .placeholder_solution import PlaceholderSolution
@@ -0,0 +1,23 @@
1
+ # Copyright 2025 Q-CTRL. All rights reserved.
2
+ #
3
+ # Licensed under the Q-CTRL Terms of service (the "License"). Unauthorized
4
+ # copying or use of this file, via any medium, is strictly prohibited.
5
+ # Proprietary and confidential. You may not use this file except in compliance
6
+ # with the License. You may obtain a copy of the License at
7
+ #
8
+ # https://q-ctrl.com/terms
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS. See the
12
+ # License for the specific language.
13
+
14
+ from pydantic import BaseModel, ConfigDict
15
+
16
+
17
+ class Solution(BaseModel):
18
+ model_config = ConfigDict(extra="forbid")
19
+ _solution_name: str
20
+
21
+ @property
22
+ def solution_name(self) -> str:
23
+ return self._solution_name
@@ -0,0 +1,28 @@
1
+ # Copyright 2025 Q-CTRL. All rights reserved.
2
+ #
3
+ # Licensed under the Q-CTRL Terms of service (the "License"). Unauthorized
4
+ # copying or use of this file, via any medium, is strictly prohibited.
5
+ # Proprietary and confidential. You may not use this file except in compliance
6
+ # with the License. You may obtain a copy of the License at
7
+ #
8
+ # https://q-ctrl.com/terms
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS. See the
12
+ # License for the specific language.
13
+
14
+ from pydantic import PrivateAttr
15
+ from typing_extensions import deprecated
16
+
17
+ from .common import Solution
18
+
19
+
20
+ @deprecated(
21
+ "This is a placeholder for a specific solution in the future.",
22
+ )
23
+ class PlaceholderSolution(Solution):
24
+ """
25
+ Parameters for running a placeholder solution.
26
+ """
27
+
28
+ _solution_name: str = PrivateAttr("placeholder_solution")
@@ -51,6 +51,21 @@ _qm_patch_targets = [
51
51
  "qm.qua.AnalogMeasureProcess._get_loc",
52
52
  "qm.qua.DigitalMeasureProcess._get_loc",
53
53
  "qm.datadog_api.DatadogHandler",
54
+ "qm.qua.lib._get_loc",
55
+ "qm.qua._dsl.arbitrary._get_loc",
56
+ "qm.qua._dsl.calibration_params_update._get_loc",
57
+ "qm.qua._dsl.external_stream._get_loc",
58
+ "qm.qua._dsl.frame_rotation._get_loc",
59
+ "qm.qua._dsl.function_expressions._get_loc",
60
+ "qm.qua._dsl.phase_reset._get_loc",
61
+ "qm.qua._dsl.play._get_loc",
62
+ "qm.qua._dsl.pulses_utils._get_loc",
63
+ "qm.qua._dsl.scope_functions._get_loc",
64
+ "qm.qua._dsl.variable_handling._get_loc",
65
+ "qm.qua._dsl.wait._get_loc",
66
+ "qm.qua._dsl.measure.analog_measure_process._get_loc",
67
+ "qm.qua._dsl.measure.measure._get_loc",
68
+ "qm.qua._dsl.stream_processing.stream_processing._get_loc",
54
69
  ]
55
70
  for target in _qm_patch_targets:
56
71
  try:
@@ -532,9 +532,6 @@ class _BaseQuaConfig(BaseModel):
532
532
  qm_version: str
533
533
  """The qm-qua package version used."""
534
534
 
535
- version: int = 1
536
- """The configuration version. This is a field used in Qua's configuration API."""
537
-
538
535
  oscillators: Mapping[str, OscillatorConfigType] = {}
539
536
  """The oscillators used to drive the elements."""
540
537