示例#1
0
def test_fossey_schema():
    data = {
        "page": 405,
        "number": 25728,
        "suffix": "B",
        "reference": "Mai: MDP, VI, 11.I, 11",
        "newEdition": "Paulus AOAT 50, 981",
        "secondaryLiterature": "NABU 1997/1",
        "cdliNumber": "P123456",
        "museumNumber": MuseumNumberSchema().dump(MuseumNumber.of("K.4562")),
        "externalProject": "dcclt",
        "notes": "Das Zeichen ist eigentlich ZA₇",
        "date": "Marduk-apla-iddina I, 1171-1159 BC",
        "transliteration": "me-luḫ-ḫa",
        "sign":
        "M15,21.7c-0.1-0.1-0.2-0.4-0.2-0.8c-0.1-1-0.1-1.2-0.5-1.3c-0.2",
    }
    fossey = Fossey(
        405,
        25728,
        "B",
        "Mai: MDP, VI, 11.I, 11",
        "Paulus AOAT 50, 981",
        "NABU 1997/1",
        "P123456",
        MuseumNumber.of("K.4562"),
        "dcclt",
        "Das Zeichen ist eigentlich ZA₇",
        "Marduk-apla-iddina I, 1171-1159 BC",
        "me-luḫ-ḫa",
        "M15,21.7c-0.1-0.1-0.2-0.4-0.2-0.8c-0.1-1-0.1-1.2-0.5-1.3c-0.2",
    )

    assert FosseySchema().load(data) == fossey
    assert FosseySchema().dump(fossey) == data
    def query_transliterated_numbers(self):
        cursor = self._fragments.find_many(
            HAS_TRANSLITERATION, projection=["museumNumber"]
        ).sort("_id", pymongo.ASCENDING)

        return MuseumNumberSchema(many=True).load(
            fragment["museumNumber"] for fragment in cursor
        )
def test_number_deserialization():
    number = MuseumNumber.of("Z.1.b")
    fragment = FragmentSchema().load({
        **FragmentSchema().dump(LemmatizedFragmentFactory.build()),
        "museumNumber":
        MuseumNumberSchema().dump(number),
    })
    assert fragment.number == number
 def query_transliterated_line_to_vec(self) -> List[LineToVecEntry]:
     cursor = self._fragments.find_many(HAS_TRANSLITERATION, {"text": False})
     return [
         LineToVecEntry(
             MuseumNumberSchema().load(fragment["museumNumber"]),
             fragment["script"],
             tuple(
                 LineToVecEncoding.from_list(line_to_vec)
                 for line_to_vec in fragment["lineToVec"]
             ),
         )
         for fragment in cursor
     ]
def test_number_serialization():
    fragment = LemmatizedFragmentFactory.build()
    data = FragmentSchema().dump(fragment)
    assert data["museumNumber"] == MuseumNumberSchema().dump(fragment.number)
def test_dump():
    assert MuseumNumberSchema().dump(MUSEUM_NUMBER) == SERIALIZED
def test_missing(property_):
    data = {**SERIALIZED}
    data.pop(property_)
    assert MuseumNumberSchema().validate(data)
def test_invalid(property_, value):
    assert MuseumNumberSchema().validate({**SERIALIZED, property_: value})
def test_load():
    assert MuseumNumberSchema().load(SERIALIZED) == MUSEUM_NUMBER
def mongo_sign_si_2():
    return {
        "_id":
        "SI_2",
        "lists": [{
            "name": "HZL",
            "number": "13a"
        }],
        "unicode": [],
        "notes": [],
        "internalNotes": [],
        "literature": [],
        "values": [
            {
                "value": "Å¡i-2",
                "subIndex": 2,
                "questionable": False,
                "deprecated": False,
                "notes": [],
                "internalNotes": [],
            },
            {
                "value": "hu-2",
                "questionable": False,
                "deprecated": False,
                "notes": [],
                "internalNotes": [],
            },
        ],
        "forms": [],
        "mesZl":
        """<div align="center">1	**AŠ**	𒀸</div>""",
        "LaBaSi":
        "12",
        "logograms": [
            {
                "logogram":
                "AÅ -IKU",
                "atf":
                "AÅ -IKU",
                "wordId": ["ikû I"],
                "schrammLogogramme":
                "AŠ-IKU; *ikû* (ein Flächenmaß); ME 43 CD 126b ZL "
                "290",
            },
            {
                "logogram":
                "<sup>mul</sup>AÅ -IKU",
                "atf":
                "{mul}AÅ -IKU",
                "wordId": ["ikû I"],
                "schrammLogogramme":
                "<sup>mul</sup>AŠ-IKU; *ikû* (Sternbild Pegasus); "
                "ME 43 CD 126b ZL 290",
            },
        ],
        "fossey": [{
            "page":
            405,
            "number":
            25728,
            "suffix":
            "B",
            "reference":
            "Mai: MDP, VI, 11.I, 11",
            "newEdition":
            "Paulus AOAT 50, 981",
            "secondaryLiterature":
            "NABU 1997/1",
            "cdliNumber":
            "P123456",
            "museumNumber":
            MuseumNumberSchema().dump(MuseumNumber.of("K.4562")),
            "externalProject":
            "dcclt",
            "notes":
            "Das Zeichen ist eigentlich ZA₇",
            "date":
            "Marduk-apla-iddina I, 1171-1159 BC",
            "transliteration":
            "me-luḫ-ḫa",
            "sign":
            "M15,21.7c-0.1-0.1-0.2-0.4-0.2-0.8c-0.1-1-0.1-1.2-0.5-1.3c-0.2",
        }],
    }
     True,
     Labels(
         surface=SurfaceLabel.from_label(
             atf.Surface.OBVERSE, [atf.Status.CORRECTION]
         )
     ),
     LineNumber(1),
     True,
 ),
 {
     "type": "ParallelFragment",
     "prefix": "//",
     "content": [OneOfTokenSchema().dump(ValueToken.of("cf. F K.1 &d o! 1"))],
     "displayValue": "cf. F K.1 &d o! 1",
     "hasCf": True,
     "museumNumber": MuseumNumberSchema().dump(MuseumNumber.of("K.1")),
     "hasDuplicates": True,
     "surface": {
         "status": ["CORRECTION"],
         "surface": "OBVERSE",
         "abbreviation": "o",
         "text": "",
     },
     "labels": {
         "object": None,
         "surface": {
             "status": ["CORRECTION"],
             "surface": "OBVERSE",
             "abbreviation": "o",
             "text": "",
         },
def to_dict(chapter: Chapter, include_documents=False):
    return {
        "textId": {
            "genre": chapter.text_id.genre.value,
            "category": chapter.text_id.category,
            "index": chapter.text_id.index,
        },
        "classification":
        chapter.classification.value,
        "stage":
        chapter.stage.value,
        "version":
        chapter.version,
        "name":
        chapter.name,
        "order":
        chapter.order,
        "signs":
        list(chapter.signs),
        "record":
        RecordSchema().dump(chapter.record),
        "parserVersion":
        chapter.parser_version,
        "manuscripts": [{
            "id":
            manuscript.id,
            "siglumDisambiguator":
            manuscript.siglum_disambiguator,
            "museumNumber":
            ((str(manuscript.museum_number) if manuscript.museum_number else
              "") if include_documents else manuscript.museum_number
             and MuseumNumberSchema().dump(manuscript.museum_number)),
            "accession":
            manuscript.accession,
            "periodModifier":
            manuscript.period_modifier.value,
            "period":
            manuscript.period.long_name,
            "provenance":
            manuscript.provenance.long_name,
            "type":
            manuscript.type.long_name,
            "notes":
            manuscript.notes,
            "colophon":
            TextSchema().dump(manuscript.colophon),
            "unplacedLines":
            TextSchema().dump(manuscript.unplaced_lines),
            "references": (ApiReferenceSchema if include_documents else
                           ReferenceSchema)().dump(manuscript.references,
                                                   many=True),
        } for manuscript in chapter.manuscripts],
        "uncertainFragments":
        MuseumNumberSchema().dump(UNCERTAIN_FRAGMENTS, many=True),
        "lines": [{
            "number":
            OneOfLineNumberSchema().dump(line.number),
            "variants": [{
                "reconstruction":
                OneOfTokenSchema().dump(variant.reconstruction, many=True),
                "note":
                variant.note and NoteLineSchema().dump(variant.note),
                "parallelLines":
                ParallelLineSchema().dump(variant.parallel_lines, many=True),
                "intertext":
                OneOfNoteLinePartSchema().dump(variant.intertext, many=True),
                "manuscripts": [{
                    "manuscriptId":
                    manuscript_line.manuscript_id,
                    "labels":
                    [label.to_value() for label in manuscript_line.labels],
                    "line":
                    OneOfLineSchema().dump(manuscript_line.line),
                    "paratext":
                    OneOfLineSchema().dump(manuscript_line.paratext,
                                           many=True),
                    "omittedWords":
                    list(manuscript_line.omitted_words),
                } for manuscript_line in variant.manuscripts],
            } for variant in line.variants],
            "isSecondLineOfParallelism":
            line.is_second_line_of_parallelism,
            "isBeginningOfSection":
            line.is_beginning_of_section,
            "translation":
            TranslationLineSchema().dump(line.translation, many=True),
        } for line in chapter.lines],
    }
示例#13
0
def museum_number_is(number: MuseumNumber) -> dict:
    serialized = MuseumNumberSchema().dump(number)
    return {f"museumNumber.{key}": value for key, value in serialized.items()}