Skip to content

Commit

Permalink
make relationship parsing to be more efficient through precomputation
Browse files Browse the repository at this point in the history
Signed-off-by: Brandon Lum <lumjjb@gmail.com>
  • Loading branch information
lumjjb authored and armintaenzertng committed Aug 17, 2023
1 parent f15a64f commit eab5db9
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions src/spdx_tools/spdx/parser/jsonlikedict/relationship_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,24 +35,26 @@ def parse_all_relationships(self, input_doc_dict: Dict) -> List[Relationship]:
document_describes: List[str] = delete_duplicates_from_list(input_doc_dict.get("documentDescribes", []))
doc_spdx_id: Optional[str] = input_doc_dict.get("SPDXID")

existing_relationships_without_comments: List[Relationship] = self.get_all_relationships_without_comments(relationships)
relationships.extend(
parse_field_or_log_error(
self.logger,
document_describes,
lambda x: self.parse_document_describes(
doc_spdx_id=doc_spdx_id, described_spdx_ids=x, existing_relationships=relationships
doc_spdx_id=doc_spdx_id, described_spdx_ids=x, existing_relationships=existing_relationships_without_comments
),
[],
)
)

package_dicts: List[Dict] = input_doc_dict.get("packages", [])
existing_relationships_without_comments: List[Relationship] = self.get_all_relationships_without_comments(relationships)

relationships.extend(
parse_field_or_log_error(
self.logger,
package_dicts,
lambda x: self.parse_has_files(package_dicts=x, existing_relationships=relationships),
lambda x: self.parse_has_files(package_dicts=x, existing_relationships=existing_relationships_without_comments),
[],
)
)
Expand Down Expand Up @@ -151,13 +153,11 @@ def parse_has_files(
def check_if_relationship_exists(
self, relationship: Relationship, existing_relationships: List[Relationship]
) -> bool:
existing_relationships_without_comments: List[Relationship] = self.get_all_relationships_without_comments(
existing_relationships
)
if relationship in existing_relationships_without_comments:
# assume existing relationships are stripped of comments
if relationship in existing_relationships:
return True
relationship_inverted: Relationship = self.invert_relationship(relationship)
if relationship_inverted in existing_relationships_without_comments:
if relationship_inverted in existing_relationships:
return True

return False
Expand Down

0 comments on commit eab5db9

Please sign in to comment.