def set_value_from_selection(self, doc: Document, value: str): if self.field_type == FieldType.FIELD_TYPE_CONCRETE_STRING: doc.__setattr__(self.field, value) elif self.field_type == FieldType.FIELD_TYPE_CONCRETE_FLOAT: try: doc.__setattr__(self.field, float(value)) except ValueError: nums = list(extractors.find_numbers(value)) if value else None doc.__setattr__(self.field, nums[0] if nums else None) elif self.field_type == FieldType.FIELD_TYPE_CONCRETE_INTEGER: try: doc.__setattr__(self.field, int(value)) except ValueError: nums = list(extractors.find_numbers(value)) if value else None doc.__setattr__(self.field, nums[0] if nums else None) elif self.field_type == FieldType.FIELD_TYPE_CONCRETE_DATE: d = dateparser.parse(value) if value else None if d: doc.__setattr__(self.field, d) else: dates = list(get_dates(value)) if value else None doc.__setattr__(self.field, dates[0] if dates else None) return doc.__getattribute__(self.field)
select=r'shall\s+(?:end).*\d.*', process_selected=lambda sentence, match: get_dates(match), fill_fields=lambda sentence, dates: {'expiration_date': dates[0]}), FieldDetector( select=r'expiration\s+date.*\d.*', process_selected=lambda sentence, match: get_dates(match), fill_fields=lambda sentence, dates: {'expiration_date': dates[0]}), ]), FieldConfig( LeaseDocument, 'area_size_sq_ft', 'Area Size (sq. ft.)', FieldType.FIELD_TYPE_CONCRETE_FLOAT, [ FieldDetector( select=r'(?:premises|property)(.*?)\s+square\s+(?:foot|feet)', process_selected=lambda sentence, match: find_numbers(match), fill_fields=lambda sentence, numbers: {'area_square_feet__list': list(numbers)[-1]}), FieldDetector( select=r'(?:premises|property)(.*?)\s+acres?', process_selected=lambda sentence, match: find_numbers(match), fill_fields=lambda sentence, numbers: {'area_square_feet__list': 43560 * list(numbers)[-1]}), FieldDetector( select=r'(.*?)\s+square\s+(?:foot|feet).+(?:premises|property)', process_selected=lambda sentence, match: find_numbers(match), fill_fields=lambda sentence, numbers: {'area_square_feet__list': list(numbers)[-1]}), FieldDetector( select=r'(.*?)\s+acres?.+(?:premises|property)', process_selected=lambda sentence, match: find_numbers(match),