code: def from_version(cls, version, op=None):
          
          lower = None
          upper = None
  
          if op is None:
              lower = _LowerBound(version, True)
              upper = _UpperBound(version.next(), False)
          elif op in ("eq", "=="):
              lower = _LowerBound(version, True)
              upper = _UpperBound(version, True)
          elif op in ("gt", ">"):
              lower = _LowerBound(version, False)
          elif op in ("gte", ">="):
              lower = _LowerBound(version, True)
          elif op in ("lt", "<"):
              upper = _UpperBound(version, False)
          elif op in ("lte", "<="):
              upper = _UpperBound(version, True)
          else:
              raise VersionError("Unknown bound operation '%s'" % op)
  
          bound = _Bound(lower, upper)
          range = cls(None)
          range.bounds = [bound]
          return range
docs: Create a range from a version.
  
          Args:
              version: Version object. This is used as the upper/lower bound of
                  the range.
              op: Operation as a string. One of 'gt'/'>', 'gte'/'>=', lt'/'<',
                  'lte'/'<=', 'eq'/'=='. If None, a bounded range will be created
                  that contains the version superset.
  
          Returns:
              `VersionRange` object.