1- # Copyright (c) 2024 - 2025 , Oracle and/or its affiliates. All rights reserved.
1+ # Copyright (c) 2024 - 2026 , Oracle and/or its affiliates. All rights reserved.
22# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/.
33
44"""Analyzer checks whether the maintainers' join date closer to latest package's release date."""
1010from macaron .malware_analyzer .datetime_parser import parse_datetime
1111from macaron .malware_analyzer .pypi_heuristics .base_analyzer import BaseHeuristicAnalyzer
1212from macaron .malware_analyzer .pypi_heuristics .heuristics import HeuristicResult , Heuristics
13- from macaron .slsa_analyzer .package_registry .pypi_registry import PyPIPackageJsonAsset , PyPIRegistry
13+ from macaron .slsa_analyzer .package_registry .pypi_registry import PyPIPackageJsonAsset
1414
1515
1616class CloserReleaseJoinDateAnalyzer (BaseHeuristicAnalyzer ):
@@ -33,30 +33,28 @@ def _load_defaults(self) -> int:
3333 return section .getint ("timedelta_threshold_of_join_release" , 5 )
3434 return 5
3535
36- def _get_maintainers_join_date (self , pypi_registry : PyPIRegistry , package_name : str ) -> list [datetime ] | None :
36+ def _get_maintainers_join_date (self , pypi_package_json : PyPIPackageJsonAsset ) -> list [datetime ] | None :
3737 """Get the join date of the maintainers.
3838
3939 Each package might have multiple maintainers.
4040
4141 Parameters
4242 ----------
43- pypi_registry: PyPIRegistry
44- The PyPI registry implementation.
45- package_name: str
46- The package name.
43+ pypi_package_json: PyPIPackageJsonAsset
44+ The PyPI package JSON asset object.
4745
4846 Returns
4947 -------
5048 list[datetime] | None
5149 The maintainers' join date.
5250 """
53- maintainers : list | None = pypi_registry .get_maintainers_of_package (package_name )
51+ maintainers : list | None = pypi_package_json .get_maintainers_of_package ()
5452 if maintainers is None :
5553 return None
5654
5755 join_dates : list [datetime ] = []
5856 for maintainer in maintainers :
59- maintainer_join_date = pypi_registry .get_maintainer_join_date (maintainer )
57+ maintainer_join_date = pypi_package_json . pypi_registry .get_maintainer_join_date (maintainer )
6058 if maintainer_join_date is not None :
6159 join_dates .append (maintainer_join_date )
6260
@@ -94,9 +92,7 @@ def analyze(self, pypi_package_json: PyPIPackageJsonAsset) -> tuple[HeuristicRes
9492 tuple[HeuristicResult, dict[str, JsonType]]:
9593 The result and related information collected during the analysis.
9694 """
97- maintainers_join_date : list [datetime ] | None = self ._get_maintainers_join_date (
98- pypi_package_json .pypi_registry , pypi_package_json .component_name
99- )
95+ maintainers_join_date : list [datetime ] | None = self ._get_maintainers_join_date (pypi_package_json )
10096 latest_release_date : datetime | None = self ._get_latest_release_date (pypi_package_json )
10197 detail_info : dict [str , JsonType ] = {
10298 "maintainers_join_date" : (
0 commit comments