コード例 #1
0
 def test_iterable(self):
     """iterable(x) should return x or [x], always an iterable result"""
     self.assertEqual(iterable("x"), "x")
     self.assertEqual(iterable(""), "")
     self.assertEqual(iterable(3), [3])
     self.assertEqual(iterable(None), [None])
     self.assertEqual(iterable({"a": 1}), {"a": 1})
     self.assertEqual(iterable(["a", "b", "c"]), ["a", "b", "c"])
コード例 #2
0
ファイル: moltype.py プロジェクト: mr-c/cogent3
    def complement(self, item):
        """Returns complement of item, using data from self.complements.

        Always tries to return same type as item: if item looks like a dict,
        will return list of keys.
        """
        if not self.complements:
            raise TypeError(
                "Tried to complement sequence using alphabet without complements."
            )
        try:
            return item.translate(self.ComplementTable)
        except (AttributeError, TypeError):
            item = iterable(item)
            get = self.complements.get
            return item.__class__([get(i, i) for i in item])
コード例 #3
0
 def __init__(self, spans=None):
     """Returns a new Range object with data in spans."""
     spans = [] if spans is None else spans
     result = SpansOnly()
     # need to check if we got a single Span, since they define __iter__.
     if isinstance(spans, Span):
         result.append(spans)
     elif hasattr(spans, "spans"):  # probably a single range object?
         result.extend(spans.spans)
     else:
         for s in iterable(spans):
             if hasattr(s, "spans"):
                 result.extend(s.spans)
             else:
                 result.append(s)
     self.spans = result
コード例 #4
0
ファイル: record.py プロジェクト: aglucaci/cogent3
def list_extender(obj, field, val):
    """Adds val to list in obj.field, creating list if necessary."""
    try:
        getattr(obj, field).extend(iterable(val))
    except AttributeError:
        setattr(obj, field, list(val))