~amirouche/asyncio-foundationdb

bdebb7cc5c3c45fab0b81e615b5ffecfdb90c402 — Amirouche 2 years ago cbb53ba archive/pre-v0.10.0
make it work with pypy
1 files changed, 32 insertions(+), 2 deletions(-)

M found/base.py
M found/base.py => found/base.py +32 -2
@@ 29,8 29,6 @@ from enum import Enum
from functools import wraps
from collections import defaultdict

from fdb.impl import KeySelector

from found._fdb import lib
from found._fdb import ffi



@@ 38,6 36,38 @@ from found._fdb import ffi
log = logging.getLogger(__name__)


class KeySelector(object):
    def __init__(self, key, or_equal, offset):
        self.key = key
        self.or_equal = or_equal
        self.offset = offset

    def __add__(self, offset):
        return KeySelector(self.key, self.or_equal, self.offset + offset)

    def __sub__(self, offset):
        return KeySelector(self.key, self.or_equal, self.offset - offset)

    @classmethod
    def last_less_than(cls, key):
        return cls(key, False, 0)

    @classmethod
    def last_less_or_equal(cls, key):
        return cls(key, True, 0)

    @classmethod
    def first_greater_than(cls, key):
        return cls(key, True, 1)

    @classmethod
    def first_greater_or_equal(cls, key):
        return cls(key, False, 1)

    def __repr__(self):
        return 'KeySelector(%r, %r, %r)' % (self.key, self.or_equal, self.offset)


class BaseFound:
    """Base class for all found classes"""