github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/python/cataloger.go (about)

     1  package python
     2  
     3  import (
     4  	"github.com/anchore/syft/syft/pkg/cataloger/generic"
     5  )
     6  
     7  const eggInfoGlob = "**/*.egg-info"
     8  
     9  type CatalogerConfig struct {
    10  	GuessUnpinnedRequirements bool
    11  }
    12  
    13  func DefaultCatalogerConfig() CatalogerConfig {
    14  	return CatalogerConfig{
    15  		GuessUnpinnedRequirements: false,
    16  	}
    17  }
    18  
    19  // NewPythonIndexCataloger returns a new cataloger for python packages referenced from poetry lock files, requirements.txt files, and setup.py files.
    20  func NewPythonIndexCataloger(cfg CatalogerConfig) *generic.Cataloger {
    21  	rqp := newRequirementsParser(cfg)
    22  	return generic.NewCataloger("python-index-cataloger").
    23  		WithParserByGlobs(rqp.parseRequirementsTxt, "**/*requirements*.txt").
    24  		WithParserByGlobs(parsePoetryLock, "**/poetry.lock").
    25  		WithParserByGlobs(parsePipfileLock, "**/Pipfile.lock").
    26  		WithParserByGlobs(parseSetup, "**/setup.py")
    27  }
    28  
    29  // NewPythonPackageCataloger returns a new cataloger for python packages within egg or wheel installation directories.
    30  func NewPythonPackageCataloger() *generic.Cataloger {
    31  	return generic.NewCataloger("python-package-cataloger").
    32  		WithParserByGlobs(parseWheelOrEgg, eggInfoGlob, "**/*dist-info/METADATA", "**/*egg-info/PKG-INFO")
    33  }