fosslight-dependency 3.12.5__py3-none-any.whl → 3.12.7__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/_analyze_dependency.py +3 -0
- fosslight_dependency/_package_manager.py +30 -40
- fosslight_dependency/constant.py +3 -1
- fosslight_dependency/package_manager/Cocoapods.py +37 -27
- fosslight_dependency/package_manager/Helm.py +95 -0
- fosslight_dependency/run_dependency_scanner.py +3 -3
- {fosslight_dependency-3.12.5.dist-info → fosslight_dependency-3.12.7.dist-info}/METADATA +1 -1
- {fosslight_dependency-3.12.5.dist-info → fosslight_dependency-3.12.7.dist-info}/RECORD +15 -14
- {fosslight_dependency-3.12.5.dist-info → fosslight_dependency-3.12.7.dist-info}/Apache-2.0.txt +0 -0
- {fosslight_dependency-3.12.5.dist-info → fosslight_dependency-3.12.7.dist-info}/LICENSE +0 -0
- {fosslight_dependency-3.12.5.dist-info → fosslight_dependency-3.12.7.dist-info}/LicenseRef-3rd_party_licenses.txt +0 -0
- {fosslight_dependency-3.12.5.dist-info → fosslight_dependency-3.12.7.dist-info}/MIT.txt +0 -0
- {fosslight_dependency-3.12.5.dist-info → fosslight_dependency-3.12.7.dist-info}/WHEEL +0 -0
- {fosslight_dependency-3.12.5.dist-info → fosslight_dependency-3.12.7.dist-info}/entry_points.txt +0 -0
- {fosslight_dependency-3.12.5.dist-info → fosslight_dependency-3.12.7.dist-info}/top_level.txt +0 -0
@@ -17,6 +17,7 @@ from fosslight_dependency.package_manager.Swift import Swift
|
|
17
17
|
from fosslight_dependency.package_manager.Carthage import Carthage
|
18
18
|
from fosslight_dependency.package_manager.Go import Go
|
19
19
|
from fosslight_dependency.package_manager.Nuget import Nuget
|
20
|
+
from fosslight_dependency.package_manager.Helm import Helm
|
20
21
|
import fosslight_util.constant as constant
|
21
22
|
|
22
23
|
logger = logging.getLogger(constant.LOGGER_NAME)
|
@@ -50,6 +51,8 @@ def analyze_dependency(package_manager_name, input_dir, output_dir, pip_activate
|
|
50
51
|
package_manager = Go(input_dir, output_dir)
|
51
52
|
elif package_manager_name == const.NUGET:
|
52
53
|
package_manager = Nuget(input_dir, output_dir)
|
54
|
+
elif package_manager_name == const.HELM:
|
55
|
+
package_manager = Helm(input_dir, output_dir)
|
53
56
|
else:
|
54
57
|
logger.error(f"Not supported package manager name: {package_manager_name}")
|
55
58
|
ret = False
|
@@ -82,7 +82,6 @@ class PackageManager:
|
|
82
82
|
pass
|
83
83
|
|
84
84
|
def run_gradle_task(self):
|
85
|
-
dependency_tree_fname = 'tmp_dependency_tree.txt'
|
86
85
|
if os.path.isfile(const.SUPPORT_PACKAE.get(self.package_manager_name)):
|
87
86
|
gradle_backup = f'{const.SUPPORT_PACKAE.get(self.package_manager_name)}_bk'
|
88
87
|
|
@@ -91,15 +90,20 @@ class PackageManager:
|
|
91
90
|
if not ret:
|
92
91
|
return
|
93
92
|
|
94
|
-
|
93
|
+
if os.path.isfile('gradlew') or os.path.isfile('gradlew.bat'):
|
94
|
+
if self.platform == const.WINDOWS:
|
95
|
+
cmd_gradle = "gradlew.bat"
|
96
|
+
else:
|
97
|
+
cmd_gradle = "./gradlew"
|
98
|
+
else:
|
99
|
+
return 1
|
100
|
+
cmd = f"{cmd_gradle} allDeps"
|
101
|
+
ret = subprocess.check_output(cmd, shell=True, encoding='utf-8')
|
95
102
|
if ret != 0:
|
103
|
+
self.parse_dependency_tree(ret)
|
104
|
+
else:
|
96
105
|
self.set_direct_dependencies(False)
|
97
106
|
logger.warning("Failed to run allDeps task.")
|
98
|
-
else:
|
99
|
-
self.parse_dependency_tree(dependency_tree_fname)
|
100
|
-
|
101
|
-
if os.path.isfile(dependency_tree_fname):
|
102
|
-
os.remove(dependency_tree_fname)
|
103
107
|
|
104
108
|
if os.path.isfile(gradle_backup):
|
105
109
|
os.remove(const.SUPPORT_PACKAE.get(self.package_manager_name))
|
@@ -128,40 +132,26 @@ class PackageManager:
|
|
128
132
|
|
129
133
|
return ret
|
130
134
|
|
131
|
-
def
|
132
|
-
if os.path.isfile('gradlew') or os.path.isfile('gradlew.bat'):
|
133
|
-
if self.platform == const.WINDOWS:
|
134
|
-
cmd_gradle = "gradlew.bat"
|
135
|
-
else:
|
136
|
-
cmd_gradle = "./gradlew"
|
137
|
-
else:
|
138
|
-
return 1
|
139
|
-
cmd = f"{cmd_gradle} allDeps > {dependency_tree_fname}"
|
140
|
-
|
141
|
-
ret = subprocess.call(cmd, shell=True)
|
142
|
-
return ret
|
143
|
-
|
144
|
-
def parse_dependency_tree(self, f_name):
|
135
|
+
def parse_dependency_tree(self, dependency_tree_fname):
|
145
136
|
config = android_config if self.package_manager_name == 'android' else gradle_config
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
logger.error(f"Failed to parse dependency tree: {e}")
|
137
|
+
packages_in_config = False
|
138
|
+
for line in dependency_tree_fname.split('\n'):
|
139
|
+
try:
|
140
|
+
line_bk = copy.deepcopy(line)
|
141
|
+
if not packages_in_config:
|
142
|
+
filtered = next(filter(lambda c: re.findall(rf'^{c}\s\-', line), config), None)
|
143
|
+
if filtered:
|
144
|
+
packages_in_config = True
|
145
|
+
else:
|
146
|
+
if line == '':
|
147
|
+
packages_in_config = False
|
148
|
+
re_result = re.findall(r'\-\-\-\s([^\:\s]+\:[^\:\s]+)\:([^\:\s]+)', line)
|
149
|
+
if re_result:
|
150
|
+
self.total_dep_list.append(re_result[0][0])
|
151
|
+
if re.match(r'^[\+|\\]\-\-\-\s([^\:\s]+\:[^\:\s]+)\:([^\:\s]+)', line_bk):
|
152
|
+
self.direct_dep_list.append(re_result[0][0])
|
153
|
+
except Exception as e:
|
154
|
+
logger.error(f"Failed to parse dependency tree: {e}")
|
165
155
|
|
166
156
|
|
167
157
|
def version_refine(oss_version):
|
fosslight_dependency/constant.py
CHANGED
@@ -21,6 +21,7 @@ SWIFT = 'swift'
|
|
21
21
|
CARTHAGE = 'carthage'
|
22
22
|
GO = 'go'
|
23
23
|
NUGET = 'nuget'
|
24
|
+
HELM = 'helm'
|
24
25
|
|
25
26
|
# Supported package name and manifest file
|
26
27
|
SUPPORT_PACKAE = {
|
@@ -34,7 +35,8 @@ SUPPORT_PACKAE = {
|
|
34
35
|
SWIFT: 'Package.resolved',
|
35
36
|
CARTHAGE: 'Cartfile.resolved',
|
36
37
|
GO: 'go.mod',
|
37
|
-
NUGET: ['packages.config', os.path.join('obj', 'project.assets.json')]
|
38
|
+
NUGET: ['packages.config', os.path.join('obj', 'project.assets.json')],
|
39
|
+
HELM: 'Chart.yaml'
|
38
40
|
}
|
39
41
|
|
40
42
|
# default android app name
|
@@ -8,7 +8,6 @@ import logging
|
|
8
8
|
import json
|
9
9
|
import yaml
|
10
10
|
import re
|
11
|
-
import traceback
|
12
11
|
import fosslight_util.constant as constant
|
13
12
|
import fosslight_dependency.constant as const
|
14
13
|
from fosslight_dependency._package_manager import PackageManager
|
@@ -99,8 +98,8 @@ class Cocoapods(PackageManager):
|
|
99
98
|
command = f"pod spec which --regex ^{search_oss_name}$"
|
100
99
|
spec_which = os.popen(command).readline()
|
101
100
|
if spec_which.startswith('[!]'):
|
102
|
-
logger.
|
103
|
-
|
101
|
+
logger.warning(f"This command({command}) returns an error")
|
102
|
+
continue
|
104
103
|
|
105
104
|
file_path = spec_which.rstrip().split(os.path.sep)
|
106
105
|
if file_path[0] == '':
|
@@ -110,38 +109,49 @@ class Cocoapods(PackageManager):
|
|
110
109
|
spec_file_path = os.path.join(file_path_without_version, pod_oss[1], file_path[-1])
|
111
110
|
|
112
111
|
oss_name, oss_version, license_name, dn_loc, homepage = self.get_oss_in_podspec(spec_file_path)
|
112
|
+
if oss_name == '':
|
113
|
+
continue
|
113
114
|
|
114
115
|
sheet_list.append([const.SUPPORT_PACKAE.get(self.package_manager_name),
|
115
116
|
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment])
|
116
117
|
except Exception as e:
|
117
|
-
logger.warning(f"
|
118
|
-
logger.warning(traceback.format_exc())
|
118
|
+
logger.warning(f"Fail to get {pod_oss[0]}:{e}")
|
119
119
|
|
120
120
|
return sheet_list
|
121
121
|
|
122
122
|
def get_oss_in_podspec(self, spec_file_path):
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
123
|
+
oss_name = ''
|
124
|
+
oss_version = ''
|
125
|
+
license_name = ''
|
126
|
+
dn_loc = ''
|
127
|
+
homepage = ''
|
128
|
+
try:
|
129
|
+
with open(spec_file_path, 'r', encoding='utf8') as json_file:
|
130
|
+
json_data = json.load(json_file)
|
131
|
+
|
132
|
+
oss_origin_name = json_data['name']
|
133
|
+
oss_name = f"{self.package_manager_name}:{oss_origin_name}"
|
134
|
+
oss_version = json_data['version']
|
135
|
+
homepage = f"{self.dn_url}pods/{oss_origin_name}"
|
136
|
+
|
137
|
+
if 'license' in json_data:
|
138
|
+
if not isinstance(json_data['license'], str):
|
139
|
+
if 'type' in json_data['license']:
|
140
|
+
license_name = json_data['license']['type']
|
141
|
+
else:
|
142
|
+
license_name = json_data['license']
|
143
|
+
else:
|
144
|
+
license_name = ''
|
145
|
+
license_name = license_name.replace(",", "")
|
146
|
+
|
147
|
+
source_keys = [key for key in json_data['source']]
|
148
|
+
for src_type_i in _source_type:
|
149
|
+
if src_type_i in source_keys:
|
150
|
+
dn_loc = json_data['source'][src_type_i]
|
151
|
+
if dn_loc.endswith('.git'):
|
152
|
+
dn_loc = dn_loc[:-4]
|
153
|
+
except Exception as e:
|
154
|
+
logger.warning(f"Fail to get oss info in podspec:{e}")
|
145
155
|
|
146
156
|
return oss_name, oss_version, license_name, dn_loc, homepage
|
147
157
|
|
@@ -0,0 +1,95 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
# Copyright (c) 2023 LG Electronics Inc.
|
4
|
+
# SPDX-License-Identifier: Apache-2.0
|
5
|
+
|
6
|
+
import os
|
7
|
+
import logging
|
8
|
+
import subprocess
|
9
|
+
import yaml
|
10
|
+
import shutil
|
11
|
+
import fosslight_util.constant as constant
|
12
|
+
import fosslight_dependency.constant as const
|
13
|
+
from fosslight_dependency._package_manager import PackageManager
|
14
|
+
from fosslight_util.download import extract_compressed_dir
|
15
|
+
|
16
|
+
logger = logging.getLogger(constant.LOGGER_NAME)
|
17
|
+
|
18
|
+
|
19
|
+
class Helm(PackageManager):
|
20
|
+
package_manager_name = const.HELM
|
21
|
+
tmp_charts_dir = 'tmp_charts'
|
22
|
+
|
23
|
+
input_file_name = const.SUPPORT_PACKAE.get(package_manager_name)
|
24
|
+
|
25
|
+
def __init__(self, input_dir, output_dir):
|
26
|
+
super().__init__(self.package_manager_name, '', input_dir, output_dir)
|
27
|
+
self.append_input_package_list_file(self.input_file_name)
|
28
|
+
|
29
|
+
def __del__(self):
|
30
|
+
if os.path.exists(self.tmp_charts_dir):
|
31
|
+
shutil.rmtree(self.tmp_charts_dir, ignore_errors=True)
|
32
|
+
|
33
|
+
def run_plugin(self):
|
34
|
+
ret = True
|
35
|
+
charts_dir = 'charts'
|
36
|
+
if os.path.isdir(charts_dir):
|
37
|
+
shutil.copytree(charts_dir, self.tmp_charts_dir)
|
38
|
+
else:
|
39
|
+
logger.info("Execute 'helm dependency build' to obtain package info.")
|
40
|
+
cmd = "helm dependency build"
|
41
|
+
|
42
|
+
ret_cmd = subprocess.call(cmd, shell=True)
|
43
|
+
if ret_cmd != 0:
|
44
|
+
logger.error(f"Failed to build helm dependency: {cmd}")
|
45
|
+
ret = False
|
46
|
+
else:
|
47
|
+
shutil.copytree(charts_dir, self.tmp_charts_dir)
|
48
|
+
shutil.rmtree(charts_dir, ignore_errors=True)
|
49
|
+
|
50
|
+
ret = extract_compressed_dir(self.tmp_charts_dir, self.tmp_charts_dir, False)
|
51
|
+
if not ret:
|
52
|
+
logger.error(f'Fail to extract compressed dir: {self.tmp_charts_dir}')
|
53
|
+
else:
|
54
|
+
logger.warning('Success to extract compressed dir')
|
55
|
+
|
56
|
+
return ret
|
57
|
+
|
58
|
+
def parse_oss_information(self, f_name):
|
59
|
+
dep_item_list = []
|
60
|
+
sheet_list = []
|
61
|
+
|
62
|
+
with open(f_name, 'r', encoding='utf8') as yaml_fp:
|
63
|
+
yaml_f = yaml.safe_load(yaml_fp)
|
64
|
+
for dep in yaml_f['dependencies']:
|
65
|
+
dep_item_list.append(dep['name'])
|
66
|
+
for dep in dep_item_list:
|
67
|
+
try:
|
68
|
+
f_path = os.path.join(self.tmp_charts_dir, dep, f_name)
|
69
|
+
with open(f_path, 'r', encoding='utf8') as yaml_fp:
|
70
|
+
yaml_f = yaml.safe_load(yaml_fp)
|
71
|
+
oss_name = f'{self.package_manager_name}:{yaml_f["name"]}'
|
72
|
+
oss_version = yaml_f.get('version', '')
|
73
|
+
if oss_version.startswith('v'):
|
74
|
+
oss_version = oss_version[1:]
|
75
|
+
|
76
|
+
homepage = yaml_f.get('home', '')
|
77
|
+
dn_loc = ''
|
78
|
+
if yaml_f.get('sources', '') != '':
|
79
|
+
dn_loc = yaml_f.get('sources', '')[0]
|
80
|
+
|
81
|
+
license_name = ''
|
82
|
+
if yaml_f.get('annotations', '') != '':
|
83
|
+
license_name = yaml_f['annotations'].get('licenses', '')
|
84
|
+
|
85
|
+
if self.direct_dep:
|
86
|
+
comment = 'direct'
|
87
|
+
|
88
|
+
except Exception as e:
|
89
|
+
logging.warning(f"Fail to parse chart info {dep}: {e}")
|
90
|
+
continue
|
91
|
+
|
92
|
+
sheet_list.append([const.SUPPORT_PACKAE.get(self.package_manager_name),
|
93
|
+
oss_name, oss_version, license_name, dn_loc, homepage, '', '', comment])
|
94
|
+
|
95
|
+
return sheet_list
|
@@ -83,14 +83,14 @@ def run_dependency_scanner(package_manager='', input_dir='', output_dir_file='',
|
|
83
83
|
|
84
84
|
if output_file == "":
|
85
85
|
if output_extension == _json_ext:
|
86
|
-
output_file = f"
|
86
|
+
output_file = f"fosslight_opossum_dep_{_start_time}"
|
87
87
|
else:
|
88
|
-
output_file = f"
|
88
|
+
output_file = f"fosslight_report_dep_{_start_time}"
|
89
89
|
else:
|
90
90
|
logger.error(msg)
|
91
91
|
sys.exit(1)
|
92
92
|
|
93
|
-
logger, _result_log = init_log(os.path.join(output_path, "
|
93
|
+
logger, _result_log = init_log(os.path.join(output_path, "fosslight_log_dep_" + _start_time + ".txt"),
|
94
94
|
True, logging.INFO, logging.DEBUG, _PKG_NAME)
|
95
95
|
|
96
96
|
logger.info(f"Tool Info : {_result_log['Tool Info']}")
|
@@ -1,16 +1,17 @@
|
|
1
1
|
fosslight_dependency/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
fosslight_dependency/_analyze_dependency.py,sha256=
|
2
|
+
fosslight_dependency/_analyze_dependency.py,sha256=5fJ-eAkGUVsAo0Eks9l40zyWNBm7HxGQMWD2bAbOWa0,3710
|
3
3
|
fosslight_dependency/_help.py,sha256=M_KD-cL7cTp0vr4BtQfgJUcD1nds1Dwf4JFhv1ocqyY,2634
|
4
|
-
fosslight_dependency/_package_manager.py,sha256=
|
5
|
-
fosslight_dependency/constant.py,sha256=
|
6
|
-
fosslight_dependency/run_dependency_scanner.py,sha256=
|
4
|
+
fosslight_dependency/_package_manager.py,sha256=1RGRxzdBl9PXC9CWZcYYLt7ILsEPUgamtvSaXFOWhXY,10430
|
5
|
+
fosslight_dependency/constant.py,sha256=v4NisxQwmnhb3e1hIfAvwDr4i_v0euZWo3wcG7U81KM,935
|
6
|
+
fosslight_dependency/run_dependency_scanner.py,sha256=8D1WxvHThCcSlLIFbzfa6In7zHZqU01pQn5fY3TbDGk,9382
|
7
7
|
fosslight_dependency/LICENSES/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
8
8
|
fosslight_dependency/LICENSES/LicenseRef-3rd_party_licenses.txt,sha256=EcsFt7aE1rp3OXAdJgmXayfOZdpRdBMcmRnyoqWMCsw,95687
|
9
9
|
fosslight_dependency/package_manager/Android.py,sha256=VWCgprtSLp4b37VUl1RYqfJgs0NbLucSl_5bwUQM-mk,2308
|
10
10
|
fosslight_dependency/package_manager/Carthage.py,sha256=8BzphCG9WnxpwJzNlKjKSZ4M_iMRwXcA1F0Ngog9Sh0,6071
|
11
|
-
fosslight_dependency/package_manager/Cocoapods.py,sha256=
|
11
|
+
fosslight_dependency/package_manager/Cocoapods.py,sha256=o9eA3EW9vRm9Kx3Gmn2hT3YS3qNQ3jb9z7fPpUYrvM4,7248
|
12
12
|
fosslight_dependency/package_manager/Go.py,sha256=IKw691jjVnhlNcaJqH-C3yrK7V6nqLoh8sx_6pMcokU,4570
|
13
13
|
fosslight_dependency/package_manager/Gradle.py,sha256=SMubp7V5Go--ZCIi5F876SXrDpfm8FEFo963f3-iYRk,3506
|
14
|
+
fosslight_dependency/package_manager/Helm.py,sha256=CSjHuU_73HANqmwzEdwBV0lqQVoObOnSgLJaRFT86qg,3500
|
14
15
|
fosslight_dependency/package_manager/Maven.py,sha256=-XJovBu8cqiwIcz64fykeIEieDbxmD7-BLERmwbUh9U,8954
|
15
16
|
fosslight_dependency/package_manager/Npm.py,sha256=y7D50U-r1Ct1Ei9UhJj0HLBKy9VaXno7P66MKeu_G8o,7605
|
16
17
|
fosslight_dependency/package_manager/Nuget.py,sha256=NMhQbn3iJebieSU_J5xMtYHVOSdXpLEh9C1h6DX5Kgs,7078
|
@@ -21,12 +22,12 @@ fosslight_dependency/package_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
|
|
21
22
|
fosslight_dependency/third_party/askalono/askalono.exe,sha256=NyngElHbrg3zLFRVwn6fPDZE_EDAEb1N8tiwWoCm4pQ,4743680
|
22
23
|
fosslight_dependency/third_party/askalono/askalono_macos,sha256=cYSNXhAQpkdd8lkgnY5skNeDmU_8DIuP84eFi0OXKkE,5589868
|
23
24
|
fosslight_dependency/third_party/nomos/nomossa,sha256=uSN7FvKDcAHJIboTxeoNXURy8RmbVEGVWrCa4FKPCwI,901072
|
24
|
-
fosslight_dependency-3.12.
|
25
|
-
fosslight_dependency-3.12.
|
26
|
-
fosslight_dependency-3.12.
|
27
|
-
fosslight_dependency-3.12.
|
28
|
-
fosslight_dependency-3.12.
|
29
|
-
fosslight_dependency-3.12.
|
30
|
-
fosslight_dependency-3.12.
|
31
|
-
fosslight_dependency-3.12.
|
32
|
-
fosslight_dependency-3.12.
|
25
|
+
fosslight_dependency-3.12.7.dist-info/Apache-2.0.txt,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
26
|
+
fosslight_dependency-3.12.7.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
27
|
+
fosslight_dependency-3.12.7.dist-info/LicenseRef-3rd_party_licenses.txt,sha256=EcsFt7aE1rp3OXAdJgmXayfOZdpRdBMcmRnyoqWMCsw,95687
|
28
|
+
fosslight_dependency-3.12.7.dist-info/METADATA,sha256=hvbRCyWySBrz8E76KKTK69c7mH0cLra27wTo1baGHtk,6418
|
29
|
+
fosslight_dependency-3.12.7.dist-info/MIT.txt,sha256=9cx4CbArgByWvkoEZNqpzbpJgA9TUe2D62rMocQpgfs,1082
|
30
|
+
fosslight_dependency-3.12.7.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
31
|
+
fosslight_dependency-3.12.7.dist-info/entry_points.txt,sha256=e1QZbnCrQvfbwe9L6PxXnkRZMhl-PSo0QyUes0dGjU8,91
|
32
|
+
fosslight_dependency-3.12.7.dist-info/top_level.txt,sha256=Jc0V7VcVCH0TEM8ksb8dwroTYz4AmRaQnlr3FB71Hcs,21
|
33
|
+
fosslight_dependency-3.12.7.dist-info/RECORD,,
|
{fosslight_dependency-3.12.5.dist-info → fosslight_dependency-3.12.7.dist-info}/Apache-2.0.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{fosslight_dependency-3.12.5.dist-info → fosslight_dependency-3.12.7.dist-info}/entry_points.txt
RENAMED
File without changes
|
{fosslight_dependency-3.12.5.dist-info → fosslight_dependency-3.12.7.dist-info}/top_level.txt
RENAMED
File without changes
|