本文整理汇总了Python中typing.cast函数的典型用法代码示例。如果您正苦于以下问题:Python cast函数的具体用法?Python cast怎么用?Python cast使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cast函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _parity_interaction
def _parity_interaction(q0: ops.QubitId,
q1: ops.QubitId,
rads: float,
tolerance: float,
gate: Optional[ops.ReversibleEffect] = None):
"""Yields a ZZ interaction framed by the given operation."""
if abs(rads) < tolerance:
return
h = rads * -2 / np.pi
if gate is not None:
g = cast(ops.Gate, gate)
yield g.on(q0), g.on(q1)
# If rads is ±pi/4 radians within tolerance, single full-CZ suffices.
if _is_trivial_angle(rads, tolerance):
yield ops.CZ.on(q0, q1)
else:
yield ops.CZ(q0, q1) ** (-2 * h)
yield ops.Z(q0)**h
yield ops.Z(q1)**h
if gate is not None:
g = cast(ops.Gate, gate.inverse())
yield g.on(q0), g.on(q1)
示例2: type_object_type_from_function
def type_object_type_from_function(init_or_new: FuncBase, info: TypeInfo, fallback: Instance) -> FunctionLike:
signature = method_type_with_fallback(init_or_new, fallback)
# The __init__ method might come from a generic superclass
# (init_or_new.info) with type variables that do not map
# identically to the type variables of the class being constructed
# (info). For example
#
# class A(Generic[T]): def __init__(self, x: T) -> None: pass
# class B(A[List[T]], Generic[T]): pass
#
# We need to first map B's __init__ to the type (List[T]) -> None.
signature = cast(FunctionLike, map_type_from_supertype(signature, info, init_or_new.info))
if init_or_new.info.fullname() == "builtins.dict":
# Special signature!
special_sig = "dict"
else:
special_sig = None
if isinstance(signature, CallableType):
return class_callable(signature, info, fallback, special_sig)
else:
# Overloaded __init__/__new__.
items = [] # type: List[CallableType]
for item in cast(Overloaded, signature).items():
items.append(class_callable(item, info, fallback, special_sig))
return Overloaded(items)
示例3: _load_bytes
def _load_bytes(f): # type: (Union[IO[bytes], Text]) -> bytes
if hasattr(f, 'read') and callable(cast(IO[bytes], f).read):
s = cast(IO[bytes], f).read()
else:
with open(cast(Text, f), 'rb') as readable:
s = readable.read()
return s
示例4: format
def format(self, typ: Type) -> str:
"""Convert a type to a relatively short string that is
suitable for error messages. Mostly behave like format_simple
below, but never return an empty string.
"""
s = self.format_simple(typ)
if s != '':
# If format_simple returns a non-trivial result, use that.
return s
elif isinstance(typ, FunctionLike):
func = cast(FunctionLike, typ)
if func.is_type_obj():
# The type of a type object type can be derived from the
# return type (this always works).
itype = cast(Instance, func.items()[0].ret_type)
return self.format(itype)
elif isinstance(func, Callable):
arg_types = map(self.format, func.arg_types)
return_type = self.format(func.ret_type)
return 'Function[[{}] -> {}]'.format(", ".join(arg_types),
return_type)
else:
# Use a simple representation for function types; proper
# function types may result in long and difficult-to-read
# error messages.
return 'functionlike'
else:
# Default case; we simply have to return something meaningful here.
return 'object'
示例5: format
def format(self, typ: Type, verbose: bool = False) -> str:
"""Convert a type to a relatively short string that is suitable for error messages.
Mostly behave like format_simple below, but never return an empty string.
"""
s = self.format_simple(typ)
if s != '':
# If format_simple returns a non-trivial result, use that.
return s
elif isinstance(typ, FunctionLike):
func = cast(FunctionLike, typ)
if func.is_type_obj():
# The type of a type object type can be derived from the
# return type (this always works).
itype = cast(Instance, func.items()[0].ret_type)
result = self.format(itype)
if verbose:
# In some contexts we want to be explicit about the distinction
# between type X and the type of type object X.
result += ' (type object)'
return result
elif isinstance(func, CallableType):
return_type = strip_quotes(self.format(func.ret_type))
if func.is_ellipsis_args:
return 'Callable[..., {}]'.format(return_type)
arg_types = [strip_quotes(self.format(t)) for t in func.arg_types]
return 'Callable[[{}], {}]'.format(", ".join(arg_types), return_type)
else:
# Use a simple representation for function types; proper
# function types may result in long and difficult-to-read
# error messages.
return 'overloaded function'
else:
# Default case; we simply have to return something meaningful here.
return 'object'
示例6: visit_assignment_stmt
def visit_assignment_stmt(self, o: AssignmentStmt) -> None:
self.line = o.line
if (isinstance(o.rvalue, nodes.CallExpr) and
isinstance(cast(nodes.CallExpr, o.rvalue).analyzed,
nodes.TypeVarExpr)):
# Type variable definition -- not a real assignment.
return
if o.type:
self.type(o.type)
elif self.inferred:
for lvalue in o.lvalues:
if isinstance(lvalue, nodes.TupleExpr):
items = lvalue.items
elif isinstance(lvalue, nodes.ListExpr):
items = lvalue.items
else:
items = [lvalue]
for item in items:
if hasattr(item, 'is_def') and cast(Any, item).is_def:
t = self.typemap.get(item)
if t:
self.type(t)
else:
self.log(' !! No inferred type on line %d' %
self.line)
self.record_line(self.line, TYPE_ANY)
super().visit_assignment_stmt(o)
示例7: test_getTextNameBinaryValues
def test_getTextNameBinaryValues(self, pairs):
# type: (Iterable[Tuple[Text, bytes]]) -> None
"""
C{getValues} returns an iterable of L{Text} values for
the given L{Text} header name.
This test only inserts binary data into the header values, which
includes invalid data if you are a sane person, but arguably
technically valid if you read the spec because the spec is unclear
about header encodings, so we made sure that works also, if only sort
of.
"""
rawHeaders = tuple(
(headerNameAsBytes(name), value) for name, value in pairs
)
binaryValues = defaultdict(list) # type: Dict[Text, List[bytes]]
for name, value in rawHeaders:
binaryValues[headerNameAsText(normalizeHeaderName(name))].append(
value
)
for textName, values in binaryValues.items():
cast(TestCase, self).assertEqual(
tuple(self.getValues(rawHeaders, textName)),
tuple(headerValueAsText(value) for value in values),
"header name: {!r}".format(textName)
)
示例8: visit_call_expr
def visit_call_expr(self, e: CallExpr) -> int:
args = [] # type: List[int]
for arg in e.args:
args.append(self.accept(arg))
if isinstance(e.callee, NameExpr):
name = cast(NameExpr, e.callee)
target = self.target_register()
self.add(CallDirect(target, name.name, args))
elif isinstance(e.callee, MemberExpr):
member = cast(MemberExpr, e.callee)
receiver = self.accept(member.expr)
target = self.target_register()
receiver_type = self.types[member.expr]
assert isinstance(receiver_type, Instance) # TODO more flexible
typeinfo = (cast(Instance, receiver_type)).type
self.add(CallMethod(target, receiver, member.name, typeinfo, args))
elif isinstance(e.callee, SuperExpr):
superexpr = cast(SuperExpr, e.callee)
target = self.target_register()
self.add(CallMethod(target, 0,
superexpr.name,
superexpr.info.bases[0].type,
args, static=True))
else:
raise NotImplementedError('call target %s' % type(e.callee))
return target
示例9: send
def send(
self, # type: BaseConnection
msg_type, # type: MsgPackable
*args, # type: MsgPackable
**kargs # type: Union[bytes, int]
): # type: (...) -> InternalMessage
"""Sends a message through its connection.
Args:
msg_type: Message type, corresponds to the header in a
:py:class:`~py2p.base.InternalMessage` object
*args: A list of bytes-like objects, which correspond to the
packets to send to you
**kargs: There are two available keywords:
id: The ID this message should appear to be sent from
(default: your ID)
time: The time this message should appear to be sent from
(default: now in UTC)
Returns:
the :py:class:`~py2p.base.IntenalMessage` object you just sent, or
``None`` if the sending was unsuccessful
"""
# Latter is returned if key not found
id = cast(bytes, kargs.get('id', self.server.id))
time = cast(int, kargs.get('time') or getUTC())
# Begin real method
msg = InternalMessage(
msg_type, id, args, self.compression, timestamp=time)
return self.send_InternalMessage(msg)
示例10: proxies_from_env
def proxies_from_env() -> Dict[str, ProxyInfo]:
proxy_urls = {k: URL(v) for k, v in getproxies().items()
if k in ('http', 'https')}
netrc_obj = netrc_from_env()
stripped = {k: strip_auth_from_url(v) for k, v in proxy_urls.items()}
ret = {}
for proto, val in stripped.items():
proxy, auth = val
if proxy.scheme == 'https':
client_logger.warning(
"HTTPS proxies %s are not supported, ignoring", proxy)
continue
if netrc_obj and auth is None:
auth_from_netrc = None
if proxy.host is not None:
auth_from_netrc = netrc_obj.authenticators(proxy.host)
if auth_from_netrc is not None:
# auth_from_netrc is a (`user`, `account`, `password`) tuple,
# `user` and `account` both can be username,
# if `user` is None, use `account`
*logins, password = auth_from_netrc
login = logins[0] if logins[0] else logins[-1]
auth = BasicAuth(cast(str, login), cast(str, password))
ret[proto] = ProxyInfo(proxy, auth)
return ret
示例11: make_class_constructor
def make_class_constructor(self, tdef: ClassDef) -> None:
# Do we have a non-empty __init__?
init = cast(FuncDef, tdef.info.get_method('__init__'))
init_argc = len(init.args) - 1
if init.info.fullname() == 'builtins.object':
init = None
self.enter()
if init:
args = [] # type: List[int]
for arg in init.args[1:]:
args.append(self.add_local(arg))
target = self.alloc_register()
self.add(Construct(target, tdef.info))
# Inititalize data attributes to default values.
for name, node in sorted(tdef.info.names.items()):
if isinstance(node.node, Var):
var = cast(Var, node.node)
temp = self.alloc_register()
vtype = var.type
if is_named_instance(vtype, 'builtins.int'):
self.add(SetRI(temp, 0))
else:
self.add(SetRNone(temp))
self.add(SetAttr(target, name, temp, tdef.info))
if init:
self.add(CallMethod(self.alloc_register(), target, '__init__',
init.info, args, static=True))
self.add(Return(target))
self.generated[tdef.name] = FuncIcode(init_argc, self.blocks,
self.register_types)
self.leave()
示例12: merged_with
def merged_with(self, op: 'PauliStringPhasor') -> 'PauliStringPhasor':
if not self.can_merge_with(op):
raise ValueError('Cannot merge operations: {}, {}'.format(self, op))
neg_sign = (1, -1)[op.pauli_string.negated ^ self.pauli_string.negated]
half_turns = (cast(float, self.half_turns)
+ cast(float, op.half_turns) * neg_sign)
return PauliStringPhasor(self.pauli_string, half_turns=half_turns)
示例13: run_eden_start_with_real_daemon
def run_eden_start_with_real_daemon(
eden_dir: pathlib.Path,
etc_eden_dir: pathlib.Path,
home_dir: pathlib.Path,
systemd: bool,
) -> None:
env = dict(os.environ)
if systemd:
env["EDEN_EXPERIMENTAL_SYSTEMD"] = "1"
else:
env.pop("EDEN_EXPERIMENTAL_SYSTEMD", None)
command = [
typing.cast(str, FindExe.EDEN_CLI), # T38947910
"--config-dir",
str(eden_dir),
"--etc-eden-dir",
str(etc_eden_dir),
"--home-dir",
str(home_dir),
"start",
"--daemon-binary",
typing.cast(str, FindExe.EDEN_DAEMON), # T38947910
]
if eden_start_needs_allow_root_option(systemd=systemd):
command.extend(["--", "--allowRoot"])
subprocess.check_call(command, env=env)
示例14: _non_local_part
def _non_local_part(q0: ops.QubitId,
q1: ops.QubitId,
x: float,
y: float,
z: float,
allow_partial_czs: bool,
tolerance: float = 1e-8):
"""Yields non-local operation of KAK decomposition."""
if (allow_partial_czs or
all(_is_trivial_angle(e, tolerance) for e in [x, y, z])):
return [
_parity_interaction(q0, q1, x, tolerance,
cast(ops.ReversibleEffect, ops.Y**-0.5)),
_parity_interaction(q0, q1, y, tolerance,
cast(ops.ReversibleEffect, ops.X**0.5)),
_parity_interaction(q0, q1, z, tolerance)
]
if abs(z) >= tolerance:
return _xx_yy_zz_interaction_via_full_czs(q0, q1, x, y, z)
if y >= tolerance:
return _xx_yy_interaction_via_full_czs(q0, q1, x, y)
return _xx_interaction_via_full_czs(q0, q1, x)
示例15: _sendPrintJobWaitOnWriteJobFinished
def _sendPrintJobWaitOnWriteJobFinished(self, job: WriteFileJob) -> None:
if self._write_job_progress_message:
self._write_job_progress_message.hide()
self._progress_message = Message(i18n_catalog.i18nc("@info:status", "Sending data to printer"), lifetime = 0, dismissable = False, progress = -1,
title = i18n_catalog.i18nc("@info:title", "Sending Data"))
self._progress_message.addAction("Abort", i18n_catalog.i18nc("@action:button", "Cancel"), icon = None, description = "")
self._progress_message.actionTriggered.connect(self._progressMessageActionTriggered)
self._progress_message.show()
parts = []
target_printer, preferred_format, stream = self._dummy_lambdas
# If a specific printer was selected, it should be printed with that machine.
if target_printer:
target_printer = self._printer_uuid_to_unique_name_mapping[target_printer]
parts.append(self._createFormPart("name=require_printer_name", bytes(target_printer, "utf-8"), "text/plain"))
# Add user name to the print_job
parts.append(self._createFormPart("name=owner", bytes(self._getUserName(), "utf-8"), "text/plain"))
file_name = CuraApplication.getInstance().getPrintInformation().jobName + "." + preferred_format["extension"]
output = stream.getvalue() # Either str or bytes depending on the output mode.
if isinstance(stream, io.StringIO):
output = cast(str, output).encode("utf-8")
output = cast(bytes, output)
parts.append(self._createFormPart("name=\"file\"; filename=\"%s\"" % file_name, output))
self._latest_reply_handler = self.postFormWithParts("print_jobs/", parts, on_finished = self._onPostPrintJobFinished, on_progress = self._onUploadPrintJobProgress)