Skip to content

Commit 85400f5

Browse files
committed
Add a lot of documentation
1 parent 17a4305 commit 85400f5

File tree

1 file changed

+105
-22
lines changed

1 file changed

+105
-22
lines changed

gcp/api/server.py

+105-22
Original file line numberDiff line numberDiff line change
@@ -831,7 +831,20 @@ def _datastore_normalized_purl(purl: PackageURL):
831831
def query_by_commit(context: QueryContext,
832832
commit: bytes,
833833
to_response: Callable = bug_to_response) -> list:
834-
"""Query by commit."""
834+
"""
835+
Perform a query by commit.
836+
837+
This is a ndb.tasklet, so will return a future that will need to be yielded.
838+
839+
Args:
840+
context: QueryContext for the current query.
841+
commit: The commit hash to query.
842+
to_response: Optional function to convert osv.Bug to a
843+
vulnerability response.
844+
845+
Returns:
846+
list of responses (return values from to_response)
847+
"""
835848
query = osv.AffectedCommits.query(osv.AffectedCommits.commits == commit)
836849

837850
context.query_counter += 1
@@ -948,8 +961,8 @@ def _is_version_affected(affected_packages,
948961
purl: PackageURL | None,
949962
version,
950963
normalize=False):
951-
"""Returns whether or not the given version is within an affected ECOSYSTEM
952-
964+
"""
965+
Returns whether or not the given version is within an affected ECOSYSTEM
953966
range.
954967
"""
955968
for affected_package in affected_packages:
@@ -980,9 +993,26 @@ def _is_version_affected(affected_packages,
980993

981994

982995
@ndb.tasklet
983-
def _query_by_semver(context: QueryContext, query: ndb.Query, package_name: str,
984-
ecosystem: str, purl: PackageURL | None, version: str):
985-
"""Query by semver."""
996+
def _query_by_semver(context: QueryContext, query: ndb.Query,
997+
package_name: str | None, ecosystem: str | None,
998+
purl: PackageURL | None, version: str):
999+
"""
1000+
Perform a query by semver version.
1001+
1002+
This is a ndb.tasklet, so will return a future that will need to be yielded.
1003+
1004+
Args:
1005+
context: QueryContext for the current query.
1006+
query: A partially completed ndb.Query object which only needs
1007+
semver filters to be added before query is performed.
1008+
package_name: Optional name of the package to query.
1009+
ecosystem: Optional ecosystem of the package to query.
1010+
purl: Optional PackageURL.
1011+
version: The semver version to query for.
1012+
1013+
Returns:
1014+
list of osv.Bug entries wrapped in a Future.
1015+
"""
9861016
if not semver_index.is_valid(version):
9871017
return []
9881018

@@ -1015,30 +1045,46 @@ def _query_by_semver(context: QueryContext, query: ndb.Query, package_name: str,
10151045
def _query_by_generic_version(
10161046
context: QueryContext,
10171047
base_query: ndb.Query,
1018-
project: str,
1019-
ecosystem: str,
1048+
package_name: str | None,
1049+
ecosystem: str | None,
10201050
purl: PackageURL | None,
10211051
version: str,
10221052
):
1023-
"""Query by generic version."""
1053+
"""
1054+
Query by generic version.
1055+
1056+
This is a ndb.tasklet, so will return a future that will need to be yielded.
1057+
1058+
Args:
1059+
context: QueryContext for the current query.
1060+
base_query: A partially completed ndb.Query object which only needs
1061+
version filters to be added before query is performed.
1062+
package_name: Optional name of the package to query.
1063+
ecosystem: Optional ecosystem of the package to query.
1064+
purl: Optional PackageURL.
1065+
version: The non-semver version to query for.
1066+
1067+
Returns:
1068+
list of osv.Bug entries wrapped in a Future.
1069+
"""
10241070
# Try without normalizing.
1025-
results = yield query_by_generic_helper(context, base_query, project,
1071+
results = yield query_by_generic_helper(context, base_query, package_name,
10261072
ecosystem, purl, version, False)
10271073

10281074
# If there are results, then we should return with this query,
10291075
# as no normalization seem to be the correct format.
10301076
if results:
10311077
return results
10321078

1033-
results = yield query_by_generic_helper(context, base_query, project,
1079+
results = yield query_by_generic_helper(context, base_query, package_name,
10341080
ecosystem, purl,
10351081
osv.normalize_tag(version), True)
10361082

10371083
if results:
10381084
return results
10391085

10401086
# Try again after canonicalizing + normalizing version.
1041-
results = yield query_by_generic_helper(context, base_query, project,
1087+
results = yield query_by_generic_helper(context, base_query, package_name,
10421088
ecosystem, purl,
10431089
canonicalize_version(version), True)
10441090

@@ -1047,7 +1093,7 @@ def _query_by_generic_version(
10471093

10481094
@ndb.tasklet
10491095
def query_by_generic_helper(context: QueryContext, base_query: ndb.Query,
1050-
project: str, ecosystem: str,
1096+
package_name: str | None, ecosystem: str | None,
10511097
purl: PackageURL | None, version: str,
10521098
is_normalized):
10531099
"""
@@ -1070,7 +1116,7 @@ def query_by_generic_helper(context: QueryContext, base_query: ndb.Query,
10701116
bug = it.next()
10711117
if _is_version_affected(
10721118
bug.affected_packages,
1073-
project,
1119+
package_name,
10741120
ecosystem,
10751121
purl,
10761122
version,
@@ -1082,12 +1128,28 @@ def query_by_generic_helper(context: QueryContext, base_query: ndb.Query,
10821128

10831129
@ndb.tasklet
10841130
def query_by_version(context: QueryContext,
1085-
package_name: str,
1086-
ecosystem: str,
1131+
package_name: str | None,
1132+
ecosystem: str | None,
10871133
purl: PackageURL | None,
1088-
version,
1134+
version: str,
10891135
to_response: Callable = bug_to_response):
1090-
"""Query by (fuzzy) version."""
1136+
"""
1137+
Query by (fuzzy) version.
1138+
1139+
This is a ndb.tasklet, so will return a future that will need to be yielded.
1140+
1141+
Args:
1142+
context: QueryContext for the current query.
1143+
package_name: Optional name of the package to query.
1144+
ecosystem: Optional ecosystem of the package to query.
1145+
purl: Optional PackageURL.
1146+
version: The version str to query by.
1147+
to_response: Optional function to convert osv.Bug to a
1148+
vulnerability response.
1149+
1150+
Returns:
1151+
list of responses (return values from to_response)
1152+
"""
10911153

10921154
if package_name:
10931155
query = osv.Bug.query(
@@ -1166,7 +1228,11 @@ def query_by_version(context: QueryContext,
11661228
@ndb.tasklet
11671229
def _query_by_comparing_versions(context: QueryContext, query: ndb.Query,
11681230
ecosystem: str, version: str) -> list:
1169-
"""Query by package."""
1231+
"""
1232+
Query by comparing versions.
1233+
1234+
TODO:
1235+
"""
11701236
bugs = []
11711237

11721238
context.query_counter += 1
@@ -1213,9 +1279,26 @@ def _query_by_comparing_versions(context: QueryContext, query: ndb.Query,
12131279

12141280

12151281
@ndb.tasklet
1216-
def query_by_package(context: QueryContext, package_name: str, ecosystem: str,
1217-
purl: PackageURL | None, to_response: Callable) -> list:
1218-
"""Query by package."""
1282+
def query_by_package(context: QueryContext, package_name: str | None,
1283+
ecosystem: str | None, purl: PackageURL | None,
1284+
to_response: Callable) -> list:
1285+
"""
1286+
Query by package.
1287+
1288+
This is a ndb.tasklet, so will return a future that will need to be yielded.
1289+
1290+
Args:
1291+
context: QueryContext for the current query.
1292+
package_name: Optional name of the package to query.
1293+
ecosystem: Optional ecosystem of the package to query.
1294+
purl: Optional PackageURL. If purl is None, then both
1295+
package_name and ecosystem need to be set.
1296+
to_response: Function to convert osv.Bug to a
1297+
vulnerability response.
1298+
1299+
Returns:
1300+
list of responses (return values from to_response)
1301+
"""
12191302
bugs = []
12201303
if package_name and ecosystem:
12211304
query = osv.Bug.query(

0 commit comments

Comments
 (0)