예제 #1
0
 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'
예제 #4
0
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]
예제 #5
0
 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()
                           })
예제 #6
0
 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()}
     )
예제 #8
0
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'
예제 #9
0
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'