@@ -467,10 +467,9 @@ def __getitem__(self, s):
467
467
if s .start and s .stop and s .start > s .stop :
468
468
raise ValueError (
469
469
"Start key must be lexicographically smaller than stop." )
470
- if len (self .sets ) <= 1 :
471
- raise ValueError (
472
- "Must have more than one set to operate on." )
473
470
471
+ if not self .sets :
472
+ return
474
473
opbuilder = OpBuilder .from_slice (self .sets [0 ]._ptr , s )
475
474
streams = []
476
475
for fst in self .sets [1 :]:
@@ -483,9 +482,8 @@ def __getitem__(self, s):
483
482
def __iter__ (self ):
484
483
""" Get an iterator over all keys in all sets in lexicographical order.
485
484
"""
486
- if len (self .sets ) <= 1 :
487
- raise ValueError (
488
- "Must have more than one set to operate on." )
485
+ if not self .sets :
486
+ return
489
487
opbuilder = OpBuilder (self .sets [0 ]._ptr ,
490
488
input_type = OpBuilderInputType .SET )
491
489
for fst in self .sets [1 :]:
@@ -494,12 +492,11 @@ def __iter__(self):
494
492
495
493
def _make_opbuilder (self , * others ):
496
494
others = list (others )
497
- if len (self .sets ) <= 1 :
498
- raise ValueError (
499
- "Must have more than one set to operate on." )
500
495
if not others :
501
496
raise ValueError (
502
497
"Must have at least one set to compare against." )
498
+ if not self .sets :
499
+ return
503
500
our_opbuilder = OpBuilder (self .sets [0 ]._ptr ,
504
501
input_type = OpBuilderInputType .SET )
505
502
for fst in self .sets [1 :]:
@@ -544,9 +541,8 @@ def search(self, term, max_dist):
544
541
:returns: Iterator over matching values in the set
545
542
:rtype: :py:class:`KeyStreamIterator`
546
543
"""
547
- if len (self .sets ) <= 1 :
548
- raise ValueError (
549
- "Must have more than one set to operate on." )
544
+ if not self .sets :
545
+ return
550
546
opbuilder = OpBuilder .from_search (self .sets [0 ], term , max_dist )
551
547
for fst in self .sets [1 :]:
552
548
opbuilder .push (_build_levsearch (fst , term , max_dist ))
@@ -576,9 +572,8 @@ def search_re(self, pattern):
576
572
:returns: An iterator over all matching keys in the set
577
573
:rtype: :py:class:`KeyStreamIterator`
578
574
"""
579
- if len (self .sets ) <= 1 :
580
- raise ValueError (
581
- "Must have more than one set to operate on." )
575
+ if not self .sets :
576
+ return
582
577
opbuilder = OpBuilder .from_search_re (self .sets [0 ], pattern )
583
578
for fst in self .sets [1 :]:
584
579
opbuilder .push (_build_research (fst , pattern ))
0 commit comments