Ejemplo n.º 1
0
 def add_file_dependencies_helper(self, doc_file):
     """
     Handle dependencies for a single file.
     - doc_file - instance of spdx.file.File.
     """
     subj_triples = list(
         self.graph.triples(
             (None, self.spdx_namespace.fileName, Literal(doc_file.name))
         )
     )
     if len(subj_triples) != 1:
         raise InvalidDocumentError(
             "Could not find dependency subject {0}".format(doc_file.name)
         )
     subject_node = subj_triples[0][0]
     for dependency in doc_file.dependencies:
         dep_triples = list(
             self.graph.triples(
                 (None, self.spdx_namespace.fileName, Literal(dependency))
             )
         )
         if len(dep_triples) == 1:
             dep_node = dep_triples[0][0]
             dep_triple = (
                 subject_node,
                 self.spdx_namespace.fileDependency,
                 dep_node,
             )
             self.graph.add(dep_triple)
         else:
             print(
                 "Warning could not resolve file dependency {0} -> {1}".format(
                     doc_file.name, dependency
                 )
             )
Ejemplo n.º 2
0
 def handle_package_has_file_helper(self, pkg_file):
     """Returns node representing pkg_file
     pkg_file should be instance of spdx.file.
     """
     nodes = list(self.graph.triples((None, self.spdx_namespace.fileName, Literal(pkg_file.name))))
     if len(nodes) == 1:
         return nodes[0][0]
     else:
         raise InvalidDocumentError('handle_package_has_file_helper could not' +
                                    ' find file node for file: {0}'.format(pkg_file.name))
Ejemplo n.º 3
0
def write_document(document, out, validate=True):

    if validate:
        messages = []
        messages = document.validate(messages)
        if messages:
            raise InvalidDocumentError(messages)

    writer = Writer(document)
    document_object = writer.create_document()
    json.dump(document_object, out, indent=4)
Ejemplo n.º 4
0
def write_document(document, out):
    """Writes a document.
    document - spdx.document instance.
    out - file like object that will be written to.
    raises InvalidDocumentError if document.validate returns False.
    """
    if not document.validate([]):
        raise InvalidDocumentError()

    writer = Writer(document, out)
    writer.write()
Ejemplo n.º 5
0
def write_document(document, out, validate=True):

    if validate:
        messages = []
        messages = document.validate(messages)
        if messages:
            raise InvalidDocumentError(messages)

    writer = Writer(document)
    document_object = {"SpdxDocument": writer.create_document()}

    xmltodict.unparse(document_object, out, encoding="utf-8", pretty=True)
Ejemplo n.º 6
0
def write_document(document, out, validate=True):

    if validate:
        messages = []
        messages = document.validate(messages)
        if messages:
            raise InvalidDocumentError(messages)

    writer = Writer(document)
    document_object = writer.create_document()

    yaml.safe_dump(document_object, out, indent=2, explicit_start=True)
Ejemplo n.º 7
0
 def create_license_helper(self, lic):
     """Handles single(no conjunction/disjunction) licenses.
     Returns the created node.
     """
     if isinstance(lic, document.ExtractedLicense):
         return self.create_extracted_license(lic)
     elif lic.identifier in config.LICENSE_MAP:
         return URIRef(lic.url)
     else:
         matches = [l for l in self.document.extracted_licenses if l.identifier == lic.identifier]
         if len(matches) != 0:
             return self.create_extracted_license(matches[0])
         else:
             raise InvalidDocumentError('Missing extracted license: {0}'.format(lic.identifier))
Ejemplo n.º 8
0
def write_document(document, out, validate=True):
    """
    Write an SPDX RDF document.
    - document - spdx.document instance.
    - out - file like object that will be written to.
    Optionally `validate` the document before writing and raise
    InvalidDocumentError if document.validate returns False.
    """

    if validate:
        messages = []
        messages = document.validate(messages)
        if messages:
            raise InvalidDocumentError(messages)

    writer = Writer(document, out)
    writer.write()