fosslight-dependency 3.14.0__py3-none-any.whl → 3.14.1__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.
- fosslight_dependency/_package_manager.py +34 -0
- fosslight_dependency/package_manager/Android.py +5 -2
- fosslight_dependency/package_manager/Carthage.py +6 -6
- fosslight_dependency/package_manager/Cocoapods.py +5 -3
- fosslight_dependency/package_manager/Go.py +5 -3
- fosslight_dependency/package_manager/Gradle.py +6 -3
- fosslight_dependency/package_manager/Helm.py +6 -3
- fosslight_dependency/package_manager/Maven.py +5 -3
- fosslight_dependency/package_manager/Npm.py +7 -5
- fosslight_dependency/package_manager/Nuget.py +5 -3
- fosslight_dependency/package_manager/Pub.py +5 -3
- fosslight_dependency/package_manager/Pypi.py +31 -28
- fosslight_dependency/package_manager/Swift.py +6 -4
- fosslight_dependency/run_dependency_scanner.py +27 -5
- {fosslight_dependency-3.14.0.dist-info → fosslight_dependency-3.14.1.dist-info}/METADATA +3 -2
- fosslight_dependency-3.14.1.dist-info/RECORD +33 -0
- {fosslight_dependency-3.14.0.dist-info → fosslight_dependency-3.14.1.dist-info}/WHEEL +1 -1
- fosslight_dependency-3.14.0.dist-info/RECORD +0 -33
- {fosslight_dependency-3.14.0.dist-info → fosslight_dependency-3.14.1.dist-info}/Apache-2.0.txt +0 -0
- {fosslight_dependency-3.14.0.dist-info → fosslight_dependency-3.14.1.dist-info}/LICENSE +0 -0
- {fosslight_dependency-3.14.0.dist-info → fosslight_dependency-3.14.1.dist-info}/LicenseRef-3rd_party_licenses.txt +0 -0
- {fosslight_dependency-3.14.0.dist-info → fosslight_dependency-3.14.1.dist-info}/MIT.txt +0 -0
- {fosslight_dependency-3.14.0.dist-info → fosslight_dependency-3.14.1.dist-info}/entry_points.txt +0 -0
- {fosslight_dependency-3.14.0.dist-info → fosslight_dependency-3.14.1.dist-info}/top_level.txt +0 -0
@@ -13,6 +13,7 @@ import subprocess
|
|
13
13
|
import shutil
|
14
14
|
import fosslight_util.constant as constant
|
15
15
|
import fosslight_dependency.constant as const
|
16
|
+
from packageurl.contrib import url2purl
|
16
17
|
|
17
18
|
try:
|
18
19
|
from github import Github
|
@@ -48,6 +49,7 @@ class PackageManager:
|
|
48
49
|
self.manifest_file_name = []
|
49
50
|
self.relation_tree = {}
|
50
51
|
self.package_name = ''
|
52
|
+
self.purl_dict = {}
|
51
53
|
|
52
54
|
self.platform = platform.system()
|
53
55
|
self.license_scanner_bin = check_license_scanner(self.platform)
|
@@ -188,6 +190,38 @@ class PackageManager:
|
|
188
190
|
logger.warning(f'Fail to parse gradle dependency tree:{e}')
|
189
191
|
|
190
192
|
|
193
|
+
def get_url_to_purl(url, pkg_manager, oss_name='', oss_version=''):
|
194
|
+
purl_prefix = f'pkg:{pkg_manager}'
|
195
|
+
purl = str(url2purl.get_purl(url))
|
196
|
+
if not re.match(purl_prefix, purl):
|
197
|
+
match = re.match(constant.PKG_PATTERN.get(pkg_manager, 'not_support'), url)
|
198
|
+
try:
|
199
|
+
if match and (match != ''):
|
200
|
+
if pkg_manager == 'maven':
|
201
|
+
purl = f'{purl_prefix}/{match.group(1)}/{match.group(2)}@{match.group(3)}'
|
202
|
+
elif pkg_manager == 'pub':
|
203
|
+
purl = f'{purl_prefix}/{match.group(1)}@{match.group(2)}'
|
204
|
+
elif pkg_manager == 'cocoapods':
|
205
|
+
match = re.match(r'([^\/]+)\/?([^\/]*)', oss_name) # ex, GoogleUtilities/NSData+zlib
|
206
|
+
purl = f'{purl_prefix}/{match.group(1)}@{oss_version}'
|
207
|
+
if match.group(2):
|
208
|
+
purl = f'{purl}#{match.group(2)}'
|
209
|
+
elif pkg_manager == 'go':
|
210
|
+
purl = f'{purl_prefix}lang/{match.group(1)}@{match.group(2)}'
|
211
|
+
else:
|
212
|
+
if pkg_manager == 'swift':
|
213
|
+
if oss_version:
|
214
|
+
purl = f'{purl_prefix}/{oss_name}@{oss_version}'
|
215
|
+
else:
|
216
|
+
purl = f'{purl_prefix}/{oss_name}'
|
217
|
+
elif pkg_manager == 'carthage':
|
218
|
+
if oss_version:
|
219
|
+
purl = f'{purl}@{oss_version}'
|
220
|
+
except Exception:
|
221
|
+
logger.debug('Fail to get purl. So use the link purl({purl}).')
|
222
|
+
return purl
|
223
|
+
|
224
|
+
|
191
225
|
def version_refine(oss_version):
|
192
226
|
version_cmp = oss_version.upper()
|
193
227
|
|
@@ -7,7 +7,7 @@ import os
|
|
7
7
|
import logging
|
8
8
|
import fosslight_util.constant as constant
|
9
9
|
import fosslight_dependency.constant as const
|
10
|
-
from fosslight_dependency._package_manager import PackageManager
|
10
|
+
from fosslight_dependency._package_manager import PackageManager, get_url_to_purl
|
11
11
|
|
12
12
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
13
13
|
|
@@ -49,6 +49,8 @@ class Android(PackageManager):
|
|
49
49
|
idx, manifest_file, oss_name, oss_version, license_name, dn_loc, homepage = split_str
|
50
50
|
else:
|
51
51
|
continue
|
52
|
+
purl = get_url_to_purl(dn_loc, 'maven')
|
53
|
+
self.purl_dict[f'{oss_name}({oss_version})'] = purl
|
52
54
|
|
53
55
|
comment_list = []
|
54
56
|
deps_list = []
|
@@ -69,6 +71,7 @@ class Android(PackageManager):
|
|
69
71
|
comment = ','.join(comment_list)
|
70
72
|
deps = ','.join(deps_list)
|
71
73
|
|
72
|
-
sheet_list.append([
|
74
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
75
|
+
'', '', comment, deps])
|
73
76
|
|
74
77
|
return sheet_list
|
@@ -9,9 +9,8 @@ import os
|
|
9
9
|
import fosslight_util.constant as constant
|
10
10
|
import fosslight_dependency.constant as const
|
11
11
|
from fosslight_dependency._package_manager import PackageManager
|
12
|
-
from fosslight_dependency._package_manager import connect_github
|
13
|
-
from fosslight_dependency._package_manager import
|
14
|
-
from fosslight_dependency._package_manager import check_and_run_license_scanner
|
12
|
+
from fosslight_dependency._package_manager import connect_github, get_github_license, check_and_run_license_scanner
|
13
|
+
from fosslight_dependency._package_manager import get_url_to_purl
|
15
14
|
|
16
15
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
17
16
|
|
@@ -60,9 +59,10 @@ class Carthage(PackageManager):
|
|
60
59
|
else:
|
61
60
|
homepage = oss_path
|
62
61
|
dn_loc = homepage
|
63
|
-
|
64
62
|
oss_version = re_result[0][2]
|
65
63
|
|
64
|
+
purl = get_url_to_purl(homepage, self.package_manager_name, oss_origin_name, oss_version)
|
65
|
+
|
66
66
|
license_name = ''
|
67
67
|
find_license = False
|
68
68
|
if oss_origin_name in checkout_dir_list:
|
@@ -96,8 +96,8 @@ class Carthage(PackageManager):
|
|
96
96
|
else:
|
97
97
|
comment = 'transitive'
|
98
98
|
|
99
|
-
sheet_list.append([
|
100
|
-
|
99
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
100
|
+
'', '', comment, ''])
|
101
101
|
|
102
102
|
except Exception as e:
|
103
103
|
logger.warning(f"Failed to parse oss information: {e}")
|
@@ -10,7 +10,7 @@ import yaml
|
|
10
10
|
import re
|
11
11
|
import fosslight_util.constant as constant
|
12
12
|
import fosslight_dependency.constant as const
|
13
|
-
from fosslight_dependency._package_manager import PackageManager
|
13
|
+
from fosslight_dependency._package_manager import PackageManager, get_url_to_purl
|
14
14
|
|
15
15
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
16
16
|
|
@@ -128,6 +128,8 @@ class Cocoapods(PackageManager):
|
|
128
128
|
spec_file_path = os.path.join(file_path_without_version, pod_oss_version, file_path[-1])
|
129
129
|
|
130
130
|
oss_name, oss_version, license_name, dn_loc, homepage = self.get_oss_in_podspec(spec_file_path)
|
131
|
+
purl = get_url_to_purl(homepage, self.package_manager_name, pod_oss_name_origin, oss_version)
|
132
|
+
self.purl_dict[f'{pod_oss_name_origin}({oss_version})'] = purl
|
131
133
|
if pod_oss_name in external_source_list:
|
132
134
|
homepage = dn_loc
|
133
135
|
if oss_name == '':
|
@@ -135,8 +137,8 @@ class Cocoapods(PackageManager):
|
|
135
137
|
if pod_oss_version != oss_version:
|
136
138
|
logger.warning(f'{pod_oss_name_origin} has different version({pod_oss_version})\
|
137
139
|
with spec version({oss_version})')
|
138
|
-
sheet_list.append([
|
139
|
-
|
140
|
+
sheet_list.append([purl, oss_name_report, pod_oss_version, license_name, dn_loc, homepage,
|
141
|
+
'', '', comment, deps])
|
140
142
|
except Exception as e:
|
141
143
|
logger.warning(f"Fail to get {pod_oss_name_origin}:{e}")
|
142
144
|
|
@@ -12,7 +12,7 @@ import urllib.request
|
|
12
12
|
import re
|
13
13
|
import fosslight_util.constant as constant
|
14
14
|
import fosslight_dependency.constant as const
|
15
|
-
from fosslight_dependency._package_manager import PackageManager
|
15
|
+
from fosslight_dependency._package_manager import PackageManager, get_url_to_purl
|
16
16
|
|
17
17
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
18
18
|
|
@@ -107,6 +107,8 @@ class Go(PackageManager):
|
|
107
107
|
|
108
108
|
homepage_set = []
|
109
109
|
homepage = self.dn_url + package_path
|
110
|
+
purl = get_url_to_purl(f"{homepage}@{oss_version}", self.package_manager_name)
|
111
|
+
self.purl_dict[f'{package_path}({oss_version})'] = purl
|
110
112
|
|
111
113
|
if oss_origin_version:
|
112
114
|
tmp_homepage = f"{homepage}@{oss_origin_version}"
|
@@ -148,7 +150,7 @@ class Go(PackageManager):
|
|
148
150
|
|
149
151
|
comment = ','.join(comment_list)
|
150
152
|
deps = ','.join(deps_list)
|
151
|
-
sheet_list.append([
|
152
|
-
|
153
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
154
|
+
'', '', comment, deps])
|
153
155
|
|
154
156
|
return sheet_list
|
@@ -9,7 +9,7 @@ import json
|
|
9
9
|
import fosslight_util.constant as constant
|
10
10
|
import fosslight_dependency.constant as const
|
11
11
|
from fosslight_dependency._package_manager import PackageManager
|
12
|
-
from fosslight_dependency._package_manager import version_refine
|
12
|
+
from fosslight_dependency._package_manager import version_refine, get_url_to_purl
|
13
13
|
|
14
14
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
15
15
|
|
@@ -59,6 +59,7 @@ class Gradle(PackageManager):
|
|
59
59
|
oss_version = version_refine(oss_ini_version)
|
60
60
|
|
61
61
|
license_names = []
|
62
|
+
purl = ''
|
62
63
|
try:
|
63
64
|
for licenses in d['licenses']:
|
64
65
|
if licenses['name'] != '':
|
@@ -73,6 +74,8 @@ class Gradle(PackageManager):
|
|
73
74
|
else:
|
74
75
|
dn_loc = f"{self.dn_url}{group_id}/{artifact_id}/{oss_ini_version}"
|
75
76
|
homepage = f"{self.dn_url}{group_id}/{artifact_id}"
|
77
|
+
purl = get_url_to_purl(dn_loc, 'maven')
|
78
|
+
self.purl_dict[f'{oss_name}({oss_ini_version})'] = purl
|
76
79
|
|
77
80
|
comment_list = []
|
78
81
|
deps_list = []
|
@@ -90,8 +93,8 @@ class Gradle(PackageManager):
|
|
90
93
|
comment = ','.join(comment_list)
|
91
94
|
deps = ','.join(deps_list)
|
92
95
|
|
93
|
-
sheet_list.append([
|
94
|
-
|
96
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
97
|
+
'', '', comment, deps])
|
95
98
|
|
96
99
|
return sheet_list
|
97
100
|
|
@@ -10,7 +10,7 @@ import yaml
|
|
10
10
|
import shutil
|
11
11
|
import fosslight_util.constant as constant
|
12
12
|
import fosslight_dependency.constant as const
|
13
|
-
from fosslight_dependency._package_manager import PackageManager
|
13
|
+
from fosslight_dependency._package_manager import PackageManager, get_url_to_purl
|
14
14
|
from fosslight_util.download import extract_compressed_dir
|
15
15
|
|
16
16
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
@@ -73,6 +73,7 @@ class Helm(PackageManager):
|
|
73
73
|
for dep in dep_item_list:
|
74
74
|
try:
|
75
75
|
f_path = os.path.join(self.tmp_charts_dir, dep, f_name)
|
76
|
+
purl = ''
|
76
77
|
with open(f_path, 'r', encoding='utf8') as yaml_fp:
|
77
78
|
yaml_f = yaml.safe_load(yaml_fp)
|
78
79
|
oss_name = f'{self.package_manager_name}:{yaml_f["name"]}'
|
@@ -85,6 +86,8 @@ class Helm(PackageManager):
|
|
85
86
|
if yaml_f.get('sources', '') != '':
|
86
87
|
dn_loc = yaml_f.get('sources', '')[0]
|
87
88
|
|
89
|
+
purl = get_url_to_purl(dn_loc if dn_loc else homepage, self.package_manager_name)
|
90
|
+
|
88
91
|
license_name = ''
|
89
92
|
if yaml_f.get('annotations', '') != '':
|
90
93
|
license_name = yaml_f['annotations'].get('licenses', '')
|
@@ -96,7 +99,7 @@ class Helm(PackageManager):
|
|
96
99
|
logging.warning(f"Fail to parse chart info {dep}: {e}")
|
97
100
|
continue
|
98
101
|
|
99
|
-
sheet_list.append([
|
100
|
-
|
102
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
103
|
+
'', '', comment, ''])
|
101
104
|
|
102
105
|
return sheet_list
|
@@ -13,7 +13,7 @@ import re
|
|
13
13
|
import fosslight_util.constant as constant
|
14
14
|
import fosslight_dependency.constant as const
|
15
15
|
from fosslight_dependency._package_manager import PackageManager
|
16
|
-
from fosslight_dependency._package_manager import version_refine
|
16
|
+
from fosslight_dependency._package_manager import version_refine, get_url_to_purl
|
17
17
|
|
18
18
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
19
19
|
|
@@ -225,6 +225,8 @@ class Maven(PackageManager):
|
|
225
225
|
oss_name = f"{groupid}:{artifactid}"
|
226
226
|
dn_loc = f"{self.dn_url}{groupid}/{artifactid}/{version}"
|
227
227
|
homepage = f"{self.dn_url}{groupid}/{artifactid}"
|
228
|
+
purl = get_url_to_purl(dn_loc, self.package_manager_name)
|
229
|
+
self.purl_dict[f'{oss_name}({oss_version})'] = purl
|
228
230
|
|
229
231
|
licenses = d.find("licenses")
|
230
232
|
if len(licenses):
|
@@ -253,7 +255,7 @@ class Maven(PackageManager):
|
|
253
255
|
comment = ','.join(comment_list)
|
254
256
|
deps = ','.join(deps_list)
|
255
257
|
|
256
|
-
sheet_list.append([
|
257
|
-
|
258
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
259
|
+
'', '', comment, deps])
|
258
260
|
|
259
261
|
return sheet_list
|
@@ -11,7 +11,7 @@ import shutil
|
|
11
11
|
import re
|
12
12
|
import fosslight_util.constant as constant
|
13
13
|
import fosslight_dependency.constant as const
|
14
|
-
from fosslight_dependency._package_manager import PackageManager
|
14
|
+
from fosslight_dependency._package_manager import PackageManager, get_url_to_purl
|
15
15
|
|
16
16
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
17
17
|
node_modules = 'node_modules'
|
@@ -176,6 +176,8 @@ class Npm(PackageManager):
|
|
176
176
|
|
177
177
|
homepage = self.dn_url + oss_init_name
|
178
178
|
dn_loc = f"{self.dn_url}{oss_init_name}/v/{oss_version}"
|
179
|
+
purl = get_url_to_purl(dn_loc, self.package_manager_name)
|
180
|
+
self.purl_dict[f'{oss_init_name}({oss_version})'] = purl
|
179
181
|
if d[_repository]:
|
180
182
|
dn_loc = d[_repository]
|
181
183
|
elif private_pkg:
|
@@ -205,13 +207,13 @@ class Npm(PackageManager):
|
|
205
207
|
deps = ','.join(deps_list)
|
206
208
|
if multi_flag:
|
207
209
|
comment = f'{comment}, {license_comment}'
|
208
|
-
sheet_list.append([
|
209
|
-
|
210
|
+
sheet_list.append([purl, oss_name, oss_version, multi_license, dn_loc, homepage,
|
211
|
+
'', '', comment, deps])
|
210
212
|
else:
|
211
213
|
license_name = license_name.replace(",", "")
|
212
214
|
license_name = check_unknown_license(license_name, manifest_file_path)
|
213
|
-
sheet_list.append([
|
214
|
-
|
215
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
216
|
+
'', '', comment, deps])
|
215
217
|
|
216
218
|
return sheet_list
|
217
219
|
|
@@ -12,7 +12,7 @@ import requests
|
|
12
12
|
import fosslight_util.constant as constant
|
13
13
|
import fosslight_dependency.constant as const
|
14
14
|
from fosslight_dependency._package_manager import PackageManager
|
15
|
-
from fosslight_dependency._package_manager import check_and_run_license_scanner
|
15
|
+
from fosslight_dependency._package_manager import check_and_run_license_scanner, get_url_to_purl
|
16
16
|
|
17
17
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
18
18
|
|
@@ -95,8 +95,11 @@ class Nuget(PackageManager):
|
|
95
95
|
else:
|
96
96
|
if dn_loc.endswith('.git'):
|
97
97
|
dn_loc = dn_loc[:-4]
|
98
|
+
purl = get_url_to_purl(f'{homepage}/{oss_version}', self.package_manager_name)
|
98
99
|
else:
|
99
100
|
comment_list.append('Fail to response for nuget api')
|
101
|
+
purl = f'pkg:nuget/{oss_origin_name}@{oss_version}'
|
102
|
+
self.purl_dict[f'{oss_origin_name}({oss_version})'] = purl
|
100
103
|
|
101
104
|
deps_list = []
|
102
105
|
if self.direct_dep and self.packageReference:
|
@@ -112,8 +115,7 @@ class Nuget(PackageManager):
|
|
112
115
|
|
113
116
|
comment = ','.join(comment_list)
|
114
117
|
deps = ','.join(deps_list)
|
115
|
-
sheet_list.append([','
|
116
|
-
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment, deps])
|
118
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment, deps])
|
117
119
|
|
118
120
|
except Exception as e:
|
119
121
|
logger.warning(f"Failed to parse oss information: {e}")
|
@@ -13,7 +13,7 @@ import subprocess
|
|
13
13
|
import fosslight_util.constant as constant
|
14
14
|
import fosslight_dependency.constant as const
|
15
15
|
from fosslight_dependency._package_manager import PackageManager
|
16
|
-
from fosslight_dependency._package_manager import check_and_run_license_scanner
|
16
|
+
from fosslight_dependency._package_manager import check_and_run_license_scanner, get_url_to_purl
|
17
17
|
|
18
18
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
19
19
|
|
@@ -124,6 +124,8 @@ class Pub(PackageManager):
|
|
124
124
|
if homepage is None:
|
125
125
|
homepage = ''
|
126
126
|
dn_loc = f"{self.dn_url}{oss_origin_name}/versions/{oss_version}"
|
127
|
+
purl = get_url_to_purl(dn_loc, self.package_manager_name)
|
128
|
+
self.purl_dict[f'{oss_origin_name}({oss_version})'] = purl
|
127
129
|
license_txt = json_data['license']
|
128
130
|
|
129
131
|
tmp_license_txt = open(tmp_license_txt_file_name, 'w', encoding='utf-8')
|
@@ -158,8 +160,8 @@ class Pub(PackageManager):
|
|
158
160
|
deps_list.extend(rel_items)
|
159
161
|
comment = ','.join(comment_list)
|
160
162
|
deps = ','.join(deps_list)
|
161
|
-
sheet_list.append([
|
162
|
-
|
163
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
164
|
+
'', '', comment, deps])
|
163
165
|
except Exception as e:
|
164
166
|
logger.error(f"Fail to parse pub oss information: {e}")
|
165
167
|
|
@@ -13,7 +13,7 @@ import re
|
|
13
13
|
import fosslight_util.constant as constant
|
14
14
|
import fosslight_dependency.constant as const
|
15
15
|
from fosslight_dependency._package_manager import PackageManager
|
16
|
-
from fosslight_dependency._package_manager import check_and_run_license_scanner
|
16
|
+
from fosslight_dependency._package_manager import check_and_run_license_scanner, get_url_to_purl
|
17
17
|
|
18
18
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
19
19
|
|
@@ -90,7 +90,7 @@ class Pypi(PackageManager):
|
|
90
90
|
activate_cmd = os.path.join(self.venv_tmp_dir, "Scripts", "activate.bat")
|
91
91
|
cmd_separator = "&"
|
92
92
|
else:
|
93
|
-
create_venv_cmd = f"
|
93
|
+
create_venv_cmd = f"python3 -m venv {self.venv_tmp_dir}"
|
94
94
|
activate_cmd = ". " + os.path.join(venv_path, "bin", "activate")
|
95
95
|
cmd_separator = ";"
|
96
96
|
|
@@ -139,6 +139,7 @@ class Pypi(PackageManager):
|
|
139
139
|
pip_licenses_default_options = ' --from=mixed --with-url --format=json --with-license-file'
|
140
140
|
pip_licenses_system_option = ' --with-system -p '
|
141
141
|
tmp_pip_list = "tmp_list.txt"
|
142
|
+
python_cmd = "python -m"
|
142
143
|
|
143
144
|
if self.pip_activate_cmd.startswith("source "):
|
144
145
|
tmp_activate = self.pip_activate_cmd[7:]
|
@@ -156,7 +157,7 @@ class Pypi(PackageManager):
|
|
156
157
|
command_separator = ";"
|
157
158
|
|
158
159
|
activate_command = pip_activate_cmd
|
159
|
-
pip_list_command = f"pip freeze > {tmp_pip_list}"
|
160
|
+
pip_list_command = f"{python_cmd} pip freeze > {tmp_pip_list}"
|
160
161
|
deactivate_command = self.pip_deactivate_cmd
|
161
162
|
|
162
163
|
command_list = [activate_command, pip_list_command, deactivate_command]
|
@@ -215,28 +216,28 @@ class Pypi(PackageManager):
|
|
215
216
|
command_list = []
|
216
217
|
command_list.append(activate_command)
|
217
218
|
if not exists_pip_licenses:
|
218
|
-
install_pip_command = f"pip install {pip_licenses}"
|
219
|
+
install_pip_command = f"{python_cmd} pip install {pip_licenses}"
|
219
220
|
command_list.append(install_pip_command)
|
220
221
|
|
221
222
|
pip_licenses_command = f"{pip_licenses}{pip_licenses_default_options} > {self.tmp_file_name}"
|
222
223
|
command_list.append(pip_licenses_command)
|
223
224
|
|
224
225
|
if len(pip_license_pkg_list) != 0:
|
225
|
-
pip_licenses_info_command = pip_licenses
|
226
|
+
pip_licenses_info_command = f"{pip_licenses}{pip_licenses_default_options}{pip_licenses_system_option}"
|
226
227
|
pip_licenses_info_command += " ".join(pip_license_pkg_list)
|
227
228
|
|
228
229
|
pip_licenses_info_command += f" > {self.tmp_pip_license_info_file_name}"
|
229
230
|
command_list.append(pip_licenses_info_command)
|
230
231
|
|
231
232
|
if len(uninstall_pkg_list) > 0:
|
232
|
-
uninstall_pip_command = "pip uninstall -y "
|
233
|
+
uninstall_pip_command = f"{python_cmd} pip uninstall -y "
|
233
234
|
uninstall_pip_command += ' '.join(uninstall_pkg_list)
|
234
235
|
command_list.append(uninstall_pip_command)
|
235
236
|
|
236
237
|
if not exists_pipdeptree:
|
237
|
-
install_deptree_command = f"pip install {pipdeptree}"
|
238
|
+
install_deptree_command = f"{python_cmd} pip install {pipdeptree}"
|
238
239
|
command_list.append(install_deptree_command)
|
239
|
-
uninstall_deptree_command = f"pip uninstall -y {pipdeptree}"
|
240
|
+
uninstall_deptree_command = f"{python_cmd} pip uninstall -y {pipdeptree}"
|
240
241
|
pipdeptree_command = f"{pipdeptree} --json-tree -e 'pipdeptree,pip,wheel,setuptools' > {self.tmp_deptree_file}"
|
241
242
|
command_list.append(pipdeptree_command)
|
242
243
|
command_list.append(uninstall_deptree_command)
|
@@ -282,7 +283,8 @@ class Pypi(PackageManager):
|
|
282
283
|
homepage = check_UNKNOWN(d['URL'])
|
283
284
|
oss_version = d['Version']
|
284
285
|
dn_loc = f"{self.dn_url}{oss_init_name}/{oss_version}"
|
285
|
-
|
286
|
+
purl = get_url_to_purl(dn_loc, self.package_manager_name)
|
287
|
+
self.purl_dict[f'{oss_init_name}({oss_version})'] = purl
|
286
288
|
if license_name is not None:
|
287
289
|
license_name = license_name.replace(';', ',')
|
288
290
|
else:
|
@@ -308,8 +310,7 @@ class Pypi(PackageManager):
|
|
308
310
|
deps_list.extend(rel_items)
|
309
311
|
comment = ','.join(comment_list)
|
310
312
|
deps = ','.join(deps_list)
|
311
|
-
sheet_list.append([
|
312
|
-
oss_name, oss_version,
|
313
|
+
sheet_list.append([purl, oss_name, oss_version,
|
313
314
|
license_name, dn_loc, homepage, '', '', comment, deps])
|
314
315
|
|
315
316
|
except Exception as ex:
|
@@ -339,26 +340,28 @@ class Pypi(PackageManager):
|
|
339
340
|
if not os.path.exists(self.tmp_deptree_file):
|
340
341
|
self.direct_dep = False
|
341
342
|
return
|
343
|
+
try:
|
344
|
+
with open(self.tmp_deptree_file, 'r', encoding='utf8') as f:
|
345
|
+
json_f = json.load(f)
|
346
|
+
root_package = json_f
|
347
|
+
if ('pyproject.toml' in self.manifest_file_name) or ('setup.py' in self.manifest_file_name):
|
348
|
+
direct_without_system_package = 0
|
349
|
+
for package in root_package:
|
350
|
+
package_name = re.sub(r"[-_.]+", "-", package['package_name']).lower()
|
351
|
+
if package_name in self.total_dep_list:
|
352
|
+
direct_without_system_package += 1
|
353
|
+
if direct_without_system_package == 1:
|
354
|
+
self.package_name = re.sub(r"[-_.]+", "-", json_f[0]['package_name']).lower()
|
355
|
+
root_package = json_f[0]['dependencies']
|
342
356
|
|
343
|
-
with open(self.tmp_deptree_file, 'r', encoding='utf8') as f:
|
344
|
-
json_f = json.load(f)
|
345
|
-
root_package = json_f
|
346
|
-
if ('pyproject.toml' in self.manifest_file_name) or ('setup.py' in self.manifest_file_name):
|
347
|
-
direct_without_system_package = 0
|
348
357
|
for package in root_package:
|
349
358
|
package_name = re.sub(r"[-_.]+", "-", package['package_name']).lower()
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
self.
|
354
|
-
|
355
|
-
|
356
|
-
for package in root_package:
|
357
|
-
package_name = re.sub(r"[-_.]+", "-", package['package_name']).lower()
|
358
|
-
self.direct_dep_list.append(f"{package_name}({package['installed_version']})")
|
359
|
-
if package['dependencies'] == []:
|
360
|
-
continue
|
361
|
-
self.relation_tree = self.get_dependencies(self.relation_tree, package)
|
359
|
+
self.direct_dep_list.append(f"{package_name}({package['installed_version']})")
|
360
|
+
if package['dependencies'] == []:
|
361
|
+
continue
|
362
|
+
self.relation_tree = self.get_dependencies(self.relation_tree, package)
|
363
|
+
except Exception as e:
|
364
|
+
logger.warning(f'Fail to parse direct dependency: {e}')
|
362
365
|
|
363
366
|
|
364
367
|
def check_UNKNOWN(text):
|
@@ -10,8 +10,8 @@ import subprocess
|
|
10
10
|
import fosslight_util.constant as constant
|
11
11
|
import fosslight_dependency.constant as const
|
12
12
|
from fosslight_dependency._package_manager import PackageManager
|
13
|
-
from fosslight_dependency._package_manager import connect_github
|
14
|
-
from fosslight_dependency._package_manager import
|
13
|
+
from fosslight_dependency._package_manager import connect_github, get_github_license
|
14
|
+
from fosslight_dependency._package_manager import get_url_to_purl
|
15
15
|
|
16
16
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
17
17
|
|
@@ -134,6 +134,8 @@ class Swift(PackageManager):
|
|
134
134
|
license_name = ''
|
135
135
|
|
136
136
|
github_repo = "/".join(homepage.split('/')[-2:])
|
137
|
+
purl = get_url_to_purl(dn_loc, self.package_manager_name, github_repo, oss_version)
|
138
|
+
self.purl_dict[f'{oss_origin_name}({oss_version})'] = purl
|
137
139
|
license_name = get_github_license(g, github_repo, self.platform, self.license_scanner_bin)
|
138
140
|
|
139
141
|
comment_list = []
|
@@ -150,7 +152,7 @@ class Swift(PackageManager):
|
|
150
152
|
deps_list.extend(rel_items)
|
151
153
|
comment = ','.join(comment_list)
|
152
154
|
deps = ','.join(deps_list)
|
153
|
-
sheet_list.append([
|
154
|
-
|
155
|
+
sheet_list.append([purl, oss_name, oss_version, license_name, dn_loc, homepage,
|
156
|
+
'', '', comment, deps])
|
155
157
|
|
156
158
|
return sheet_list
|
@@ -20,16 +20,17 @@ from fosslight_dependency._analyze_dependency import analyze_dependency
|
|
20
20
|
from fosslight_util.output_format import check_output_format, write_output_file
|
21
21
|
if platform.system() != 'Windows':
|
22
22
|
from fosslight_util.write_spdx import write_spdx
|
23
|
+
from fosslight_util.cover import CoverItem
|
23
24
|
|
24
25
|
# Package Name
|
25
26
|
_PKG_NAME = "fosslight_dependency"
|
26
27
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
27
28
|
warnings.filterwarnings("ignore", category=FutureWarning)
|
28
29
|
_sheet_name = "DEP_FL_Dependency"
|
29
|
-
EXTENDED_HEADER = {_sheet_name: ['ID', '
|
30
|
+
EXTENDED_HEADER = {_sheet_name: ['ID', 'purl', 'OSS Name',
|
30
31
|
'OSS Version', 'License', 'Download Location',
|
31
32
|
'Homepage', 'Copyright Text', 'Exclude',
|
32
|
-
'Comment', '
|
33
|
+
'Comment', 'Depends On']}
|
33
34
|
CUSTOMIZED_FORMAT = {'excel': '.xlsx', 'csv': '.csv', 'opossum': '.json', 'yaml': '.yaml',
|
34
35
|
'spdx-yaml': '.yaml', 'spdx-json': '.json', 'spdx-xml': '.xml',
|
35
36
|
'spdx-tag': '.tag'}
|
@@ -158,21 +159,40 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
|
|
158
159
|
finally:
|
159
160
|
if not ret:
|
160
161
|
logger.warning("Dependency scanning terminated because the package manager was not found.")
|
161
|
-
|
162
|
+
ret = False
|
162
163
|
else:
|
163
164
|
found_package_manager[package_manager] = ''
|
164
165
|
|
165
166
|
pass_key = 'PASS'
|
167
|
+
success_pm = []
|
168
|
+
fail_pm = []
|
166
169
|
for pm, manifest_file_name in found_package_manager.items():
|
167
170
|
if manifest_file_name == pass_key:
|
168
171
|
continue
|
169
172
|
ret, package_sheet_list = analyze_dependency(pm, input_dir, output_path, pip_activate_cmd, pip_deactivate_cmd,
|
170
173
|
output_custom_dir, app_name, github_token, manifest_file_name, direct)
|
171
174
|
if ret:
|
175
|
+
success_pm.append(f"{pm} ({', '.join(manifest_file_name)})")
|
172
176
|
sheet_list[_sheet_name].extend(package_sheet_list)
|
173
177
|
if pm == const.GRADLE:
|
174
178
|
if const.ANDROID in found_package_manager.keys():
|
175
179
|
found_package_manager[const.ANDROID] = pass_key
|
180
|
+
else:
|
181
|
+
fail_pm.append(f"{pm} ({', '.join(manifest_file_name)})")
|
182
|
+
cover = CoverItem(tool_name=_PKG_NAME,
|
183
|
+
start_time=_start_time,
|
184
|
+
input_path=input_dir)
|
185
|
+
cover_comment_arr = []
|
186
|
+
if len(found_package_manager.keys()) > 0:
|
187
|
+
if len(success_pm) > 0:
|
188
|
+
cover_comment_arr.append(f"Analyzed Package manager: {', '.join(success_pm)}")
|
189
|
+
if len(fail_pm) > 0:
|
190
|
+
info_msg = 'Check https://fosslight.org/fosslight-guide-en/scanner/3_dependency.html#-prerequisite.'
|
191
|
+
cover_comment_arr.append(f"Analysis failed Package manager: {', '.join(fail_pm)} ({info_msg})")
|
192
|
+
else:
|
193
|
+
cover_comment_arr.append("No Package manager detected.")
|
194
|
+
|
195
|
+
cover.comment = ' / '.join(cover_comment_arr)
|
176
196
|
|
177
197
|
output_file_without_ext = os.path.join(output_path, output_file)
|
178
198
|
if format.startswith('spdx'):
|
@@ -184,12 +204,14 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
|
|
184
204
|
logger.error('Windows not support spdx format.')
|
185
205
|
else:
|
186
206
|
success_write, err_msg, result_file = write_output_file(output_file_without_ext, output_extension,
|
187
|
-
sheet_list, EXTENDED_HEADER)
|
207
|
+
sheet_list, EXTENDED_HEADER, '', cover)
|
188
208
|
if success_write:
|
189
209
|
if result_file:
|
190
|
-
logger.info(f"
|
210
|
+
logger.info(f"Output file: {result_file}")
|
191
211
|
else:
|
192
212
|
logger.warning(f"{err_msg}")
|
213
|
+
for i in cover_comment_arr:
|
214
|
+
logger.info(i.strip())
|
193
215
|
else:
|
194
216
|
ret = False
|
195
217
|
logger.error(f"Fail to generate result file. msg:({err_msg})")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: fosslight-dependency
|
3
|
-
Version: 3.14.
|
3
|
+
Version: 3.14.1
|
4
4
|
Summary: FOSSLight Dependency Scanner
|
5
5
|
Home-page: https://github.com/fosslight/fosslight_dependency_scanner
|
6
6
|
Author: LG Electronics
|
@@ -20,10 +20,11 @@ Requires-Dist: lxml
|
|
20
20
|
Requires-Dist: virtualenv
|
21
21
|
Requires-Dist: pyyaml
|
22
22
|
Requires-Dist: lastversion
|
23
|
-
Requires-Dist: fosslight-util >=1.4.
|
23
|
+
Requires-Dist: fosslight-util >=1.4.40
|
24
24
|
Requires-Dist: PyGithub
|
25
25
|
Requires-Dist: requirements-parser
|
26
26
|
Requires-Dist: defusedxml
|
27
|
+
Requires-Dist: packageurl-python
|
27
28
|
|
28
29
|
<!--
|
29
30
|
Copyright (c) 2021 LG Electronics
|
@@ -0,0 +1,33 @@
|
|
1
|
+
fosslight_dependency/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
+
fosslight_dependency/_analyze_dependency.py,sha256=5fJ-eAkGUVsAo0Eks9l40zyWNBm7HxGQMWD2bAbOWa0,3710
|
3
|
+
fosslight_dependency/_help.py,sha256=gBZfnYF8e4-WQnKa0z6zwXSRUKoIWtQyHbsvjvEFysE,2708
|
4
|
+
fosslight_dependency/_package_manager.py,sha256=6U6V413HSZAChX64v3CfXBd6jyIkuaIW60pBfbCLSfQ,13700
|
5
|
+
fosslight_dependency/constant.py,sha256=vj3YI1e1pesUoSW0wp0t9RFHCNjoKJZ6Fv4P8EAl6hU,953
|
6
|
+
fosslight_dependency/run_dependency_scanner.py,sha256=S8PQMSdSvg6QaAtY1uuQ6a0apuwdeU3jU6RdBiz2PvU,12236
|
7
|
+
fosslight_dependency/LICENSES/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
8
|
+
fosslight_dependency/LICENSES/LicenseRef-3rd_party_licenses.txt,sha256=EcsFt7aE1rp3OXAdJgmXayfOZdpRdBMcmRnyoqWMCsw,95687
|
9
|
+
fosslight_dependency/package_manager/Android.py,sha256=lPL-B-qIr4Bg1Z-bT6hSwzYF0IqW3J32At8AJNg8P_w,3015
|
10
|
+
fosslight_dependency/package_manager/Carthage.py,sha256=OZL0ssKvN6pze0VohZ-kMeM-g-V7f5VqumpEh3o3t-U,6106
|
11
|
+
fosslight_dependency/package_manager/Cocoapods.py,sha256=X6UYX0-Tdfy_hkM0l5M54WHbhZNLLpFDzrGxeBjTmcY,8450
|
12
|
+
fosslight_dependency/package_manager/Go.py,sha256=Ur7kH_alqV2o2t6Q5oP2UqmqfzdZ6l9yPuglTEOYrHU,6003
|
13
|
+
fosslight_dependency/package_manager/Gradle.py,sha256=_gZjdmNDXdUEumVwwesbaCeJI5T90xzkwZy1ACFHeR8,4182
|
14
|
+
fosslight_dependency/package_manager/Helm.py,sha256=FjzQilY3GJyX8thwMGY_Rr12kw-dbehxVk6jIJNb2-M,4024
|
15
|
+
fosslight_dependency/package_manager/Maven.py,sha256=VlIc785CrFN3RBXHy80JSx2J5AlrbXhg5cquZA-qoLw,10261
|
16
|
+
fosslight_dependency/package_manager/Npm.py,sha256=7gj-JrQKWRQUdWM-ly3HcIy1ioKny8jaeNohdBk7rfE,10557
|
17
|
+
fosslight_dependency/package_manager/Nuget.py,sha256=1YGkGktShw6xj7NGvgL763jWsnN58JEX9szTggjU1EQ,9061
|
18
|
+
fosslight_dependency/package_manager/Pub.py,sha256=u2Wsm8raxc8fYEchyUpSpiKi-1x8seE4f0zJHD8BrMI,8964
|
19
|
+
fosslight_dependency/package_manager/Pypi.py,sha256=QakFlbGrb3oOXwRj498x5k2GFS1SgNeMpgMwUpBcwWU,15698
|
20
|
+
fosslight_dependency/package_manager/Swift.py,sha256=9J-LDCn0_zDBuScUeCgZIq0BQcx4n_1fhshciF9byNE,6590
|
21
|
+
fosslight_dependency/package_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
+
fosslight_dependency/third_party/askalono/askalono.exe,sha256=NyngElHbrg3zLFRVwn6fPDZE_EDAEb1N8tiwWoCm4pQ,4743680
|
23
|
+
fosslight_dependency/third_party/askalono/askalono_macos,sha256=cYSNXhAQpkdd8lkgnY5skNeDmU_8DIuP84eFi0OXKkE,5589868
|
24
|
+
fosslight_dependency/third_party/nomos/nomossa,sha256=oFF9I-fhug6AVNyFnWeVXwDRin6NWSvk1g7mHBotB3Q,866408
|
25
|
+
fosslight_dependency-3.14.1.dist-info/Apache-2.0.txt,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
26
|
+
fosslight_dependency-3.14.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
27
|
+
fosslight_dependency-3.14.1.dist-info/LicenseRef-3rd_party_licenses.txt,sha256=EcsFt7aE1rp3OXAdJgmXayfOZdpRdBMcmRnyoqWMCsw,95687
|
28
|
+
fosslight_dependency-3.14.1.dist-info/METADATA,sha256=MZk20jKRlLdfSLg3MGLqcxcWkinMHdJVJGqPc1_Z9F4,4636
|
29
|
+
fosslight_dependency-3.14.1.dist-info/MIT.txt,sha256=9cx4CbArgByWvkoEZNqpzbpJgA9TUe2D62rMocQpgfs,1082
|
30
|
+
fosslight_dependency-3.14.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
31
|
+
fosslight_dependency-3.14.1.dist-info/entry_points.txt,sha256=e1QZbnCrQvfbwe9L6PxXnkRZMhl-PSo0QyUes0dGjU8,91
|
32
|
+
fosslight_dependency-3.14.1.dist-info/top_level.txt,sha256=Jc0V7VcVCH0TEM8ksb8dwroTYz4AmRaQnlr3FB71Hcs,21
|
33
|
+
fosslight_dependency-3.14.1.dist-info/RECORD,,
|
@@ -1,33 +0,0 @@
|
|
1
|
-
fosslight_dependency/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
fosslight_dependency/_analyze_dependency.py,sha256=5fJ-eAkGUVsAo0Eks9l40zyWNBm7HxGQMWD2bAbOWa0,3710
|
3
|
-
fosslight_dependency/_help.py,sha256=gBZfnYF8e4-WQnKa0z6zwXSRUKoIWtQyHbsvjvEFysE,2708
|
4
|
-
fosslight_dependency/_package_manager.py,sha256=BtmwTAPwH38nVMTzaMbewsYYm8xn2spmbJPoIIgYOMQ,12085
|
5
|
-
fosslight_dependency/constant.py,sha256=vj3YI1e1pesUoSW0wp0t9RFHCNjoKJZ6Fv4P8EAl6hU,953
|
6
|
-
fosslight_dependency/run_dependency_scanner.py,sha256=YLCQ_6oI9usfvW0ap4nQDZoornL8LQKpjWyKRnTeY_Y,11275
|
7
|
-
fosslight_dependency/LICENSES/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
8
|
-
fosslight_dependency/LICENSES/LicenseRef-3rd_party_licenses.txt,sha256=EcsFt7aE1rp3OXAdJgmXayfOZdpRdBMcmRnyoqWMCsw,95687
|
9
|
-
fosslight_dependency/package_manager/Android.py,sha256=Up4Fv57kuqddZsD8vy5VRwQW7bNtDbqRatjP8MgzGR8,2849
|
10
|
-
fosslight_dependency/package_manager/Carthage.py,sha256=GtJxBq_3cujbZoQC2KFdFQM4cEjcK_j9bsZaxEaZu6s,6075
|
11
|
-
fosslight_dependency/package_manager/Cocoapods.py,sha256=h_W-lknWcqDPDnixSNtJig_h0J-jel6MsIrptUWiTsc,8292
|
12
|
-
fosslight_dependency/package_manager/Go.py,sha256=d3U_hRtcPWEYbT_JVHAB3jEUKLO4FodbF8hMEWS4JFM,5866
|
13
|
-
fosslight_dependency/package_manager/Gradle.py,sha256=SVWjZM5LIVSaANQlU9W0eoDKKsK9UaG8S7Xz7RoAeYQ,4062
|
14
|
-
fosslight_dependency/package_manager/Helm.py,sha256=ZXgbtwWNgJKRUikdtFycMIwdJPu4J7vPpVvzgNLk03Q,3925
|
15
|
-
fosslight_dependency/package_manager/Maven.py,sha256=xlQXpm9Ur0DzWa5P9VesJxm-r-mQZ_hoXYWFu7oD1LA,10157
|
16
|
-
fosslight_dependency/package_manager/Npm.py,sha256=0NUBSDBYs15H9lxqaLxh7PgxPI7ewyef8BKtVxeQg14,10495
|
17
|
-
fosslight_dependency/package_manager/Nuget.py,sha256=CzYO548zetC1YNKskUpG1gSWPGF4QrrQz77VZJ5b3Eo,8866
|
18
|
-
fosslight_dependency/package_manager/Pub.py,sha256=zRelrIAeDlLAd8uTUJzYWvLUJeOnzmGPzOx8pcMG55Y,8845
|
19
|
-
fosslight_dependency/package_manager/Pypi.py,sha256=kNtLhhhpd0QMgMv86KAXclbHPJbcewSp6UefKljAwUA,15321
|
20
|
-
fosslight_dependency/package_manager/Swift.py,sha256=jHWor3dZzunwZt--8rdD42vDq4Z66m9fo5xFnIw5_cQ,6453
|
21
|
-
fosslight_dependency/package_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
-
fosslight_dependency/third_party/askalono/askalono.exe,sha256=NyngElHbrg3zLFRVwn6fPDZE_EDAEb1N8tiwWoCm4pQ,4743680
|
23
|
-
fosslight_dependency/third_party/askalono/askalono_macos,sha256=cYSNXhAQpkdd8lkgnY5skNeDmU_8DIuP84eFi0OXKkE,5589868
|
24
|
-
fosslight_dependency/third_party/nomos/nomossa,sha256=oFF9I-fhug6AVNyFnWeVXwDRin6NWSvk1g7mHBotB3Q,866408
|
25
|
-
fosslight_dependency-3.14.0.dist-info/Apache-2.0.txt,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
26
|
-
fosslight_dependency-3.14.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
27
|
-
fosslight_dependency-3.14.0.dist-info/LicenseRef-3rd_party_licenses.txt,sha256=EcsFt7aE1rp3OXAdJgmXayfOZdpRdBMcmRnyoqWMCsw,95687
|
28
|
-
fosslight_dependency-3.14.0.dist-info/METADATA,sha256=jC9CvSTt5IrvxKogfUnTNqk3DXd-OSIMgQyfY-RYjiA,4603
|
29
|
-
fosslight_dependency-3.14.0.dist-info/MIT.txt,sha256=9cx4CbArgByWvkoEZNqpzbpJgA9TUe2D62rMocQpgfs,1082
|
30
|
-
fosslight_dependency-3.14.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
31
|
-
fosslight_dependency-3.14.0.dist-info/entry_points.txt,sha256=e1QZbnCrQvfbwe9L6PxXnkRZMhl-PSo0QyUes0dGjU8,91
|
32
|
-
fosslight_dependency-3.14.0.dist-info/top_level.txt,sha256=Jc0V7VcVCH0TEM8ksb8dwroTYz4AmRaQnlr3FB71Hcs,21
|
33
|
-
fosslight_dependency-3.14.0.dist-info/RECORD,,
|
{fosslight_dependency-3.14.0.dist-info → fosslight_dependency-3.14.1.dist-info}/Apache-2.0.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{fosslight_dependency-3.14.0.dist-info → fosslight_dependency-3.14.1.dist-info}/entry_points.txt
RENAMED
File without changes
|
{fosslight_dependency-3.14.0.dist-info → fosslight_dependency-3.14.1.dist-info}/top_level.txt
RENAMED
File without changes
|