Exemple #1
0
 def visit_Num(self, node: Node) -> Node:
     # complex objects are not json-serializable
     if isinstance(node["n"], complex):
         node.update(
             {"n": {
                 "real": node["n"].real,
                 "imag": node["n"].imag
             }})
     return node
Exemple #2
0
 def visit_Num(self, node: Node) -> Node:
     # complex objects are not json-serializable
     if isinstance(node["n"], complex):
         node.update({"n": {"real": node["n"].real,
                            "imag": node["n"].imag}})
     # infinity and nan are not json-serializable
     elif not math.isfinite(node["n"]):
         node.update({"n": str(node["n"])})
     return node
Exemple #3
0
    def visit_Bytes(self, node: Node) -> VisitResult:
        try:
            s = node["s"].decode()
            encoding = 'utf8'
        except UnicodeDecodeError:
            # try with base64
            s = encode(node["s"], 'base64').decode().strip()
            encoding = 'base64'

        node.update({"s": s, "encoding": encoding})
        return node
Exemple #4
0
 def visit_NameConstant(self, node: Node) -> Node:
     if "value" in node:
         repr_val = repr(node["value"])
         if repr_val in ("True", "False"):
             node.update({"LiteralValue": "True" if node["value"] else "False",
                          "ast_type": "BoolLiteral"})
         elif repr_val == "None":
             node = self.visit_NoneType(node)
     else:
         node["ast_type"] = "NameConstant"
     return node