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 }