diff --git a/pyproject.toml b/pyproject.toml index 7125d24..b7d6513 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "hatchling.build" [project] name = "socketsecurity" -version = "2.0.35" +version = "2.0.36" requires-python = ">= 3.10" license = {"file" = "LICENSE"} dependencies = [ diff --git a/socketsecurity/__init__.py b/socketsecurity/__init__.py index 452a794..46d0887 100644 --- a/socketsecurity/__init__.py +++ b/socketsecurity/__init__.py @@ -1,3 +1,3 @@ __author__ = 'socket.dev' -__version__ = '2.0.35' +__version__ = '2.0.36' diff --git a/socketsecurity/config.py b/socketsecurity/config.py index 788c572..79b0031 100644 --- a/socketsecurity/config.py +++ b/socketsecurity/config.py @@ -2,6 +2,7 @@ import os from dataclasses import asdict, dataclass from typing import List, Optional +from socketdev import __version__ from socketdev import INTEGRATION_TYPES, IntegrationType @@ -35,6 +36,7 @@ class CliConfig: timeout: Optional[int] = 1200 exclude_license_details: bool = False include_module_folders: bool = False + version: str = __version__ @classmethod def from_args(cls, args_list: Optional[List[str]] = None) -> 'CliConfig': parser = create_argument_parser() @@ -75,6 +77,7 @@ def from_args(cls, args_list: Optional[List[str]] = None) -> 'CliConfig': 'timeout': args.timeout, 'exclude_license_details': args.exclude_license_details, 'include_module_folders': args.include_module_folders, + 'version': __version__ } if args.owner: @@ -360,4 +363,10 @@ def create_argument_parser() -> argparse.ArgumentParser: help="Enabling including module folders like node_modules" ) + parser.add_argument( + '--version', + action='version', + version=f'%(prog)s {__version__}' + ) + return parser \ No newline at end of file diff --git a/socketsecurity/core/__init__.py b/socketsecurity/core/__init__.py index 96aaa9e..4be798a 100644 --- a/socketsecurity/core/__init__.py +++ b/socketsecurity/core/__init__.py @@ -25,9 +25,11 @@ ) from socketsecurity.core.exceptions import APIResourceNotFound from socketsecurity.core.licenses import Licenses - from .socket_config import SocketConfig from .utils import socket_globs +import importlib +logging_std = importlib.import_module("logging") + __all__ = [ "Core", @@ -375,11 +377,12 @@ def create_packages_dict(self, sbom_artifacts: list[SocketArtifact]) -> dict[str else: package.license_text = self.get_package_license_text(package) packages[package.id] = package - for top_id in package.topLevelAncestors: - if top_id not in top_level_count: - top_level_count[top_id] = 1 - else: - top_level_count[top_id] += 1 + if package.topLevelAncestors: + for top_id in package.topLevelAncestors: + if top_id not in top_level_count: + top_level_count[top_id] = 1 + else: + top_level_count[top_id] += 1 for package_id, package in packages.items(): package.transitives = top_level_count.get(package_id, 0) @@ -424,10 +427,14 @@ def get_repo_info(self, repo_slug: str, default_branch: str = "socket-default-br Exception: If API request fails """ try: + sdk_logger = logging_std.getLogger("socketdev") + original_level = sdk_logger.level + sdk_logger.setLevel(logging_std.CRITICAL) response = self.sdk.repos.repo(self.config.org_slug, repo_slug, use_types=True) + sdk_logger.setLevel(original_level) if not response.success: log.error(f"Failed to get repository: {response.status}") - log.error(response.message) + # log.error(response.message) except APIFailure: log.warning(f"Failed to get repository {repo_slug}, attempting to create it") try: