MCPcopy Index your code
hub / github.com/python/mypy / get_str_default_of_node

Method get_str_default_of_node

mypy/stubgen.py:1423–1485  ·  view source on GitHub ↗

Get a string representation of the default value of a node. Returns a 2-tuple of the default and whether or not it is valid.

(self, rvalue: Expression)

Source from the content-addressed store, hash-verified

1421 return expr
1422
1423 def get_str_default_of_node(self, rvalue: Expression) -> tuple[str, bool]:
1424 """Get a string representation of the default value of a node.
1425
1426 Returns a 2-tuple of the default and whether or not it is valid.
1427 """
1428 if isinstance(rvalue, NameExpr):
1429 if rvalue.name in ("None", "True", "False"):
1430 return rvalue.name, True
1431 elif isinstance(rvalue, (IntExpr, FloatExpr)):
1432 return f"{rvalue.value}", True
1433 elif isinstance(rvalue, UnaryExpr):
1434 if isinstance(rvalue.expr, (IntExpr, FloatExpr)):
1435 return f"{rvalue.op}{rvalue.expr.value}", True
1436 elif isinstance(rvalue, StrExpr):
1437 return repr(rvalue.value), True
1438 elif isinstance(rvalue, BytesExpr):
1439 return "b" + repr(rvalue.value).replace("\\\\", "\\"), True
1440 elif isinstance(rvalue, TupleExpr):
1441 items_defaults = []
1442 for e in rvalue.items:
1443 e_default, valid = self.get_str_default_of_node(e)
1444 if not valid:
1445 break
1446 items_defaults.append(e_default)
1447 else:
1448 closing = ",)" if len(items_defaults) == 1 else ")"
1449 default = "(" + ", ".join(items_defaults) + closing
1450 return default, True
1451 elif isinstance(rvalue, ListExpr):
1452 items_defaults = []
1453 for e in rvalue.items:
1454 e_default, valid = self.get_str_default_of_node(e)
1455 if not valid:
1456 break
1457 items_defaults.append(e_default)
1458 else:
1459 default = "[" + ", ".join(items_defaults) + "]"
1460 return default, True
1461 elif isinstance(rvalue, SetExpr):
1462 items_defaults = []
1463 for e in rvalue.items:
1464 e_default, valid = self.get_str_default_of_node(e)
1465 if not valid:
1466 break
1467 items_defaults.append(e_default)
1468 else:
1469 if items_defaults:
1470 default = "{" + ", ".join(items_defaults) + "}"
1471 return default, True
1472 elif isinstance(rvalue, DictExpr):
1473 items_defaults = []
1474 for k, v in rvalue.items:
1475 if k is None:
1476 break
1477 k_default, k_valid = self.get_str_default_of_node(k)
1478 v_default, v_valid = self.get_str_default_of_node(v)
1479 if not (k_valid and v_valid):
1480 break

Callers 2

_get_func_argsMethod · 0.95
get_initMethod · 0.95

Calls 6

isinstanceFunction · 0.85
reprFunction · 0.85
lenFunction · 0.85
replaceMethod · 0.80
appendMethod · 0.80
joinMethod · 0.45

Tested by

no test coverage detected