Пример #1
0
    def test_str_serialization(self, db: LevelDB) -> None:
        if db.read_only:
            return
        a = "just testing some conversions... :)"

        db["key"] = a
        assert a == db["key"]

        db["key"] = b"value_bytes1"
        assert db["key"] == b"value_bytes1"

        db["key"] = encode(a)
        assert db["key"] == encode(a)
        del db["key"]
        assert len(db) == 0
Пример #2
0
    def test_json_serialization(self, db: LevelDB) -> None:
        if db.read_only:
            return
        a = {"key1": 10.5, "key2": [1, 2, {"key3": -1}]}
        db["key"] = a
        assert db["key"] == a
        assert a == db["key"]

        db["key"] = str.encode(rapidjson.dumps(a), encoding="utf-8")
        assert db["key"] == str.encode(rapidjson.dumps(a), encoding="utf-8")

        db["key"] = encode(a)
        assert db["key"] == encode(a)

        del db["key"]
        assert len(db) == 0
Пример #3
0
 def test_int_encoding_decoding(self) -> None:
     a = 42
     a_encoded = encode(a)
     assert a_encoded[:1] == b"i"
     assert base64.b64encode(a_encoded) == b"aQAAAAAAAAAAAAAAAAAAACo="
     b = decode(a_encoded)
     assert b == 42
     assert a == b
Пример #4
0
 def test_json_encoding_decoding(self) -> None:
     a = {"test1": 3.0, "test2": {"inner": 0}}
     a_encoded = encode(a)
     assert a_encoded[:1] == b"j"
     assert a_encoded == b'j{"test1":3.0,"test2":{"inner":0}}'
     b = decode(a_encoded)
     assert b == {"test1": 3.0, "test2": {"inner": 0}}
     assert a == b
Пример #5
0
 def test_str_encoding_decoding(self) -> None:
     a = "test in progress... :)"
     a_encoded = encode(a)
     assert a_encoded[:1] == b"s"
     assert a_encoded == b"stest in progress... :)"
     b = decode(a_encoded)
     assert b == "test in progress... :)"
     assert a == b
Пример #6
0
    def test_int_serialization(self, db: LevelDB) -> None:
        if db.read_only:
            return
        for a in [42, -100000000000000000000000000, int(1e10)]:
            db["key"] = a
            assert db["key"] == a

            db["key"] = int.to_bytes(a,
                                     length=16,
                                     byteorder="big",
                                     signed=True)
            assert db["key"] == int.to_bytes(a,
                                             length=16,
                                             byteorder="big",
                                             signed=True)

            db["key"] = encode(a)
            assert db["key"] == encode(a)

            del db["key"]
            assert len(db) == 0
Пример #7
0
    def test_numpy_encoding_decoding(self) -> None:
        a = np.array([[0, 1.13], [1, 42]])
        a_encoded = encode(a)
        assert a_encoded[:1] == b"n"
        assert (base64.b64encode(a_encoded) ==
                b"bpNOVU1QWQEAdgB7J2Rlc2NyJzogJzxmOCcsICdmb3J0cmFuX29yZGVyJz"
                b"ogRmFsc2UsICdzaGFwZSc6ICgyLCAyKSwgfSAgICAgICAgICAgICAgICAgI"
                b"CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKAAAAA"
                b"AAAAAAUrkfhehTyPwAAAAAAAPA/AAAAAAAARUA=")
        b = decode(a_encoded)

        assert repr(b) == repr(a)
        assert np.array_equal(a, b)
Пример #8
0
    def __setitem__(self, key: Union[str, Iterable[str]], value: Any) -> Response:
        *prefixes, key = normalize_strings(lambda x: x, key)

        if key is Ellipsis:
            raise TypeError(f"str prefix or key expected, got {type(key).__name__}")

        res = requests.post(
            url=self.server_address + "/setitem",
            data=encode(value),
            headers={"Content-Type": "application/octet-stream"},
            params={"dbpath": self.db_path, "key": key, "prefixes": prefixes},
        )
        return res
Пример #9
0
    def test_numpy_serialization(self, db: LevelDB) -> None:
        if db.read_only:
            return
        a = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]], dtype=np.float16)
        db["key"] = a
        assert repr(db["key"]) == repr(a)
        assert np.array_equal(a, db["key"])

        db["key"] = Serializer.ndarray_tobytes(a)
        assert db["key"] == Serializer.ndarray_tobytes(a)

        db["key"] = encode(a)
        assert repr(decode(db["key"])) == repr(a)
        assert np.array_equal(a, decode(db["key"]))

        del db["key"]
        assert len(db) == 0
Пример #10
0
def dblen() -> str:
    db = _parse_and_get_prefixed_db()

    starting_by = request.args.get("starting_by")
    starting_by = b"".join(
        serializer.normalize_strings(DecodeType.STR.pure_encode_fun, starting_by)
        if starting_by is not None
        else ()
    )
    out = serializer.encode(
        sum(
            1
            for _ in db.iterator(
                include_key=True, include_value=False, prefix=starting_by
            )
        )
    )
    return Response(out, content_type="application/octet-stream")