Skip to content

Commit 4634e0a

Browse files
Fix infinite recursion bug for pypi and others
Fixes #2928 in pypi and others which were being caused by infinite recursion between the functions `assign_package_to_parent_tree` and `assign_package_to_resources` because of improper overriding. Signed-off-by: Ayan Sinha Mahapatra <[email protected]>
1 parent a2068b1 commit 4634e0a

File tree

22 files changed

+17429
-11
lines changed

22 files changed

+17429
-11
lines changed

src/packagedcode/alpine.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ def compute_normalized_license(cls, package):
129129

130130
@classmethod
131131
def assign_package_to_resources(cls, package, resource, codebase):
132-
cls.assign_package_to_parent_tree(
132+
super().assign_package_to_parent_tree(
133133
package=package,
134134
resource=resource,
135135
codebase=codebase,

src/packagedcode/build.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def parse(cls, location):
5151

5252
@classmethod
5353
def assign_package_to_resources(cls, package, resource, codebase):
54-
cls.assign_package_to_parent_tree(
54+
super().assign_package_to_parent_tree(
5555
package=package,
5656
resource=resource,
5757
codebase=codebase,
@@ -376,7 +376,7 @@ def compute_normalized_license(cls, package):
376376

377377
@classmethod
378378
def assign_package_to_resources(cls, package, resource, codebase):
379-
cls.assign_package_to_parent_tree(
379+
super().assign_package_to_parent_tree(
380380
package_=package,
381381
resource=resource,
382382
codebase=codebase,

src/packagedcode/build_gradle.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def parse(cls, location):
3535
# TODO: handle complex cases of nested builds with many packages
3636
@classmethod
3737
def assign_package_to_resources(cls, package, resource, codebase):
38-
cls.assign_package_to_parent_tree(
38+
super().assign_package_to_parent_tree(
3939
package=package,
4040
resource=resource,
4141
codebase=codebase,

src/packagedcode/debian.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ def assign_package_to_resources(cls, package, resource, codebase):
142142
# two levels up
143143
root = resource.parent(codebase).parent(codebase)
144144
if root:
145-
return cls.assign_package_to_resources(package, root, codebase)
145+
return super().assign_package_to_resources(package, root, codebase)
146146

147147

148148
# TODO: also look into neighboring copyright files!!!
@@ -169,7 +169,7 @@ def assign_package_to_resources(cls, package, resource, codebase):
169169
# two levels up
170170
root = resource.parent(codebase).parent(codebase)
171171
if root:
172-
return cls.assign_package_to_resources(package, root, codebase)
172+
return super().assign_package_to_resources(package, root, codebase)
173173

174174

175175
class DebianDscFileHandler(models.DatafileHandler):
@@ -489,7 +489,7 @@ def assign_package_to_resources(cls, package, resource, codebase):
489489
# two levels up
490490
root = resource.parent(codebase).parent(codebase)
491491
if root:
492-
return cls.assign_package_to_resources(package, root, codebase)
492+
return super().assign_package_to_resources(package, root, codebase)
493493

494494

495495
def build_package_data_from_package_filename(filename, datasource_id, package_type,):

src/packagedcode/pypi.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,14 @@ class BasePypiHandler(models.DatafileHandler):
7171
def compute_normalized_license(cls, package):
7272
return compute_normalized_license(package.declared_license)
7373

74+
@classmethod
75+
def assign_package_to_resources(cls, package, resource, codebase):
76+
return models.DatafileHandler.assign_package_to_resources(package, resource, codebase)
77+
78+
@classmethod
79+
def assign_package_to_parent_tree(cls, package, resource, codebase):
80+
return models.DatafileHandler.assign_package_to_parent_tree(package, resource, codebase)
81+
7482

7583
class PythonEggPkgInfoFile(BasePypiHandler):
7684
datasource_id = 'pypi_egg_pkginfo'
@@ -93,7 +101,7 @@ def assign_package_to_resources(cls, package, resource, codebase):
93101
# two levels up
94102
root = resource.parent(codebase).parent(codebase)
95103
if root:
96-
return cls.assign_package_to_resources(package, root, codebase)
104+
return super().assign_package_to_resources(package, root, codebase)
97105

98106

99107
class PythonEditableInstallationPkgInfoFile(BasePypiHandler):
@@ -115,7 +123,7 @@ def parse(cls, location):
115123
@classmethod
116124
def assign_package_to_resources(cls, package, resource, codebase):
117125
# only the parent for now... though it can be more complex
118-
return cls.assign_package_to_parent_tree(package, resource, codebase)
126+
return super().assign_package_to_parent_tree(package, resource, codebase)
119127

120128

121129
class BaseExtractedPythonLayout(BasePypiHandler):
@@ -144,7 +152,7 @@ def assemble(cls, package_data, resource, codebase):
144152

145153
@classmethod
146154
def assign_package_to_resources(cls, package, resource, codebase):
147-
return cls.assign_package_to_parent_tree(package, resource, codebase)
155+
return super().assign_package_to_parent_tree(package, resource, codebase)
148156

149157

150158
class PythonSdistPkgInfoFile(BaseExtractedPythonLayout):

src/packagedcode/rubygems.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ def assemble(cls, package_data, resource, codebase):
123123

124124
@classmethod
125125
def assign_package_to_resources(cls, package, resource, codebase):
126-
return cls.assign_package_to_parent_tree(package, resource, codebase)
126+
return super().assign_package_to_parent_tree(package, resource, codebase)
127127

128128

129129
class GemspecHandler(BaseGemHandler):
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
sphinx ~= 4.2, != 4.4.0
2+
towncrier
3+
furo
4+
myst_parser
5+
sphinx-copybutton
6+
sphinx-inline-tabs
7+
sphinxcontrib-towncrier >= 0.2.0a0
8+
9+
# `docs.pipext` uses pip's internals to generate documentation. So, we install
10+
# the current directory to make it work.
11+
.

0 commit comments

Comments
 (0)