def fg_json()

in tzrec/features/lookup_feature.py [0:0]


    def fg_json(self) -> List[Dict[str, Any]]:
        """Get fg json config."""
        fg_cfg = {
            "feature_type": "lookup_feature",
            "feature_name": self.name,
            "map": self.config.map,
            "key": self.config.key,
            "default_value": self.config.default_value,
            "value_type": "float",
            "needDiscrete": self.config.need_discrete,
            "needKey": self.config.need_key,
            "combiner": self.config.combiner.lower(),
        }
        raw_fg_cfg = None
        if self.config.value_dim > 1:
            fg_cfg["feature_name"] = self.name + "__lookup"
            fg_cfg["default_value"] = ""
            fg_cfg["value_type"] = "string"
            fg_cfg["value_dim"] = 1
            fg_cfg["needDiscrete"] = True
            fg_cfg["combiner"] = ""
            fg_cfg["stub_type"] = True
            raw_fg_cfg = {
                "feature_type": "raw_feature",
                "feature_name": self.name,
                "default_value": self.config.default_value,
                "expression": "feature:" + fg_cfg["feature_name"],
                "separator": self.config.value_separator,
                "value_dim": self.config.value_dim,
                "value_type": "float",
            }
            if self.config.HasField("normalizer"):
                raw_fg_cfg["normalizer"] = self.config.normalizer
            if len(self.config.boundaries) > 0:
                raw_fg_cfg["boundaries"] = list(self.config.boundaries)
        else:
            if self.config.separator != "\x1d":
                fg_cfg["separator"] = self.config.separator
            if self.config.HasField("normalizer"):
                fg_cfg["normalizer"] = self.config.normalizer
            if self.config.HasField("zch"):
                fg_cfg["hash_bucket_size"] = MAX_HASH_BUCKET_SIZE
                fg_cfg["value_type"] = "string"
            elif self.config.HasField("hash_bucket_size"):
                fg_cfg["hash_bucket_size"] = self.config.hash_bucket_size
                fg_cfg["value_type"] = "string"
            elif self.config.HasField("num_buckets"):
                fg_cfg["num_buckets"] = self.config.num_buckets
                fg_cfg["value_type"] = "string"
            elif len(self.vocab_list) > 0:
                fg_cfg["vocab_list"] = self.vocab_list
                fg_cfg["default_bucketize_value"] = self.default_bucketize_value
                fg_cfg["value_type"] = "string"
            elif len(self.vocab_dict) > 0:
                fg_cfg["vocab_dict"] = self.vocab_dict
                fg_cfg["default_bucketize_value"] = self.default_bucketize_value
                fg_cfg["value_type"] = "string"
            elif len(self.vocab_file) > 0:
                fg_cfg["vocab_file"] = self.vocab_file
                fg_cfg["default_bucketize_value"] = self.default_bucketize_value
                fg_cfg["value_type"] = "string"
            elif len(self.config.boundaries) > 0:
                fg_cfg["boundaries"] = list(self.config.boundaries)

            if self.config.HasField("fg_value_type"):
                fg_cfg["value_type"] = self.config.fg_value_type
            if fg_cfg["value_type"] == "string":
                fg_cfg["needDiscrete"] = True
            if fg_cfg["needDiscrete"]:
                fg_cfg["combiner"] = ""
            if fg_cfg["combiner"] == "":
                fg_cfg["value_dim"] = self.value_dim

        fg_cfgs = [fg_cfg]
        if raw_fg_cfg is not None:
            fg_cfgs.append(raw_fg_cfg)
        return fg_cfgs