Exemplo n.º 1
0
def test_layer_model():
    layer = Layer(annotation_type=LayerEnum.book_title,
                  revision="00001",
                  annotations={})
    assert layer.annotation_type.value == "BookTitle"
    assert layer.revision == "00001"
    layer.bump_revision()
    assert layer.revision == "00002"
Exemplo n.º 2
0
def test_layer_reset():
    layer = Layer(annotation_type=LayerEnum.book_title,
                  revision="00003",
                  annotations={"1": "ann"})
    assert layer.revision == "00003"
    assert layer.annotations
    layer.reset()
    assert layer.revision == "00001"
    assert layer.annotations == {}
Exemplo n.º 3
0
    def get_layer(self, base_name: str, layer_name: LayerEnum) -> Layer:
        if base_name in self.layers and layer_name in self.layers[base_name]:
            layer = self.layers[base_name][layer_name]
            if layer:
                return layer

        layer_dict = self.read_layers_file(base_name, layer_name.value)
        if layer_dict:
            layer = Layer.parse_obj(layer_dict)
        else:
            layer = Layer(annotation_type=layer_name)
        self.layers[base_name][layer_name] = layer
        return layer
Exemplo n.º 4
0
 def get_dummy_layers(self):
     layers = {}
     for layer in self.layers:
         layers[layer] = Layer(
             annotation_type=layer, revision="00001", annotations={}
         )
     return layers
Exemplo n.º 5
0
    def format_layer(self, layers, base_id):
        anns = {}
        for (start, end, n_pg), page_ref in zip(layers["pages"],
                                                layers["pages_ref"]):
            uuid = self.get_unique_id()
            span = Span(start=start, end=end)
            page = Page(span=span, imgnum=n_pg, reference=page_ref)
            anns[uuid] = page

        layer = Layer(annotation_type=LayerEnum("Pagination"),
                      annotations=anns)
        result = {
            LayerEnum("Pagination").value:
            json.loads(layer.json(exclude_none=True))
        }

        return result
Exemplo n.º 6
0
def update_base_layer(pecha_id, base_name, new_base, layers):
    pecha = get_pecha(pecha_id)
    old_base = pecha.get_base(base_name)
    pecha.base[base_name] = new_base
    pecha.save_base()

    updater = Blupdate(old_base, new_base)
    for layer in layers:
        update_ann_layer(layer, updater)
        pecha.save_layer(
            base_name, layer["annotation_type"].value, Layer.parse_obj(layer)
        )
    return layers
Exemplo n.º 7
0
 def index(self) -> Layer:
     if self._index:
         return self._index
     self._index = Layer.parse_obj(self.read_index_file())
     return self._index
Exemplo n.º 8
0
 def save_layer(self, base_name: str, layer_name: LayerEnum, layer: Layer):
     layer_fn = self._mkdir(
         self.layers_path / base_name) / f"{layer_name.value}.yml"
     dump_yaml(json.loads(layer.json()), layer_fn)
Exemplo n.º 9
0
def test_revision_should_be_int_parsible():
    with pytest.raises(ValidationError):
        Layer(annotation_type=LayerEnum.book_title,
              revision="1aaa",
              annotations={})
Exemplo n.º 10
0
def test_not_supported_layer():
    with pytest.raises(ValidationError):
        Layer(annotation_type="NotSupportedLayer",
              revision="00001",
              annotations={})