def deref(self, dereferator: Dereferator) -> 'APVSpec[T]': return APVSpec(key=dereferator.deref_text(self.key), parser=self.parser.deref(dereferator), fallback=dereferator.deref_text(self.fallback), validations={ k: v.deref(dereferator) for k, v in self.validations.items() }, assumptions={ k: v.deref(dereferator) for k, v in self.assumptions.items() }, metadata=dereferator.deref(self.metadata), source=self.source)
def deref(self, dereferator: Dereferator) -> 'TableExtractionSpec': return TableExtractionSpec( key=dereferator.deref_text(self.key), locator=self.locator.deref(dereferator), columns={k: v.deref(dereferator) for k, v in self.columns.items()}, end_conditions=[tec.deref(dereferator) for tec in self.end_conditions], item_direction=self.item_direction, source=self.source )
def test_assumption_spec_deref(): assumption = {"name": "<<A1>>", "label": "something"} workbook = openpyxl.Workbook() sheet = workbook.active sheet['A1'] = 'hello' dereferator = Dereferator.template_to_spec(workbook=workbook, anchor=CellLocation( sheet.title, 'A2')) assumption_spec = AssumptionSpec.from_dict(assumption).deref(dereferator) assert assumption_spec.name == 'hello'
def test_deref_recursive(): wb = openpyxl.Workbook() sheet = wb.active for i in range(10): sheet.cell(i + 1, 1).value = i + 1 dereferator = Dereferator.template_to_spec(workbook=wb, anchor=CellLocation( sheet_name=sheet.title, coordinate='A1')) assert dereferator.deref(['a', '<<A2>>']) == ['a', 2]
def deref(self, dereferator: Dereferator) -> 'AssumptionSpec': return AssumptionSpec(name=dereferator.deref_text(self.name), params={ k: dereferator.deref_text(v) for k, v in self.params.items() })
def deref(self, dereferator: Dereferator) -> 'ValidatorSpec': return ValidatorSpec( name=dereferator.deref_text(self.name), params={k: dereferator.deref_text(v) for k, v in self.params.items()} )
def deref(self, dereferator: Dereferator) -> 'TableEndConditionSpec': return TableEndConditionSpec( name=dereferator.deref_text(self.name), params={k: dereferator.deref_text(v) for k, v in self.params.items()} )
def test_deref_pre_spec(workbook): dereferator = Dereferator.template_to_spec(workbook, CellLocation('SHEET1', 'A5')) assert dereferator.deref_text('<<A1>>') == 1 assert dereferator.deref_text('<<A2>> world') == 'hello world' assert dereferator.deref_text('the value is <<A1>>') == 'the value is 1'
def test_deref_post_spec(workbook): dereferator = Dereferator.spec_to_extractor(workbook, CellLocation('SHEET1', 'A5')) assert dereferator.deref_text('==A1==') == 1 assert dereferator.deref_text('==A2== world') == 'hello world' assert dereferator.deref_text('the value is ==A1==') == 'the value is 1'