22from functools import wraps
33import itertools
44import re
5+ import warnings
56from .blob import unpack
67import numpy as np
78from datajoint import DataJointError
@@ -41,17 +42,11 @@ def __init__(self, relation):
4142 self ._relation = relation ._relation
4243 else :
4344 self .behavior = dict (
44- offset = 0 , limit = None , order_by = None , as_dict = False
45+ offset = None , limit = None , order_by = None , as_dict = False
4546 )
4647 self ._relation = relation
4748
4849
49- @copy_first
50- def from_to (self , fro , to ):
51- self .behavior ['offset' ] = fro
52- self .behavior ['limit' ] = to - fro
53- return self
54-
5550 @copy_first
5651 def order_by (self , * args ):
5752 if len (args ) > 0 :
@@ -64,10 +59,18 @@ def as_dict(self):
6459 return self
6560
6661 @copy_first
67- def limit_to (self , limit ):
62+ def limit (self , limit ):
6863 self .behavior ['limit' ] = limit
6964 return self
7065
66+ @copy_first
67+ def offset (self , offset ):
68+ if self .behavior ['limit' ] is None :
69+ warnings .warn ('You should supply a limit together with an offset,' )
70+ self .behavior ['offset' ] = offset
71+ return self
72+
73+
7174 @copy_first
7275 def set_behavior (self , ** kwargs ):
7376 self .behavior .update (kwargs )
@@ -86,7 +89,9 @@ def __call__(self, **kwargs):
8689
8790 """
8891 behavior = dict (self .behavior , ** kwargs )
89-
92+ if behavior ['limit' ] is None and behavior ['offset' ] is not None :
93+ warnings .warn ('Offset set, but no limit. Setting limit to a large number. Consider setting a limit yourself.' )
94+ behavior ['limit' ] = 2 * len (self ._relation )
9095 cur = self ._relation .cursor (** behavior )
9196
9297 heading = self ._relation .heading
0 commit comments