cycode 3.6.1.dev2__py3-none-any.whl → 3.6.1.dev4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cycode/__init__.py +1 -1
- cycode/cli/app.py +2 -1
- cycode/cli/apps/report_import/__init__.py +8 -0
- cycode/cli/apps/report_import/report_import_command.py +13 -0
- cycode/cli/apps/report_import/sbom/__init__.py +6 -0
- cycode/cli/apps/report_import/sbom/sbom_command.py +76 -0
- cycode/cli/cli_types.py +6 -0
- cycode/cli/utils/get_api_client.py +8 -1
- cycode/cyclient/client_creator.py +6 -0
- cycode/cyclient/import_sbom_client.py +81 -0
- cycode/cyclient/models.py +38 -2
- {cycode-3.6.1.dev2.dist-info → cycode-3.6.1.dev4.dist-info}/METADATA +25 -4
- {cycode-3.6.1.dev2.dist-info → cycode-3.6.1.dev4.dist-info}/RECORD +16 -11
- {cycode-3.6.1.dev2.dist-info → cycode-3.6.1.dev4.dist-info}/WHEEL +0 -0
- {cycode-3.6.1.dev2.dist-info → cycode-3.6.1.dev4.dist-info}/entry_points.txt +0 -0
- {cycode-3.6.1.dev2.dist-info → cycode-3.6.1.dev4.dist-info}/licenses/LICENCE +0 -0
cycode/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '3.6.1.
|
|
1
|
+
__version__ = '3.6.1.dev4' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
|
cycode/cli/app.py
CHANGED
|
@@ -9,7 +9,7 @@ from typer._completion_shared import Shells
|
|
|
9
9
|
from typer.completion import install_callback, show_callback
|
|
10
10
|
|
|
11
11
|
from cycode import __version__
|
|
12
|
-
from cycode.cli.apps import ai_remediation, auth, configure, ignore, report, scan, status
|
|
12
|
+
from cycode.cli.apps import ai_remediation, auth, configure, ignore, report, report_import, scan, status
|
|
13
13
|
|
|
14
14
|
if sys.version_info >= (3, 10):
|
|
15
15
|
from cycode.cli.apps import mcp
|
|
@@ -50,6 +50,7 @@ app.add_typer(auth.app)
|
|
|
50
50
|
app.add_typer(configure.app)
|
|
51
51
|
app.add_typer(ignore.app)
|
|
52
52
|
app.add_typer(report.app)
|
|
53
|
+
app.add_typer(report_import.app)
|
|
53
54
|
app.add_typer(scan.app)
|
|
54
55
|
app.add_typer(status.app)
|
|
55
56
|
if sys.version_info >= (3, 10):
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import typer
|
|
2
|
+
|
|
3
|
+
from cycode.cli.apps.report_import.report_import_command import report_import_command
|
|
4
|
+
from cycode.cli.apps.report_import.sbom import sbom_command
|
|
5
|
+
|
|
6
|
+
app = typer.Typer(name='import', no_args_is_help=True)
|
|
7
|
+
app.callback(short_help='Import report. You`ll need to specify which report type to import.')(report_import_command)
|
|
8
|
+
app.command(name='sbom', short_help='Import SBOM report from a local path.')(sbom_command)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import typer
|
|
2
|
+
|
|
3
|
+
from cycode.cli.utils.sentry import add_breadcrumb
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def report_import_command(ctx: typer.Context) -> int:
|
|
7
|
+
""":bar_chart: [bold cyan]Import security reports.[/]
|
|
8
|
+
|
|
9
|
+
Example usage:
|
|
10
|
+
* `cycode import sbom`: Import SBOM report
|
|
11
|
+
"""
|
|
12
|
+
add_breadcrumb('import')
|
|
13
|
+
return 1
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
from typing import Annotated, Optional
|
|
3
|
+
|
|
4
|
+
import typer
|
|
5
|
+
|
|
6
|
+
from cycode.cli.cli_types import BusinessImpactOption
|
|
7
|
+
from cycode.cli.exceptions.handle_report_sbom_errors import handle_report_exception
|
|
8
|
+
from cycode.cli.utils.get_api_client import get_import_sbom_cycode_client
|
|
9
|
+
from cycode.cli.utils.sentry import add_breadcrumb
|
|
10
|
+
from cycode.cyclient.import_sbom_client import ImportSbomParameters
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def sbom_command(
|
|
14
|
+
ctx: typer.Context,
|
|
15
|
+
path: Annotated[
|
|
16
|
+
Path,
|
|
17
|
+
typer.Argument(
|
|
18
|
+
exists=True, resolve_path=True, dir_okay=False, readable=True, help='Path to SBOM file.', show_default=False
|
|
19
|
+
),
|
|
20
|
+
],
|
|
21
|
+
sbom_name: Annotated[
|
|
22
|
+
str, typer.Option('--name', '-n', help='SBOM Name.', case_sensitive=False, show_default=False)
|
|
23
|
+
],
|
|
24
|
+
vendor: Annotated[
|
|
25
|
+
str, typer.Option('--vendor', '-v', help='Vendor Name.', case_sensitive=False, show_default=False)
|
|
26
|
+
],
|
|
27
|
+
labels: Annotated[
|
|
28
|
+
Optional[list[str]],
|
|
29
|
+
typer.Option(
|
|
30
|
+
'--label', '-l', help='Label, can be specified multiple times.', case_sensitive=False, show_default=False
|
|
31
|
+
),
|
|
32
|
+
] = None,
|
|
33
|
+
owners: Annotated[
|
|
34
|
+
Optional[list[str]],
|
|
35
|
+
typer.Option(
|
|
36
|
+
'--owner',
|
|
37
|
+
'-o',
|
|
38
|
+
help='Email address of a user in Cycode platform, can be specified multiple times.',
|
|
39
|
+
case_sensitive=True,
|
|
40
|
+
show_default=False,
|
|
41
|
+
),
|
|
42
|
+
] = None,
|
|
43
|
+
business_impact: Annotated[
|
|
44
|
+
BusinessImpactOption,
|
|
45
|
+
typer.Option(
|
|
46
|
+
'--business-impact',
|
|
47
|
+
'-b',
|
|
48
|
+
help='Business Impact.',
|
|
49
|
+
case_sensitive=True,
|
|
50
|
+
show_default=True,
|
|
51
|
+
),
|
|
52
|
+
] = BusinessImpactOption.MEDIUM,
|
|
53
|
+
) -> None:
|
|
54
|
+
"""Import SBOM."""
|
|
55
|
+
add_breadcrumb('sbom')
|
|
56
|
+
|
|
57
|
+
client = get_import_sbom_cycode_client(ctx)
|
|
58
|
+
|
|
59
|
+
import_parameters = ImportSbomParameters(
|
|
60
|
+
Name=sbom_name,
|
|
61
|
+
Vendor=vendor,
|
|
62
|
+
BusinessImpact=business_impact,
|
|
63
|
+
Labels=labels,
|
|
64
|
+
Owners=owners,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
try:
|
|
68
|
+
if not path.exists():
|
|
69
|
+
from errno import ENOENT
|
|
70
|
+
from os import strerror
|
|
71
|
+
|
|
72
|
+
raise FileNotFoundError(ENOENT, strerror(ENOENT), path.absolute())
|
|
73
|
+
|
|
74
|
+
client.request_sbom_import_execution(import_parameters, path)
|
|
75
|
+
except Exception as e:
|
|
76
|
+
handle_report_exception(ctx, e)
|
cycode/cli/cli_types.py
CHANGED
|
@@ -3,11 +3,12 @@ from typing import TYPE_CHECKING, Optional, Union
|
|
|
3
3
|
import click
|
|
4
4
|
|
|
5
5
|
from cycode.cli.user_settings.credentials_manager import CredentialsManager
|
|
6
|
-
from cycode.cyclient.client_creator import create_report_client, create_scan_client
|
|
6
|
+
from cycode.cyclient.client_creator import create_import_sbom_client, create_report_client, create_scan_client
|
|
7
7
|
|
|
8
8
|
if TYPE_CHECKING:
|
|
9
9
|
import typer
|
|
10
10
|
|
|
11
|
+
from cycode.cyclient.import_sbom_client import ImportSbomClient
|
|
11
12
|
from cycode.cyclient.report_client import ReportClient
|
|
12
13
|
from cycode.cyclient.scan_client import ScanClient
|
|
13
14
|
|
|
@@ -38,6 +39,12 @@ def get_report_cycode_client(ctx: 'typer.Context', hide_response_log: bool = Tru
|
|
|
38
39
|
return _get_cycode_client(create_report_client, client_id, client_secret, hide_response_log)
|
|
39
40
|
|
|
40
41
|
|
|
42
|
+
def get_import_sbom_cycode_client(ctx: 'typer.Context', hide_response_log: bool = True) -> 'ImportSbomClient':
|
|
43
|
+
client_id = ctx.obj.get('client_id')
|
|
44
|
+
client_secret = ctx.obj.get('client_secret')
|
|
45
|
+
return _get_cycode_client(create_import_sbom_client, client_id, client_secret, hide_response_log)
|
|
46
|
+
|
|
47
|
+
|
|
41
48
|
def _get_configured_credentials() -> tuple[str, str]:
|
|
42
49
|
credentials_manager = CredentialsManager()
|
|
43
50
|
return credentials_manager.get_credentials()
|
|
@@ -2,6 +2,7 @@ from cycode.cyclient.config import dev_mode
|
|
|
2
2
|
from cycode.cyclient.config_dev import DEV_CYCODE_API_URL
|
|
3
3
|
from cycode.cyclient.cycode_dev_based_client import CycodeDevBasedClient
|
|
4
4
|
from cycode.cyclient.cycode_token_based_client import CycodeTokenBasedClient
|
|
5
|
+
from cycode.cyclient.import_sbom_client import ImportSbomClient
|
|
5
6
|
from cycode.cyclient.report_client import ReportClient
|
|
6
7
|
from cycode.cyclient.scan_client import ScanClient
|
|
7
8
|
from cycode.cyclient.scan_config_base import DefaultScanConfig, DevScanConfig
|
|
@@ -21,3 +22,8 @@ def create_scan_client(client_id: str, client_secret: str, hide_response_log: bo
|
|
|
21
22
|
def create_report_client(client_id: str, client_secret: str, _: bool) -> ReportClient:
|
|
22
23
|
client = CycodeDevBasedClient(DEV_CYCODE_API_URL) if dev_mode else CycodeTokenBasedClient(client_id, client_secret)
|
|
23
24
|
return ReportClient(client)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def create_import_sbom_client(client_id: str, client_secret: str, _: bool) -> ImportSbomClient:
|
|
28
|
+
client = CycodeDevBasedClient(DEV_CYCODE_API_URL) if dev_mode else CycodeTokenBasedClient(client_id, client_secret)
|
|
29
|
+
return ImportSbomClient(client)
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
from requests import Response
|
|
6
|
+
|
|
7
|
+
from cycode.cli.cli_types import BusinessImpactOption
|
|
8
|
+
from cycode.cli.exceptions.custom_exceptions import RequestHttpError
|
|
9
|
+
from cycode.cyclient import models
|
|
10
|
+
from cycode.cyclient.cycode_client_base import CycodeClientBase
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclasses.dataclass
|
|
14
|
+
class ImportSbomParameters:
|
|
15
|
+
Name: str
|
|
16
|
+
Vendor: str
|
|
17
|
+
BusinessImpact: BusinessImpactOption
|
|
18
|
+
Labels: Optional[list[str]]
|
|
19
|
+
Owners: Optional[list[str]]
|
|
20
|
+
|
|
21
|
+
def _owners_to_ids(self) -> list[str]:
|
|
22
|
+
return []
|
|
23
|
+
|
|
24
|
+
def to_request_form(self) -> dict:
|
|
25
|
+
form_data = {}
|
|
26
|
+
for field in dataclasses.fields(self):
|
|
27
|
+
key = field.name
|
|
28
|
+
val = getattr(self, key)
|
|
29
|
+
if val is None or len(val) == 0:
|
|
30
|
+
continue
|
|
31
|
+
if isinstance(val, list):
|
|
32
|
+
form_data[f'{key}[]'] = val
|
|
33
|
+
else:
|
|
34
|
+
form_data[key] = val
|
|
35
|
+
return form_data
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class ImportSbomClient:
|
|
39
|
+
IMPORT_SBOM_REQUEST_PATH: str = 'v4/sbom/import'
|
|
40
|
+
GET_USER_ID_REQUEST_PATH: str = 'v4/members'
|
|
41
|
+
|
|
42
|
+
def __init__(self, client: CycodeClientBase) -> None:
|
|
43
|
+
self.client = client
|
|
44
|
+
|
|
45
|
+
def request_sbom_import_execution(self, params: ImportSbomParameters, file_path: Path) -> None:
|
|
46
|
+
if params.Owners:
|
|
47
|
+
owners_ids = self.get_owners_user_ids(params.Owners)
|
|
48
|
+
params.Owners = owners_ids
|
|
49
|
+
|
|
50
|
+
form_data = params.to_request_form()
|
|
51
|
+
|
|
52
|
+
with open(file_path.absolute(), 'rb') as f:
|
|
53
|
+
request_args = {
|
|
54
|
+
'url_path': self.IMPORT_SBOM_REQUEST_PATH,
|
|
55
|
+
'data': form_data,
|
|
56
|
+
'files': {'File': f},
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
response = self.client.post(**request_args)
|
|
60
|
+
|
|
61
|
+
if response.status_code != 201:
|
|
62
|
+
raise RequestHttpError(response.status_code, response.text, response)
|
|
63
|
+
|
|
64
|
+
def get_owners_user_ids(self, owners: list[str]) -> list[str]:
|
|
65
|
+
return [self._get_user_id_by_email(owner) for owner in owners]
|
|
66
|
+
|
|
67
|
+
def _get_user_id_by_email(self, email: str) -> str:
|
|
68
|
+
request_args = {'url_path': self.GET_USER_ID_REQUEST_PATH, 'params': {'email': email}}
|
|
69
|
+
|
|
70
|
+
response = self.client.get(**request_args)
|
|
71
|
+
member_details = self.parse_requested_member_details_response(response)
|
|
72
|
+
|
|
73
|
+
if not member_details.items:
|
|
74
|
+
raise Exception(
|
|
75
|
+
f"Failed to find user with email '{email}'. Verify this email is registered to Cycode platform"
|
|
76
|
+
)
|
|
77
|
+
return member_details.items.pop(0).external_id
|
|
78
|
+
|
|
79
|
+
@staticmethod
|
|
80
|
+
def parse_requested_member_details_response(response: Response) -> models.MemberDetails:
|
|
81
|
+
return models.RequestedMemberDetailsResultSchema().load(response.json())
|
cycode/cyclient/models.py
CHANGED
|
@@ -47,10 +47,10 @@ class DetectionSchema(Schema):
|
|
|
47
47
|
class Meta:
|
|
48
48
|
unknown = EXCLUDE
|
|
49
49
|
|
|
50
|
-
id = fields.String(
|
|
50
|
+
id = fields.String(load_default=None)
|
|
51
51
|
message = fields.String()
|
|
52
52
|
type = fields.String()
|
|
53
|
-
severity = fields.String(
|
|
53
|
+
severity = fields.String(load_default=None)
|
|
54
54
|
detection_type_id = fields.String()
|
|
55
55
|
detection_details = fields.Dict()
|
|
56
56
|
detection_rule_id = fields.String()
|
|
@@ -402,6 +402,42 @@ class RequestedSbomReportResultSchema(Schema):
|
|
|
402
402
|
return SbomReport(**data)
|
|
403
403
|
|
|
404
404
|
|
|
405
|
+
@dataclass
|
|
406
|
+
class Member:
|
|
407
|
+
external_id: str
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
class MemberSchema(Schema):
|
|
411
|
+
class Meta:
|
|
412
|
+
unknown = EXCLUDE
|
|
413
|
+
|
|
414
|
+
external_id = fields.String()
|
|
415
|
+
|
|
416
|
+
@post_load
|
|
417
|
+
def build_dto(self, data: dict[str, Any], **_) -> Member:
|
|
418
|
+
return Member(**data)
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
@dataclass
|
|
422
|
+
class MemberDetails:
|
|
423
|
+
items: list[Member]
|
|
424
|
+
page_size: int
|
|
425
|
+
next_page_token: Optional[str]
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
class RequestedMemberDetailsResultSchema(Schema):
|
|
429
|
+
class Meta:
|
|
430
|
+
unknown = EXCLUDE
|
|
431
|
+
|
|
432
|
+
items = fields.List(fields.Nested(MemberSchema))
|
|
433
|
+
page_size = fields.Integer()
|
|
434
|
+
next_page_token = fields.String(allow_none=True)
|
|
435
|
+
|
|
436
|
+
@post_load
|
|
437
|
+
def build_dto(self, data: dict[str, Any], **_) -> MemberDetails:
|
|
438
|
+
return MemberDetails(**data)
|
|
439
|
+
|
|
440
|
+
|
|
405
441
|
@dataclass
|
|
406
442
|
class ClassificationData:
|
|
407
443
|
severity: str
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cycode
|
|
3
|
-
Version: 3.6.1.
|
|
3
|
+
Version: 3.6.1.dev4
|
|
4
4
|
Summary: Boost security in your dev lifecycle via SAST, SCA, Secrets & IaC scanning.
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
License-File: LICENCE
|
|
@@ -99,8 +99,9 @@ This guide walks you through both installation and usage.
|
|
|
99
99
|
6. [Ignoring via a config file](#ignoring-via-a-config-file)
|
|
100
100
|
6. [Report command](#report-command)
|
|
101
101
|
1. [Generating SBOM Report](#generating-sbom-report)
|
|
102
|
-
7. [
|
|
103
|
-
8. [
|
|
102
|
+
7. [Import command](#import-command)
|
|
103
|
+
8. [Scan logs](#scan-logs)
|
|
104
|
+
9. [Syntax Help](#syntax-help)
|
|
104
105
|
|
|
105
106
|
# Prerequisites
|
|
106
107
|
|
|
@@ -975,7 +976,7 @@ It works just like a `.gitignore` file. This helps you focus scans on your relev
|
|
|
975
976
|
|
|
976
977
|
### Supported Scanners
|
|
977
978
|
- SAST
|
|
978
|
-
-
|
|
979
|
+
- IaC (comming soon)
|
|
979
980
|
- SCA (comming soon)
|
|
980
981
|
|
|
981
982
|
## Scan Results
|
|
@@ -1338,6 +1339,26 @@ To create an SBOM report for a path:\
|
|
|
1338
1339
|
For example:\
|
|
1339
1340
|
`cycode report sbom --format spdx-2.3 --include-vulnerabilities --include-dev-dependencies path /path/to/local/project`
|
|
1340
1341
|
|
|
1342
|
+
# Import Command
|
|
1343
|
+
|
|
1344
|
+
## Importing SBOM
|
|
1345
|
+
|
|
1346
|
+
A software bill of materials (SBOM) is an inventory of all constituent components and software dependencies involved in the development and delivery of an application.
|
|
1347
|
+
Using this command, you can import an SBOM file from your file system into Cycode.
|
|
1348
|
+
|
|
1349
|
+
The following options are available for use with this command:
|
|
1350
|
+
|
|
1351
|
+
| Option | Description | Required | Default |
|
|
1352
|
+
|----------------------------------------------------|--------------------------------------------|----------|-------------------------------------------------------|
|
|
1353
|
+
| `-n, --name TEXT` | Display name of the SBOM | Yes | |
|
|
1354
|
+
| `-v, --vendor TEXT` | Name of the entity that provided the SBOM | Yes | |
|
|
1355
|
+
| `-l, --label TEXT` | Attach label to the SBOM | No | |
|
|
1356
|
+
| `-o, --owner TEXT` | Email address of the Cycode user that serves as point of contact for this SBOM | No | |
|
|
1357
|
+
| `-b, --business-impact [High \| Medium \| Low]` | Business Impact | No | Medium |
|
|
1358
|
+
|
|
1359
|
+
For example:\
|
|
1360
|
+
`cycode import sbom --name example-sbom --vendor cycode -label tag1 -label tag2 --owner example@cycode.com /path/to/local/project`
|
|
1361
|
+
|
|
1341
1362
|
# Scan Logs
|
|
1342
1363
|
|
|
1343
1364
|
All CLI scans are logged in Cycode. The logs can be found under Settings > CLI Logs.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
cycode/__init__.py,sha256=
|
|
1
|
+
cycode/__init__.py,sha256=c2RE1hZdSicjah5HMad6L-H-iMCI9WxixYfvXEDi9x0,114
|
|
2
2
|
cycode/__main__.py,sha256=Z3bD5yrA7yPvAChcADQrqCaZd0ChGI1gdiwALwbWJ6U,104
|
|
3
3
|
cycode/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
cycode/cli/app.py,sha256=
|
|
4
|
+
cycode/cli/app.py,sha256=qo_GU1ivrJKEjx8HQtjbHOE1hAXr4tzCexD1qw5W8bg,6146
|
|
5
5
|
cycode/cli/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
cycode/cli/apps/ai_remediation/__init__.py,sha256=8vYthY9RQeJqEni3AIF5sryz8n-XJQ6VNqG4aEFBAdY,553
|
|
7
7
|
cycode/cli/apps/ai_remediation/ai_remediation_command.py,sha256=u1EdebaKCEmzv9fXmnIN0xDSLcCmGyjueYKvYfLOj_8,1549
|
|
@@ -31,6 +31,10 @@ cycode/cli/apps/report/sbom/repository_url/__init__.py,sha256=47DEQpj8HBSa-_TImW
|
|
|
31
31
|
cycode/cli/apps/report/sbom/repository_url/repository_url_command.py,sha256=VO4jSR748BEpCuOrAvOK4_rNLw63lO4iHCTfWkWdfMQ,2179
|
|
32
32
|
cycode/cli/apps/report/sbom/sbom_command.py,sha256=bykQnmO0CCNInkih6bGmCcq5HFH-ItkFHPoxz683HCc,2229
|
|
33
33
|
cycode/cli/apps/report/sbom/sbom_report_file.py,sha256=uyaJRvmg1K4DvJaMppbCf6yCj6UU-NdvNg-ZVZk0jx4,1576
|
|
34
|
+
cycode/cli/apps/report_import/__init__.py,sha256=T9KSL2TwQKQTNbck7JBlQAf7w8W3Q3VQLn_BCzVLWrA,424
|
|
35
|
+
cycode/cli/apps/report_import/report_import_command.py,sha256=EivY6aPH9quj_tCTGCxq-lwnCo4nyIQNgZ482GNmrBY,296
|
|
36
|
+
cycode/cli/apps/report_import/sbom/__init__.py,sha256=5E9x4UqWsk333RlklV9cCo7Q9o019zIhx-uac109YcU,210
|
|
37
|
+
cycode/cli/apps/report_import/sbom/sbom_command.py,sha256=aTFGXxpdvqMdxFpEKZs927EL7MRzCbu8oXVXuYdHnKA,2355
|
|
34
38
|
cycode/cli/apps/scan/__init__.py,sha256=-q1AIBnrQ4GP0CVKFLr_2CdWf9TBQC90ejSL4I7rxuA,2444
|
|
35
39
|
cycode/cli/apps/scan/aggregation_report.py,sha256=8f9kPfO7biNf5OsDZG6UhMPqG6ymoFrX5GBtlEIfFAg,1540
|
|
36
40
|
cycode/cli/apps/scan/code_scanner.py,sha256=lNVyIhvA1IwufPZA4vT_ZyCaVdgio1xEaKa7oH3apdU,11402
|
|
@@ -60,7 +64,7 @@ cycode/cli/apps/status/get_cli_status.py,sha256=qAuDdtWTCMI8ChYrQzgeJI31v8dDu-aE
|
|
|
60
64
|
cycode/cli/apps/status/models.py,sha256=2SBpJlh_MNCPxv8aXMV5D4GfK6-G-XB0GlMFZ3Nep_o,1907
|
|
61
65
|
cycode/cli/apps/status/status_command.py,sha256=B8YZ4hibWkjkAkikailll2lkJmCRYh9APdvZSR4L33c,1069
|
|
62
66
|
cycode/cli/apps/status/version_command.py,sha256=c6Iko_rmZo9T_kQSd3HUloBi40Qv7cjgKJNVxpMiMfE,315
|
|
63
|
-
cycode/cli/cli_types.py,sha256=
|
|
67
|
+
cycode/cli/cli_types.py,sha256=kSqVRkm3zGmGTugXLV3qLTMxwUdnVFsIPEPHao4xY04,2885
|
|
64
68
|
cycode/cli/config.py,sha256=EblYUlUA4lTp_lrL3gMG-cW7FUOTE1jtGIOljcLnEzk,250
|
|
65
69
|
cycode/cli/console.py,sha256=vp-DHwlkwpwdsPyfwGdjsPF-6-Bi3f8W7G-W_YXCMH8,1914
|
|
66
70
|
cycode/cli/consts.py,sha256=hZF6NL3asl3GLa2nMsxjZB6LGey8nMX304s8u7ARBPs,8885
|
|
@@ -129,7 +133,7 @@ cycode/cli/user_settings/credentials_manager.py,sha256=jT8pTjldk6WmDyTJPidYQxREu
|
|
|
129
133
|
cycode/cli/user_settings/jwt_creator.py,sha256=xEkFLFqhwbNJnXuIi02XDxoj2E-4Nw-m10uJaHl3luA,745
|
|
130
134
|
cycode/cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
131
135
|
cycode/cli/utils/enum_utils.py,sha256=h_VTCfJ-0hnhwDsEznmx56rJrCb5FQ8u6PrI6p8MP3E,187
|
|
132
|
-
cycode/cli/utils/get_api_client.py,sha256=
|
|
136
|
+
cycode/cli/utils/get_api_client.py,sha256=wj5g9blyM8drsTFs59bsXEMfKJXqlssl5H0e1q5OwKQ,2097
|
|
133
137
|
cycode/cli/utils/git_proxy.py,sha256=FPHMBiyLFK9X9vKYpKySRKJH6Dc9Cb3nO241Q95dASE,2911
|
|
134
138
|
cycode/cli/utils/ignore_utils.py,sha256=cODqhnOHA2kRo8rMY0YcmcKkmXNPOC9UTCmFu62RRqE,15567
|
|
135
139
|
cycode/cli/utils/jwt_utils.py,sha256=TfTHCCCxKO6RvSKT2qspx4577Gax3n9YRj2UgigpGuQ,537
|
|
@@ -146,7 +150,7 @@ cycode/cli/utils/yaml_utils.py,sha256=R-tqzl0C-zoa42rS7nfWeHu3GJ0jpbQUyyqYYU2hle
|
|
|
146
150
|
cycode/config.py,sha256=jHORGZQcAXkAGSf2XreC-RQoc8sdNWja69QKtPWTbWo,1044
|
|
147
151
|
cycode/cyclient/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
148
152
|
cycode/cyclient/auth_client.py,sha256=TwbmZ358Ancf-Q-IZolvfljZ8691_6botsqd0R0PLPk,2105
|
|
149
|
-
cycode/cyclient/client_creator.py,sha256=
|
|
153
|
+
cycode/cyclient/client_creator.py,sha256=g8MON1CGsBCmsh2B-Kpmpq99cixfSBzT3dQLWYomVtU,1390
|
|
150
154
|
cycode/cyclient/config.py,sha256=Le3YYp7LyclTwS4vonuFipfRA1qhyC28_muUtxpnImc,1387
|
|
151
155
|
cycode/cyclient/config_dev.py,sha256=GJ3w8Q-ow5SvXGBFA34eaeoI6GhitavAGy3UfcUh9OU,120
|
|
152
156
|
cycode/cyclient/cycode_client.py,sha256=ifZMA4RlFw4QNHku5ZxmtUKglH2yd1479yYZGDtxVvw,257
|
|
@@ -154,14 +158,15 @@ cycode/cyclient/cycode_client_base.py,sha256=qkOwul-H4cF3-ffX2iA6BKXkoQthDSO9unw
|
|
|
154
158
|
cycode/cyclient/cycode_dev_based_client.py,sha256=8LxeUWizXzZ0ilpwb6Q0W4ZMLZyZdKPzgpl5xcRmT8c,664
|
|
155
159
|
cycode/cyclient/cycode_token_based_client.py,sha256=tD_HWgkz0VDcU4AQsPxHxGTwfQ8KlpXGHNbyfRxu2jk,3779
|
|
156
160
|
cycode/cyclient/headers.py,sha256=5aLezpRDBzueH9T1hB_6VyUydRpTs3rN17CDDPn1BxI,1448
|
|
161
|
+
cycode/cyclient/import_sbom_client.py,sha256=M0RAn2dDh9woI3SUkgSHCQxhbARoLpyAM3amOausz8E,2749
|
|
157
162
|
cycode/cyclient/logger.py,sha256=oTkay7QzoOIVQ71cGOy4ukkijYGA3IKJlHkL24Px5ds,70
|
|
158
|
-
cycode/cyclient/models.py,sha256=
|
|
163
|
+
cycode/cyclient/models.py,sha256=U_37PROmaat5ehliH1YZ71iVecF7dPvXPTNOoj67Thg,15017
|
|
159
164
|
cycode/cyclient/report_client.py,sha256=h12pz3vWCwDF73BhqFX7iDSxBgQDFwkiGh3hmul2nsM,3965
|
|
160
165
|
cycode/cyclient/scan_client.py,sha256=uTBEjgfaCVuJREo73p_zkIVA23NQfdJ1d1-bzc7nSKk,12682
|
|
161
166
|
cycode/cyclient/scan_config_base.py,sha256=mXsPZGYCtp85rv5GIige40yQZXuRcEKUW-VQJ0vgFzk,1201
|
|
162
167
|
cycode/logger.py,sha256=xAzpkWLZhixO4egRcYn4HXM9lIfx5wHdpkHxNc5jrX8,2225
|
|
163
|
-
cycode-3.6.1.
|
|
164
|
-
cycode-3.6.1.
|
|
165
|
-
cycode-3.6.1.
|
|
166
|
-
cycode-3.6.1.
|
|
167
|
-
cycode-3.6.1.
|
|
168
|
+
cycode-3.6.1.dev4.dist-info/METADATA,sha256=fsz-34ufahf3ru-EPRdf5LxT60UNld9YfT7z1nhu2NU,78429
|
|
169
|
+
cycode-3.6.1.dev4.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
170
|
+
cycode-3.6.1.dev4.dist-info/entry_points.txt,sha256=iDcVJM8ByLElVgvBgtYxDjw1kT7O8Mo0LcWZIT5L3Ig,45
|
|
171
|
+
cycode-3.6.1.dev4.dist-info/licenses/LICENCE,sha256=2Wx4N6mD_4xB7-E3hPkZ3MPhpJy__k_I8MaCSO-PDRo,1068
|
|
172
|
+
cycode-3.6.1.dev4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|