fosslight-dependency 3.15.5__tar.gz → 3.15.6__tar.gz

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.
Files changed (37) hide show
  1. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/PKG-INFO +1 -1
  2. fosslight_dependency-3.15.5/src/fosslight_dependency.egg-info/requires.txt → fosslight_dependency-3.15.6/requirements.txt +3 -1
  3. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/setup.py +1 -1
  4. fosslight_dependency-3.15.6/src/fosslight_dependency/_graph_convertor.py +68 -0
  5. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/_help.py +4 -0
  6. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/package_manager/Cocoapods.py +1 -1
  7. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/run_dependency_scanner.py +22 -2
  8. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency.egg-info/PKG-INFO +1 -1
  9. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency.egg-info/SOURCES.txt +1 -0
  10. fosslight_dependency-3.15.5/requirements.txt → fosslight_dependency-3.15.6/src/fosslight_dependency.egg-info/requires.txt +4 -2
  11. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/LICENSE +0 -0
  12. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/LICENSES/Apache-2.0.txt +0 -0
  13. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/LICENSES/LicenseRef-3rd_party_licenses.txt +0 -0
  14. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/LICENSES/MIT.txt +0 -0
  15. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/MANIFEST.in +0 -0
  16. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/README.md +0 -0
  17. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/setup.cfg +0 -0
  18. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/__init__.py +0 -0
  19. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/_analyze_dependency.py +0 -0
  20. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/_package_manager.py +0 -0
  21. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/constant.py +0 -0
  22. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/package_manager/Android.py +0 -0
  23. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/package_manager/Carthage.py +0 -0
  24. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/package_manager/Go.py +0 -0
  25. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/package_manager/Gradle.py +0 -0
  26. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/package_manager/Helm.py +0 -0
  27. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/package_manager/Maven.py +0 -0
  28. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/package_manager/Npm.py +0 -0
  29. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/package_manager/Nuget.py +0 -0
  30. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/package_manager/Pub.py +0 -0
  31. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/package_manager/Pypi.py +0 -0
  32. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/package_manager/Swift.py +0 -0
  33. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/package_manager/Unity.py +0 -0
  34. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency/package_manager/__init__.py +0 -0
  35. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency.egg-info/dependency_links.txt +0 -0
  36. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency.egg-info/entry_points.txt +0 -0
  37. {fosslight_dependency-3.15.5 → fosslight_dependency-3.15.6}/src/fosslight_dependency.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fosslight_dependency
3
- Version: 3.15.5
3
+ Version: 3.15.6
4
4
  Summary: FOSSLight Dependency Scanner
5
5
  Home-page: https://github.com/fosslight/fosslight_dependency_scanner
6
6
  Author: LG Electronics
@@ -4,8 +4,10 @@ lxml
4
4
  virtualenv
5
5
  pyyaml
6
6
  lastversion
7
- fosslight_util>=1.4.47
7
+ fosslight_util~=1.4.47
8
8
  PyGithub
9
9
  requirements-parser
10
10
  defusedxml
11
11
  packageurl-python
12
+ igraph
13
+ matplotlib
@@ -35,7 +35,7 @@ if __name__ == "__main__":
35
35
 
36
36
  setup(
37
37
  name=_PACKAEG_NAME,
38
- version='3.15.5',
38
+ version='3.15.6',
39
39
  package_dir={"": "src"},
40
40
  packages=find_namespace_packages(where='src'),
41
41
  description='FOSSLight Dependency Scanner',
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # Copyright (c) 2021 LG Electronics Inc.
4
+ # SPDX-License-Identifier: Apache-2.0
5
+ from typing import Optional, Tuple
6
+ import igraph as ig
7
+ import matplotlib.pyplot as plt
8
+
9
+
10
+ class GraphConvertor:
11
+ def __init__(self, package_list: Optional[list] = None):
12
+ self._verticies = {}
13
+ self._edges = []
14
+ if package_list:
15
+ self.init_list(package_list)
16
+
17
+ def init_list(self, package_list: list):
18
+ """
19
+ Initialize package_list to self._verticies and self._edges
20
+
21
+ Args:
22
+ package_list (list): List containing package information
23
+ """
24
+ depend_on_package_dict = {}
25
+ for idx, package_info in enumerate(package_list):
26
+ package_name = package_info[0]
27
+ depend_on_packages_str = package_info[-1]
28
+ depend_on_packages = list(map((lambda x: x.strip()), depend_on_packages_str.split(",")))
29
+ self._verticies[package_name] = idx
30
+ depend_on_package_dict[package_name] = depend_on_packages
31
+ else:
32
+ for package_name, depend_on_packages in depend_on_package_dict.items():
33
+ if not package_name:
34
+ pass
35
+ else:
36
+ package_idx = self._verticies[package_name]
37
+ for depend_on_package in depend_on_packages:
38
+ if not depend_on_package:
39
+ pass
40
+ else:
41
+ depend_on_package_idx = self._verticies[depend_on_package]
42
+ self._edges.append((package_idx, depend_on_package_idx))
43
+
44
+ def save(self, path: str, size: Tuple[(int, int)]):
45
+ g = ig.Graph((len(self._verticies)), (self._edges), directed=True)
46
+
47
+ g["title"] = "Dependency Graph"
48
+ g.vs["name"] = list(self._verticies.keys())
49
+
50
+ fig, ax = plt.subplots(figsize=(tuple(map((lambda x: x / 100), size))))
51
+ fig.tight_layout()
52
+
53
+ ig.plot(
54
+ g,
55
+ target=ax,
56
+ layout="kk",
57
+ vertex_size=15,
58
+ vertex_color=["#FFD2D2"],
59
+ vertex_label=(g.vs["name"]),
60
+ vertex_label_dist=1.5,
61
+ vertex_label_size=7.0,
62
+ edge_width=0.5,
63
+ edge_color=["#FFD2D2"],
64
+ edge_arrow_size=5,
65
+ edge_arrow_width=5,
66
+ )
67
+
68
+ fig.savefig(path)
@@ -37,6 +37,10 @@ _HELP_MESSAGE_DEPENDENCY = """
37
37
  \t\t\t\t\t(If you want to generate the specific file name, add the output path with file name.)
38
38
  -f <format> [<format> ...]\t Output formats (excel, csv, opossum, yaml, spdx-tag, spdx-yaml, spdx-json, spdx-xml)
39
39
  \t\t\t\t Multiple formats can be specified separated by space.
40
+ --graph-path <save_path> \t Enter the path where the graph image will be saved
41
+ \t\t\t\t\t(ex. /your/directory/path/filename.{pdf, jpg, png}) (recommend pdf extension)
42
+ --graph-size <width> <height> Enter the size of the graph image (The size unit is pixels)
43
+ \t\t\t\t\t--graph-path option is required
40
44
  --direct\t\t\t Print the direct/transitive dependency type in comment.
41
45
  \t\tChoice 'True' or 'False'. (default:True)
42
46
  --notice\t\t\t Print the open source license notice text.
@@ -128,7 +128,7 @@ class Cocoapods(PackageManager):
128
128
  purl = get_url_to_purl(homepage, self.package_manager_name, pod_oss_name_origin, oss_version)
129
129
  self.purl_dict[f'{pod_oss_name_origin}({oss_version})'] = purl
130
130
  if pod_oss_name in external_source_list:
131
- homepage = dn_loc
131
+ homepage = ''
132
132
  if oss_name == '':
133
133
  continue
134
134
  if pod_oss_version != oss_version:
@@ -21,6 +21,7 @@ from fosslight_util.output_format import check_output_formats, write_output_file
21
21
  if platform.system() != 'Windows':
22
22
  from fosslight_util.write_spdx import write_spdx
23
23
  from fosslight_util.cover import CoverItem
24
+ from fosslight_dependency._graph_convertor import GraphConvertor
24
25
 
25
26
  # Package Name
26
27
  _PKG_NAME = "fosslight_dependency"
@@ -92,7 +93,8 @@ def find_package_manager(input_dir, abs_path_to_exclude=[]):
92
93
 
93
94
  def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='', pip_activate_cmd='',
94
95
  pip_deactivate_cmd='', output_custom_dir='', app_name=const.default_app_name,
95
- github_token='', formats=[], direct=True, path_to_exclude=[]):
96
+ github_token='', formats=[], direct=True, path_to_exclude=[], graph_path='',
97
+ graph_size=(600, 600)):
96
98
  global logger
97
99
 
98
100
  ret = True
@@ -233,6 +235,15 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
233
235
  if cover_comment:
234
236
  cover.comment += f', {cover_comment}'
235
237
 
238
+ if ret and graph_path:
239
+ graph_path = os.path.abspath(graph_path)
240
+ try:
241
+ converter = GraphConvertor(sheet_list[_sheet_name])
242
+ converter.save(graph_path, graph_size)
243
+ logger.info(f"Output graph image file: {graph_path}")
244
+ except Exception as e:
245
+ logger.error(f'Fail to make graph image: {e}')
246
+
236
247
  combined_paths_and_files = [os.path.join(output_path, file) for file in output_files]
237
248
  results = []
238
249
  for i, output_extension in enumerate(output_extensions):
@@ -276,6 +287,8 @@ def main():
276
287
  app_name = const.default_app_name
277
288
  github_token = ''
278
289
  format = ''
290
+ graph_path = ''
291
+ graph_size = (600, 600)
279
292
  direct = True
280
293
 
281
294
  parser = argparse.ArgumentParser(add_help=False)
@@ -291,6 +304,8 @@ def main():
291
304
  parser.add_argument('-n', '--appname', nargs=1, type=str, required=False)
292
305
  parser.add_argument('-t', '--token', nargs=1, type=str, required=False)
293
306
  parser.add_argument('-f', '--format', nargs="*", type=str, required=False)
307
+ parser.add_argument('--graph-path', nargs=1, type=str, required=False)
308
+ parser.add_argument('--graph-size', nargs=2, type=int, metavar=("WIDTH", "HEIGHT"), required=False)
294
309
  parser.add_argument('--direct', choices=('true', 'false'), default='True', required=False)
295
310
  parser.add_argument('--notice', action='store_true', required=False)
296
311
 
@@ -324,6 +339,10 @@ def main():
324
339
  github_token = ''.join(args.token)
325
340
  if args.format: # -f option
326
341
  format = list(args.format)
342
+ if args.graph_path:
343
+ graph_path = ''.join(args.graph_path)
344
+ if args.graph_size:
345
+ graph_size = args.graph_size
327
346
  if args.direct: # --direct option
328
347
  if args.direct == 'true':
329
348
  direct = True
@@ -343,7 +362,8 @@ def main():
343
362
  sys.exit(0)
344
363
 
345
364
  run_dependency_scanner(package_manager, input_dir, output_dir, pip_activate_cmd, pip_deactivate_cmd,
346
- output_custom_dir, app_name, github_token, format, direct, path_to_exclude)
365
+ output_custom_dir, app_name, github_token, format, direct, path_to_exclude,
366
+ graph_path, graph_size)
347
367
 
348
368
 
349
369
  if __name__ == '__main__':
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fosslight-dependency
3
- Version: 3.15.5
3
+ Version: 3.15.6
4
4
  Summary: FOSSLight Dependency Scanner
5
5
  Home-page: https://github.com/fosslight/fosslight_dependency_scanner
6
6
  Author: LG Electronics
@@ -9,6 +9,7 @@ LICENSES/LicenseRef-3rd_party_licenses.txt
9
9
  LICENSES/MIT.txt
10
10
  src/fosslight_dependency/__init__.py
11
11
  src/fosslight_dependency/_analyze_dependency.py
12
+ src/fosslight_dependency/_graph_convertor.py
12
13
  src/fosslight_dependency/_help.py
13
14
  src/fosslight_dependency/_package_manager.py
14
15
  src/fosslight_dependency/constant.py
@@ -4,8 +4,10 @@ lxml
4
4
  virtualenv
5
5
  pyyaml
6
6
  lastversion
7
- fosslight_util>=1.4.47
7
+ fosslight_util~=1.4.47
8
8
  PyGithub
9
9
  requirements-parser
10
10
  defusedxml
11
- packageurl-python
11
+ packageurl-python
12
+ igraph
13
+ matplotlib