FoundryProductsTechnologyCompanyInvestor relationsResource libraryNews
Contact us
Resource library
    Resource library home
    Developer resources
    Applications
    Lessons
    Research and publications
    Support
      Software packages
        eqc-direct software package
        qci-client software package
        uqrng-direct software package
          Getting Started
          Basic Usage
          uqrng_direct
          Dependencies
        emucore-direct software package
        eqc-models software package
      Spec sheets
      User guides

Couldn’t find what you are looking for? Reach out to technical support.

Contact support
Privacy PolicyCookie PolicyTerms of UseForward Looking StatementsAccessibility Statement
Terms and Conditions of SaleEnd User License Agreement

© 2018-2026 Quantum Computing Inc.

Download

Default

Source code for uqrng_direct.utils

  • from dataclasses import dataclass
  • from typing import TypedDict, List
  • import numpy as np
  • import grpc
  • [docs]
  • class resultNISTdetail(TypedDict):
  • """
  • Dictionary containing detailed results from NIST-STS returned within
  • :class:`.resultNIST` generated by either
  • :meth:`.UqrngClient.FetchHealthTest` or
  • :meth:`.UqrngClient.HealthTest`.
  • :param test_name: a list of names for randomness tests
  • :param p_value: a list of p_values associated with the tests.
  • :param proportion: a list of proportion of pass vs fail for test.
  • :param passed: list of bools with passing tests indicated by True
  • and failing tests returning False.
  • :param elapsed_time_mins: returns time in fractional mins since
  • last health check was completed.
  • """
  • test_name: List[str]
  • p_value: List[float]
  • proportion: List[float]
  • passed: List[bool]
  • elapsed_time_mins: float
  • [docs]
  • class resultNIST(TypedDict):
  • """
  • Dictionary containing results summary from NIST-STS generated by
  • :meth:`.UqrngClient.FetchHealthTest` or
  • :meth:`.UqrngClient.HealthTest`.
  • :param all_pass: indicates whether all tests in health check
  • passed if any test failed then returns False.
  • :param tests_detail: detailed test results of form
  • :class:`.resultNISTdetail`
  • :param summary_table: a string formatted to print as a table which
  • summarizes the randomness test detailed results.
  • """
  • all_pass: bool
  • tests_detail: resultNISTdetail
  • summary_table: str
  • [docs]
  • class SystemInfoDict(TypedDict):
  • """
  • Dictionary structure for :meth:`.client.UqrngClient.SystemInfo`
  • :param device_name: the type of device
  • :param server_version: the current semantic version for the
  • device server
  • :param test_interval_mins: current number of
  • minutes between consecutive health test for server. For
  • information on how this value is set see
  • :meth:`.client.UqrngClient.ScheduleHealthTest`.
  • """
  • device_type: str
  • server_version: str
  • test_interval_mins: int
  • [docs]
  • @dataclass
  • class SysStatus:
  • """
  • Status codes for system paired with their descriptions.
  • """
  • IDLE = {"status_code": 0, "status_desc": "IDLE"}
  • SAMPLING = {"status_code": 1, "status_desc": "SAMPLING"}
  • [docs]
  • class StatusDict(TypedDict):
  • """
  • Status message
  • :param status_code: integer code for response
  • :param status_desc: description for status code
  • """
  • status_code: int
  • status_desc: str
  • [docs]
  • def message_to_dict(grpc_message) -> dict:
  • """Convert a gRPC message to a dictionary."""
  • result = {}
  • for descriptor in grpc_message.DESCRIPTOR.fields:
  • field = getattr(grpc_message, descriptor.name)
  • if descriptor.type == descriptor.TYPE_MESSAGE:
  • if descriptor.label == descriptor.LABEL_REPEATED:
  • if field:
  • result[descriptor.name] = [message_to_dict(item) for item in field]
  • else:
  • result[descriptor.name] = []
  • else:
  • if field:
  • result[descriptor.name] = message_to_dict(field)
  • else:
  • result[descriptor.name] = {}
  • else:
  • result[descriptor.name] = field
  • return result
  • [docs]
  • def create_summary_table(detail_result: resultNISTdetail) -> str:
  • column_names = ["STATISTICAL_TEST", "P-VALUE", "PROPORTION", "PASS"]
  • prop_pass_print = np.round(detail_result["proportion_pass"], 6)
  • pval_print = np.round(detail_result["p_value"],6)
  • prop_col_width = max(len("PROPORTION"),max([len(str(num)) for num in prop_pass_print]))
  • test_col_width = max(len("STATISTICAL TEST"),
  • max([len(str(num)) for num in detail_result["test_name"]]))
  • pval_col_width = max(len("P-VALUE"),max([len(str(num)) for num in pval_print]))
  • pass_col_width = max(len("PASS"),max([len(str(num)) for num in detail_result["passed"]]))
  • col_widths = [test_col_width, pval_col_width, prop_col_width, pass_col_width]
  • # Calculate column widths
  • for i in range(len(column_names)):
  • header = " | ".join(f"{col:{col_widths[i]}}" for i, col in enumerate(column_names))
  • str_table = header + "\n"
  • str_table += ("-" * len(header)+"\n")
  • # Print rows
  • for t_name, p_val, p_pass, pass_val in zip(detail_result["test_name"],
  • pval_print,
  • prop_pass_print,
  • detail_result["passed"]):
  • entry = " | ".join(f"{str(val):{col_widths[i]}}" for i, val in enumerate([t_name,
  • p_val,
  • p_pass,
  • pass_val]))
  • str_table += (entry+"\n")
  • return str_table
  • [docs]
  • def check_qrng_busy_error(rpc_err: grpc.RpcError):
  • """
  • Utility function used in waiting loop to determine if error is from
  • busy or another RPC error which can't be handled
  • :param rpc_error: RpcError to check
  • :return: bool whether error is from QRNG is in use
  • """
  • if rpc_err.code() == grpc.StatusCode.UNAVAILABLE:
  • error_details = rpc_err.details()
  • return True
  • else:
  • return False
Next page

Content

  • Source code for uqrng_direct.utils