Exemple #1
0
    def __call__(self, composite: Composite):
        template = "%s's favorite color is %s (%s). Over the observation period, %s gained %0.1f lbs."

        name: str = composite.get_immutable(self.person_name_var)
        color: str = composite.get_immutable(self.color_name_var)
        rgb: str = composite.get_immutable(self.rgb_var)
        weight_gain: float = composite.get_immutable(self.weight_gain_var)

        pronoun = self.get_pronoun(composite)

        sentence = template % (name, color, rgb, pronoun, weight_gain)
        composite.put_immutable(self.sentence_var, sentence)
Exemple #2
0
    def passes(self, composite: Composite) -> bool:
        try:
            value: int = composite.get_immutable(self.threshold_var)
        except MissingDataError:
            return False

        return value >= self.threshold
Exemple #3
0
    def __call__(self, composite: Composite):
        zip_code: str = composite.get_immutable(self.zip_var)

        city = self.lookups["zipcodes"][zip_code]["City"]
        composite.put_immutable(self.city_var, city)

        state = self.lookups["zipcodes"][zip_code]["State"]
        composite.put_immutable(self.state_var, state)
Exemple #4
0
 def immutables_pass(self, composite: Composite) -> bool:
     for var_id in self.immutable_vars:
         try:
             actual: Optional[Any] = composite.get_immutable(var_id)
         except MissingDataError:
             return False
         if actual != self.expected[var_id]:
             return False
     return True
Exemple #5
0
 def alter(self, composite_id: str, composite: Composite) -> None:
     try:
         value: Any = composite.get_immutable(self.source)
     except MissingDataError:
         return
     assert value in self.ranks, "Value {} did not get recorded in value-to-rank map".format(
         value)
     rank: int = self.ranks[value]
     composite.put_immutable(self.target, rank)
Exemple #6
0
 def alter(self, composite_id: str, composite: Composite) -> None:
     value: Optional[int] = composite.get_immutable(
         self.source, treat_missing_as_null=True)
     if value is None:
         return
     assert value in self.value_to_quantile, "Value {} did not get recorded in value-to-quantile map".format(
         value)
     quantile: float = self.value_to_quantile[value]
     composite.put_immutable(self.target, quantile)
Exemple #7
0
    def __call__(self, composite: Composite) -> bool:
        if not self.parent.variable.temporal:
            try:
                value: Any = composite.get_immutable(self.parent.var_id)
            except MissingDataError:
                value = MISSING_VALUE
            return self.parent.compares_case_insensitive(value)

        return self.passes_temporal(composite)
Exemple #8
0
    def get_pronoun(self, composite: Composite):
        gender: str = composite.get_immutable(self.gender_var)

        pronoun_mapping = {
            "male": "he",
            "female": "she"
        }

        return pronoun_mapping[gender]
    def _get_immutable_value(self, composite: Composite,
                             source_var_id: VariableId) -> Any:
        try:
            value = composite.get_immutable(source_var_id)
            if value is not None:
                return value
        except MissingDataError:
            pass

        return None
Exemple #10
0
    def __call__(self, composite: Composite) -> None:
        if self.immutable_source is not None:
            try:
                value: Optional[Any] = composite.get_immutable(
                    self.immutable_source)
                if value is not None:
                    composite.put_immutable(self.target, value)
                    return
            except MissingDataError:
                pass

        to_consider: List[str] = sorted(composite.periods, reverse=True)
        if not self.use_older_periods and len(to_consider) > 0:
            to_consider = [to_consider[0]]

        for period in to_consider:
            try:
                value = composite.get_observation(self.temporal_source, period)
                if value is not None:
                    composite.put_immutable(self.target, value)
                    return
            except MissingDataError:
                continue
Exemple #11
0
 def passes(self, composite: Composite) -> bool:
     male: bool = composite.get_immutable(self.male_flag)
     return not male
Exemple #12
0
 def extract(self, composite: Composite) -> float:
     mean_bmi = composite.get_immutable(self.mean_bmi_var)
     return mean_bmi
Exemple #13
0
 def __call__(self, composite: Composite):
     h_squared = composite.get_immutable(self.height_var) ** 2
     for period, weight in composite.get_all_observations(self.annual_weight_var):
         bmi = weight / h_squared * 703
         composite.put_observation(self.annual_bmi_var, period, bmi)
Exemple #14
0
    def __call__(self, composite: Composite):
        # IRL, you'd have to handle nulls, decide how to deal with temporal variables, etc.
        color_name = composite.get_immutable(self.color_name_var)

        rgb_value = self.lookups["color_names"][color_name]
        composite.put_immutable(self.rgb_var, rgb_value)
Exemple #15
0
 def extract(self, composite: Composite) -> Optional[int]:
     return composite.get_immutable(self.source, treat_missing_as_null=True)
Exemple #16
0
    def __call__(self, composite: Composite):
        person_name: str = composite.get_immutable(self.person_name_var)
        lc_name = person_name.lower()

        gender = self.lookups["genders"][lc_name]
        composite.put_immutable(self.gender_var, gender)
Exemple #17
0
 def extract(self, composite: Composite) -> Tuple[bool, float]:
     mean_bmi = composite.get_immutable(self.mean_bmi_var)
     is_male = composite.get_immutable(self.male_flag)
     return is_male, mean_bmi
def test_get_immutable(simple_composite: Composite):
    expected: str = "FFA000"
    actual: str = simple_composite.get_immutable("the_rgb_var")
    assert actual == expected
Exemple #19
0
 def _get_immutable_group(self, composite: Composite) -> Optional[str]:
     if self.immutable_grouping_var is None:
         return None
     return composite.get_immutable(self.immutable_grouping_var, treat_missing_as_null=True)