Skip to content

Commit 1f529e7

Browse files
committed
retry
Signed-off-by: rn23thakur <[email protected]>
1 parent f3ac1da commit 1f529e7

File tree

4 files changed

+31
-4
lines changed

4 files changed

+31
-4
lines changed

cyclonedx_py/_internal/environment.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
from . import BomBuilder, PropertyName, PurlTypePypi
3737
from .cli_common import add_argument_mc_type, add_argument_pyproject
3838
from .utils.cdx import licenses_fixup, make_bom
39-
from .utils.packaging import metadata2extrefs, metadata2licenses, normalize_packagename
39+
from .utils.packaging import metadata2extrefs, metadata2licenses, metadata2tags, normalize_packagename
4040
from .utils.pep610 import PackageSourceArchive, PackageSourceVcs, packagesource2extref, packagesource4dist
4141
from .utils.pep639 import dist2licenses_from_files as pep639_dist2licenses_from_files
4242
from .utils.pyproject import pyproject2component, pyproject2dependencies, pyproject_load
@@ -185,6 +185,9 @@ def __add_components(self, bom: 'Bom',
185185
# path of dist-package on disc? naaa... a package may have multiple files/folders on disc
186186
)
187187

188+
if hasattr(component, 'tags'):
189+
component.tags.update(metadata2tags(dist_meta))
190+
188191
# region licenses
189192
component.licenses.update(metadata2licenses(dist_meta, LicenseFactory(),
190193
gather_texts=self._gather_license_texts))

cyclonedx_py/_internal/pipenv.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
from .cli_common import add_argument_mc_type, add_argument_pyproject
3434
from .utils.args import arparse_split
3535
from .utils.cdx import make_bom
36-
from .utils.packaging import normalize_packagename
36+
from .utils.packaging import normalize_packagename, to_tags
3737
from .utils.pyproject import pyproject_file2component
3838
from .utils.secret import redact_auth_from_url
3939

@@ -175,6 +175,8 @@ def _make_bom(self, root_c: Optional['Component'],
175175
version=package_data['version'][2:] if 'version' in package_data else None,
176176
external_references=self.__make_extrefs(package_name, package_data, source_urls),
177177
)
178+
if hasattr(component, 'tags'):
179+
component.tags.update(to_tags(package_data.get('keywords')))
178180
component.purl = PackageURL(
179181
type=PurlTypePypi,
180182
name=component.name,

cyclonedx_py/_internal/poetry.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
from . import BomBuilder, PropertyName, PurlTypePypi
3535
from .cli_common import add_argument_mc_type
3636
from .utils.cdx import make_bom
37-
from .utils.packaging import normalize_packagename
37+
from .utils.packaging import normalize_packagename, to_tags
3838
from .utils.poetry import poetry2component
3939
from .utils.secret import redact_auth_from_url
4040
from .utils.toml import toml_loads
@@ -404,7 +404,7 @@ def __make_component4lock(self, package: 'T_NameDict') -> 'Component':
404404
is_vcs = source.get('type') in self.__PACKAGE_SRC_VCS
405405
is_local = source.get('type') in self.__PACKAGE_SRC_LOCAL
406406

407-
return Component(
407+
component = Component(
408408
bom_ref=f'{package["name"]}@{package["version"]}',
409409
name=package['name'],
410410
version=package.get('version'),
@@ -433,6 +433,12 @@ def __make_component4lock(self, package: 'T_NameDict') -> 'Component':
433433
) if not is_local else None
434434
)
435435

436+
if hasattr(component, 'tags'):
437+
component.tags.update(to_tags(package.get('keywords')))
438+
self._logger.debug('component created: %r', component)
439+
440+
return component
441+
436442
def __purl_qualifiers4lock(self, package: 'T_NameDict') -> 'T_NameDict':
437443
# see https://github.com/package-url/purl-spec/blob/master/PURL-SPECIFICATION.rst
438444
qs = {}

cyclonedx_py/_internal/utils/packaging.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,22 @@
3333
from ..py_interop.packagemetadata import PackageMetadata
3434

3535

36+
_KEYWORDS_SPLIT_MATCHER = re_compile(r'[;, ]+')
37+
38+
39+
def metadata2tags(metadata: 'PackageMetadata') -> Generator[str, None, None]:
40+
"""
41+
Generate tags from metadata keywords.
42+
"""
43+
keywords_string = metadata.get('Keywords', '')
44+
if keywords_string:
45+
yield from (
46+
tag
47+
for tag in (s.strip() for s in _KEYWORDS_SPLIT_MATCHER.split(keywords_string))
48+
if tag
49+
)
50+
51+
3652
def metadata2licenses(metadata: 'PackageMetadata', lfac: 'LicenseFactory',
3753
gather_texts: bool
3854
) -> Generator['License', None, None]:

0 commit comments

Comments
 (0)