def map_build_status_comment(stageClass, pull_uri, comment): if 'url' in comment: subject = URIRef(comment['url']) return mapMaybeObjectStatements([ (pull_uri, feature.stage, Maybe.ret(subject)), (subject, rdf.type, Maybe.ret(stageClass)), (subject, rdf.type, Maybe.ret(feature.FeatureStage)), (subject, schema.dateCreated, get_nested(Maybe, comment, 'created_at').bind(maybeDateTimeLiteral)), ]) else: return []
def extract_pull_stagements(subject, pull): return mapMaybeObjectStatements([ (subject, rdf.type, Maybe.ret(feature.PullRequest)), (subject, rdfs.label, get_nested(Maybe, pull, "title").bind(maybeLiteral)), (subject, github.review_comments, get_nested(Maybe, pull, "_links", "review_comments", "href").bind(maybeURIRef)), (subject, schema.dateCreated, get_nested(Maybe, pull, "created_at").bind(maybeDateTimeLiteral)), (subject, github.merge_commit_sha, get_nested(Maybe, pull, "merge_commit_sha").bind(maybeLiteral)), ])
def field(pb, key): assert isinstance(pb, Message), "{key!r} is expected to be an object but got type {type!r}".format( key=key, type=type(pb) ) return Maybe.catch(lambda: getattr(pb, key))
def maybe_getnested_attr(obj, *attrs): m = Maybe.ret(obj) for attr in attrs: m = m.bind(p(maybe_getattr, attr)) return m
def maybe_getattr(attr, obj): return Maybe.catch(lambda: getattr(obj, attr))
def field(pb, key): assert isinstance( pb, Message ), "{key!r} is expected to be an object but got type {type!r}".format( key=key, type=type(pb)) return Maybe.catch(lambda: getattr(pb, key))
def maybeDateTimeLiteral(val): return Maybe.ret(Literal(val, datatype=XSD.dateTime))
def maybeURIRef(val): return Maybe.ret(URIRef(val))
def maybeLiteral(val): return Maybe.ret(Literal(val))