Skip to content

Commit 96c5e55

Browse files
committed
More WIP with some PyPI tests passing
Signed-off-by: Philippe Ombredanne <pombredanne@nexb.com>
1 parent a145d7d commit 96c5e55

85 files changed

Lines changed: 11122 additions & 882 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/packagedcode/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,6 @@
179179
pypi.PythonSdistPkgInfoFile,
180180
pypi.PythonSetupPyHandler,
181181
pypi.SetupCfgHandler,
182-
pypi.ToxIniHandler,
183182

184183
readme.ReadmeHandler,
185184

src/packagedcode/models.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,6 @@ class DependentPackage(ModelMixin):
376376
)
377377

378378

379-
380379
@attr.attributes(slots=True)
381380
class Dependency(DependentPackage):
382381
"""
@@ -664,7 +663,8 @@ class PackageData(IdentifiablePackageData):
664663

665664
datasource_id = String(
666665
label='datasource id',
667-
help='Datasource identifier for the source of these package data.'
666+
help='Datasource identifier for the source of these package data.',
667+
repr=True,
668668
)
669669

670670
def to_dict(self, with_details=True, **kwargs):
@@ -850,11 +850,12 @@ def is_datafile(cls, location, filetypes=tuple()):
850850
loc = as_posixpath(location)
851851
if any(fnmatch(loc, pat) for pat in cls.path_patterns):
852852
filetypes = filetypes or cls.filetypes
853-
if filetypes:
853+
if not filetypes:
854+
return True
855+
else:
854856
T = contenttype.get_type(location)
855857
actual_type = T.filetype_file.lower()
856858
return any(ft in actual_type for ft in filetypes)
857-
return True
858859

859860
@classmethod
860861
def parse(cls, location):
@@ -1033,12 +1034,9 @@ def assemble_from_many(cls, pkgdata_resources, codebase,):
10331034
)
10341035

10351036
package_uid = package.package_uid
1036-
10371037
resource.for_packages.append(package_uid)
10381038
resource.save(codebase)
10391039

1040-
yield package
1041-
10421040
# in all cases yield possible dependencies
10431041
dependent_packages = package_data.dependencies
10441042
if dependent_packages:
@@ -1057,6 +1055,8 @@ def assemble_from_many(cls, pkgdata_resources, codebase,):
10571055
res.for_packages.append(package_uid)
10581056
res.save(codebase)
10591057

1058+
yield package
1059+
10601060
@classmethod
10611061
def assemble_from_many_datafiles(cls, datafile_name_patterns, directory, codebase):
10621062
"""

src/packagedcode/plugin_package.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,17 +156,22 @@ def create_package_and_deps(codebase, **kwargs):
156156
for package_data in resource.package_data:
157157
package_data = PackageData.from_dict(package_data)
158158

159+
if TRACE:
160+
logger_debug(' create_package_and_deps: package_data:', package_data)
161+
159162
# Find a handler for this package datasource to assemble collect
160163
# packages and deps
161164

162165
handler = get_package_handler(package_data)
163-
for item in handler.assemble(
166+
items = handler.assemble(
164167
package_data=package_data,
165168
resource=resource,
166-
codebase=codebase
167-
):
169+
codebase=codebase,
170+
)
171+
172+
for item in items:
168173
if TRACE:
169-
logger_debug('create_package_and_deps: item:', item,)
174+
logger_debug(' create_package_and_deps: item:', item,)
170175

171176
if isinstance(item, Package):
172177
packages_top_level.append(item)

src/packagedcode/pypi.py

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,10 @@ def assemble(cls, package_data, resource, codebase):
135135
'Pipfile',
136136
) + PipRequirementsFileHandler.path_patterns
137137

138+
parent = resource.parent(codebase)
138139
yield from cls.assemble_from_many_datafiles(
139140
datafile_name_patterns=datafile_name_patterns,
140-
directory=resource.parent(codebase),
141+
directory=parent,
141142
codebase=codebase,
142143
)
143144

@@ -357,7 +358,7 @@ def get_file_references(dist):
357358
if not dist:
358359
return
359360

360-
for filepath in dist.files():
361+
for filepath in dist.files or []:
361362
# FIXME: the path is relative to the "site-packages" directory or the
362363
# root of a wheel but this should be a scan path
363364
ref = models.FileReference(
@@ -542,19 +543,6 @@ class SetupCfgHandler(BaseExtractedPythonLayout):
542543
documentation_url = 'https://peps.python.org/pep-0390/'
543544

544545

545-
class ToxIniHandler(BaseDependencyFileHandler):
546-
datasource_id = 'pypi_tox_ini'
547-
path_patterns = ('*tox.ini',)
548-
default_package_type = 'pypi'
549-
default_primary_language = 'Python'
550-
description = 'Tox tox.ini'
551-
documentation_url = 'https://tox.wiki'
552-
553-
@classmethod
554-
def assemble(cls, package_data, resource, codebase):
555-
pass
556-
557-
558546
class PipfileHandler(BaseDependencyFileHandler):
559547
datasource_id = 'pipfile'
560548
path_patterns = ('*Pipfile',)
@@ -635,7 +623,7 @@ class PipRequirementsFileHandler(BaseDependencyFileHandler):
635623
'*requirements/*.txt',
636624
'*requirements/*.pip',
637625
'*requirements/*.in',
638-
'*reqs.txt'
626+
'*reqs.txt',
639627
)
640628

641629
default_package_type = 'pypi'
@@ -1047,7 +1035,6 @@ def get_dparse2_supported_file_name(file_name):
10471035
'Pipfile',
10481036
'conda.yml',
10491037
'setup.cfg',
1050-
'tox.ini',
10511038
)
10521039

10531040
for dfile_name in dfile_names:

tests/packagedcode/data/instance/pypi-with-test-manifests/tox.ini

Lines changed: 0 additions & 55 deletions
This file was deleted.

0 commit comments

Comments
 (0)