All classes:
- distlib.compat.CertificateError
- distlib.compat.Container
- distlib.compat.ZipExtFile
- distlib.compat.ZipFile
- distlib.compat.ChainMap
- distlib.compat.OrderedDict
- distlib.compat.ConvertingDict
- distlib.compat.ConvertingList
- distlib.compat.ConvertingTuple
- distlib.compat.BaseConfigurator
- distlib.util.cached_property
- distlib.util.FileOperator
- distlib.util.ExportEntry
- distlib.util.Cache
- distlib.util.EventMixin
- distlib.util.Sequencer
- distlib.util.Progress
- distlib.util.HTTPSConnection
- distlib.util.HTTPSHandler
- distlib.util.HTTPSOnlyHandler
- distlib.util.Transport
- distlib.util.SafeTransport
- distlib.util.ServerProxy
- distlib.util.CSVBase
- distlib.util.CSVReader
- distlib.util.CSVWriter
- distlib.util.Configurator
- distlib.util.SubprocessMixin
- distlib.util.PyPIRCFile
- distlib.version.UnsupportedVersionError
- distlib.version.Version
- distlib.version.Matcher
- distlib.version.NormalizedVersion
- distlib.version.NormalizedMatcher
- distlib.version.LegacyVersion
- distlib.version.LegacyMatcher
- distlib.version.SemanticVersion
- distlib.version.SemanticMatcher
- distlib.version.VersionScheme
- distlib.markers.Evaluator
- distlib.DistlibException
- distlib.NullHandler
- distlib.resources.ResourceCache
- distlib.resources.ResourceBase
- distlib.resources.Resource
- distlib.resources.ResourceContainer
- distlib.resources.ResourceFinder
- distlib.resources.ZipResourceFinder
- distlib.metadata.MetadataMissingError
- distlib.metadata.MetadataConflictError
- distlib.metadata.MetadataUnrecognizedVersionError
- distlib.metadata.MetadataInvalidError
- distlib.metadata.LegacyMetadata
- distlib.metadata.Metadata
- distlib.database._Cache
- distlib.database.DistributionPath
- distlib.database.Distribution
- distlib.database.BaseInstalledDistribution
- distlib.database.InstalledDistribution
- distlib.database.EggInfoDistribution
- distlib.database.DependencyGraph
- distlib.scripts.ScriptMaker
- distlib.wheel.Mounter
- distlib.wheel.Wheel
- distlib.wheel.compatible_tags._Version
- distlib.index.PackageIndex
- distlib.manifest.Manifest
- distlib.locators.RedirectHandler
- distlib.locators.Locator
- distlib.locators.PyPIRPCLocator
- distlib.locators.PyPIJSONLocator
- distlib.locators.Page
- distlib.locators.SimpleScrapingLocator
- distlib.locators.DirectoryLocator
- distlib.locators.JSONLocator
- distlib.locators.DistPathLocator
- distlib.locators.AggregatingLocator
- distlib.locators.DependencyFinder
All functions:
  Elements:
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: -1
    functionName: '...fuzz_marker'
    functionSourceFile: '...fuzz_marker'
    functionUses: 0
    functionsReached:
    - atheris.Setup
    - atheris.instrument_all
    - '...fuzz_marker.main'
    - atheris.Fuzz
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - data
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 8
    functionLinenumber: 21
    functionName: '...fuzz_marker.TestOneInput'
    functionSourceFile: '...fuzz_marker'
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - distlib.markers._get_versions
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - distlib.markers.interpret_parsed
    - PEP440_VERSION_RE.match
    - distlib.util.parse_marker.marker
    - distlib.markers._is_version_marker
    - p.zfill
    - distlib.markers._is_literal
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.util.parse_marker
    - _VERSION_PATTERN.finditer
    - m.end
    - distlib.version._semantic_key.make_tuple
    - AND.match
    - context.update
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - IDENTIFIER.match
    - _SEMVER_RE.match
    - result.append
    - distlib.markers.Evaluator.evaluate
    - parts.append
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - OR.match
    - s.lower
    - s.strip
    - <builtin>.dict
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.markers.interpret
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - fdp.ConsumeUnicodeNoSurrogates
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - atheris.FuzzedDataProvider
    - distlib.util.parse_marker.marker_expr
    - distlib.util.parse_marker.marker_and
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: atheris.FuzzedDataProvider
    functionSourceFile: atheris
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: fdp.ConsumeUnicodeNoSurrogates
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7bc07f0>
    argNames:
    - marker
    - execution_context
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 149
    functionName: distlib.markers.interpret
    functionSourceFile: distlib.markers
    functionUses: 8
    functionsReached:
    - distlib.version.Version.__init__
    - distlib.markers._get_versions
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - distlib.markers.interpret_parsed
    - PEP440_VERSION_RE.match
    - distlib.util.parse_marker.marker
    - distlib.markers._is_version_marker
    - p.zfill
    - distlib.markers._is_literal
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.util.parse_marker
    - _VERSION_PATTERN.finditer
    - m.end
    - distlib.version._semantic_key.make_tuple
    - AND.match
    - context.update
    - p.isdigit
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - local.split
    - IDENTIFIER.match
    - _SEMVER_RE.match
    - result.append
    - distlib.markers.Evaluator.evaluate
    - parts.append
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - OR.match
    - s.lower
    - s.strip
    - <builtin>.dict
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.util.parse_marker.marker_expr
    - distlib.util.parse_marker.marker_and
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised:
    - SyntaxError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 29
    functionName: '...fuzz_marker.main'
    functionSourceFile: '...fuzz_marker'
    functionUses: 1
    functionsReached:
    - atheris.Setup
    - atheris.instrument_all
    - atheris.Fuzz
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: atheris.instrument_all
    functionSourceFile: atheris
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: atheris.Setup
    functionSourceFile: atheris
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: atheris.Fuzz
    functionSourceFile: atheris
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: -1
    functionName: distlib.markers
    functionSourceFile: distlib.markers
    functionUses: 0
    functionsReached:
    - platform.version
    - m.group
    - platform.python_version
    - _DIGITS.match
    - distlib.markers.default_context
    - platform.machine
    - re.compile
    - platform.python_implementation
    - distlib.markers.default_context.format_full_version
    - platform.system
    - <builtin>.getattr
    - distlib.util.in_venv
    - <builtin>.str
    - <builtin>.hasattr
    - platform.release
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: re.compile
    functionSourceFile: re
    functionUses: 28
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - s
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 30
    functionName: distlib.markers._is_version_marker
    functionSourceFile: distlib.markers
    functionUses: 11
    functionsReached:
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.isinstance
    functionSourceFile: <builtin>
    functionUses: 132
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - o
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 34
    functionName: distlib.markers._is_literal
    functionSourceFile: distlib.markers
    functionUses: 11
    functionsReached:
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - s
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 40
    functionName: distlib.markers._get_versions
    functionSourceFile: distlib.markers
    functionUses: 11
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - _VERSION_PATTERN.finditer
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - result.append
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: m.groups
    functionSourceFile: <builtin>
    functionUses: 95
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - s
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 31
    functionName: distlib.version.Version.__init__
    functionSourceFile: distlib.version
    functionUses: 70
    functionsReached:
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - result.append
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _VERSION_PATTERN.finditer
    functionSourceFile: <builtin>
    functionUses: 12
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.markers.Evaluator.<dict1>.<lambda1>
    functionSourceFile: distlib.markers
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.markers.Evaluator.<dict1>.<lambda2>
    functionSourceFile: distlib.markers
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.markers.Evaluator.<dict1>.<lambda3>
    functionSourceFile: distlib.markers
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.markers.Evaluator.<dict1>.<lambda4>
    functionSourceFile: distlib.markers
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.markers.Evaluator.<dict1>.<lambda5>
    functionSourceFile: distlib.markers
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.markers.Evaluator.<dict1>.<lambda6>
    functionSourceFile: distlib.markers
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.markers.Evaluator.<dict1>.<lambda7>
    functionSourceFile: distlib.markers
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.markers.Evaluator.<dict1>.<lambda8>
    functionSourceFile: distlib.markers
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.markers.Evaluator.<dict1>.<lambda9>
    functionSourceFile: distlib.markers
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.markers.Evaluator.<dict1>.<lambda10>
    functionSourceFile: distlib.markers
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.markers.Evaluator.<dict1>.<lambda11>
    functionSourceFile: distlib.markers
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.markers.Evaluator.<dict1>.<lambda12>
    functionSourceFile: distlib.markers
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 1
    IfCount: 7
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - expr
    - context
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 64
    functionName: distlib.markers.Evaluator.evaluate
    functionSourceFile: distlib.markers
    functionUses: 10
    functionsReached:
    - distlib.version.Version.__init__
    - distlib.markers._get_versions
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - distlib.markers._is_version_marker
    - p.zfill
    - distlib.markers._is_literal
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - _VERSION_PATTERN.finditer
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - result.append
    - distlib.markers.Evaluator.evaluate
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised:
    - NotImplementedError
    - SyntaxError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 102
    functionName: distlib.markers.default_context
    functionSourceFile: distlib.markers
    functionUses: 1
    functionsReached:
    - m.group
    - platform.version
    - platform.python_version
    - _DIGITS.match
    - platform.machine
    - platform.python_implementation
    - distlib.markers.default_context.format_full_version
    - platform.system
    - <builtin>.getattr
    - distlib.util.in_venv
    - <builtin>.str
    - <builtin>.hasattr
    - platform.release
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - info
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 104
    functionName: distlib.markers.default_context.format_full_version
    functionSourceFile: distlib.markers
    functionUses: 2
    functionsReached:
    - <builtin>.str
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.str
    functionSourceFile: <builtin>
    functionUses: 35
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.hasattr
    functionSourceFile: <builtin>
    functionUses: 49
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: platform.python_version
    functionSourceFile: platform
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _DIGITS.match
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: m.group
    functionSourceFile: <builtin>
    functionUses: 17
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: platform.machine
    functionSourceFile: platform
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: platform.python_implementation
    functionSourceFile: platform
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: platform.release
    functionSourceFile: platform
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: platform.system
    functionSourceFile: platform
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: platform.version
    functionSourceFile: platform
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 294
    functionName: distlib.util.in_venv
    functionSourceFile: distlib.util
    functionUses: 7
    functionsReached:
    - <builtin>.getattr
    - <builtin>.hasattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7bc0190>
    argNames:
    - expr
    - execution_context
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 143
    functionName: distlib.markers.interpret_parsed
    functionSourceFile: distlib.markers
    functionUses: 9
    functionsReached:
    - distlib.version.Version.__init__
    - distlib.markers._get_versions
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - distlib.markers._is_version_marker
    - p.zfill
    - distlib.markers._is_literal
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - _VERSION_PATTERN.finditer
    - distlib.version._semantic_key.make_tuple
    - context.update
    - p.isdigit
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - local.split
    - _SEMVER_RE.match
    - result.append
    - distlib.markers.Evaluator.evaluate
    - parts.append
    - s.lower
    - s.strip
    - <builtin>.dict
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.dict
    functionSourceFile: <builtin>
    functionUses: 24
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: context.update
    functionSourceFile: <builtin>
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - marker_string
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 54
    functionName: distlib.util.parse_marker
    functionSourceFile: distlib.util
    functionUses: 23
    functionsReached:
    - parts.append
    - m.groups
    - distlib.util.parse_marker.marker
    - MARKER_OP.match
    - m.end
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - AND.match
    - OR.match
    - distlib.util.parse_marker.marker_expr
    - distlib.util.parse_marker.marker_and
    - IDENTIFIER.match
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.util
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - contextlib.contextmanager
    - re.compile
    - logging.getLogger
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logging.getLogger
    functionSourceFile: logging
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 3
    IfCount: 6
    argCount: 1
    argDefaultValues: []
    argNames:
    - remaining
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 64
    functionName: distlib.util.parse_marker.marker_var
    functionSourceFile: distlib.util
    functionUses: 27
    functionsReached:
    - parts.append
    - m.groups
    - m.end
    - STRING_CHUNK.match
    - IDENTIFIER.match
    linkageType: pythonLinkage
    raised:
    - SyntaxError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: IDENTIFIER.match
    functionSourceFile: <builtin>
    functionUses: 29
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: m.end
    functionSourceFile: <builtin>
    functionUses: 35
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: parts.append
    functionSourceFile: <builtin>
    functionUses: 85
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: STRING_CHUNK.match
    functionSourceFile: <builtin>
    functionUses: 28
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 0
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - remaining
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 100
    functionName: distlib.util.parse_marker.marker_expr
    functionSourceFile: distlib.util
    functionUses: 26
    functionsReached:
    - parts.append
    - m.groups
    - distlib.util.parse_marker.marker
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - m.end
    - AND.match
    - OR.match
    - distlib.util.parse_marker.marker_expr
    - distlib.util.parse_marker.marker_and
    - IDENTIFIER.match
    linkageType: pythonLinkage
    raised:
    - SyntaxError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - remaining
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 130
    functionName: distlib.util.parse_marker.marker
    functionSourceFile: distlib.util
    functionUses: 26
    functionsReached:
    - parts.append
    - m.groups
    - distlib.util.parse_marker.marker
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - m.end
    - STRING_CHUNK.match
    - AND.match
    - OR.match
    - distlib.util.parse_marker.marker_expr
    - distlib.util.parse_marker.marker_and
    - IDENTIFIER.match
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: MARKER_OP.match
    functionSourceFile: <builtin>
    functionUses: 27
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - remaining
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 119
    functionName: distlib.util.parse_marker.marker_and
    functionSourceFile: distlib.util
    functionUses: 26
    functionsReached:
    - parts.append
    - m.groups
    - distlib.util.parse_marker.marker
    - m.end
    - distlib.util.parse_marker.marker_var
    - MARKER_OP.match
    - STRING_CHUNK.match
    - AND.match
    - OR.match
    - distlib.util.parse_marker.marker_expr
    - distlib.util.parse_marker.marker_and
    - IDENTIFIER.match
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: AND.match
    functionSourceFile: <builtin>
    functionUses: 27
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: OR.match
    functionSourceFile: <builtin>
    functionUses: 27
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 21
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 11
    EdgeCount: 30
    ICount: 2
    IfCount: 21
    argCount: 1
    argDefaultValues: []
    argNames:
    - req
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 144
    functionName: distlib.util.parse_requirement
    functionSourceFile: distlib.util
    functionUses: 13
    functionsReached:
    - remaining.find
    - NON_SPACE.match
    - distlib.util.parse_marker.marker
    - COMPARE_OP.match
    - urllib.parse.urlparse
    - distlib.util.parse_marker
    - m.end
    - VERSION_IDENTIFIER.match
    - AND.match
    - versions.append
    - IDENTIFIER.match
    - distlib.util.parse_requirement.get_versions
    - remaining.startswith
    - parts.append
    - extras.append
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - OR.match
    - req.strip
    - m.groups
    - distlib.util.parse_marker.marker_expr
    - distlib.util.parse_marker.marker_and
    - urlparse.urlparse
    - types.SimpleNamespace
    linkageType: pythonLinkage
    raised:
    - SyntaxError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: req.strip
    functionSourceFile: <builtin>
    functionUses: 14
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: remaining.startswith
    functionSourceFile: <builtin>
    functionUses: 14
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: remaining.find
    functionSourceFile: <builtin>
    functionUses: 14
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: extras.append
    functionSourceFile: <builtin>
    functionUses: 14
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: NON_SPACE.match
    functionSourceFile: <builtin>
    functionUses: 14
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.parse.urlparse
    functionSourceFile: urllib
    functionUses: 37
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urlparse.urlparse
    functionSourceFile: urlparse
    functionUses: 37
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 2
    IfCount: 6
    argCount: 1
    argDefaultValues: []
    argNames:
    - ver_remaining
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 196
    functionName: distlib.util.parse_requirement.get_versions
    functionSourceFile: distlib.util
    functionUses: 14
    functionsReached:
    - m.groups
    - m.end
    - VERSION_IDENTIFIER.match
    - COMPARE_OP.match
    - versions.append
    linkageType: pythonLinkage
    raised:
    - SyntaxError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: COMPARE_OP.match
    functionSourceFile: <builtin>
    functionUses: 15
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: VERSION_IDENTIFIER.match
    functionSourceFile: <builtin>
    functionUses: 15
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: versions.append
    functionSourceFile: <builtin>
    functionUses: 15
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: types.SimpleNamespace
    functionSourceFile: types
    functionUses: 14
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - resources_root
    - rules
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 268
    functionName: distlib.util.get_resources_dests
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - distlib.util.iglob
    - dest.replace
    - os.path.join
    - os.walk
    - _CHECK_MISMATCH_SET.search
    - set.split
    - distlib.util.get_resources_dests.get_rel_path
    - _CHECK_RECURSIVE_GLOB.search
    - radical.lstrip
    - os.path.normpath
    - glob.iglob.startswith
    - glob.iglob.replace
    - destinations.pop
    - distlib.util._iglob
    - glob.iglob
    - path_glob.split
    - RICH_GLOB.split
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - root
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 271
    functionName: distlib.util.get_resources_dests.get_rel_path
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - glob.iglob.replace
    - glob.iglob.startswith
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: glob.iglob.replace
    functionSourceFile: glob
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: glob.iglob.startswith
    functionSourceFile: glob
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.len
    functionSourceFile: <builtin>
    functionUses: 131
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.join
    functionSourceFile: os
    functionUses: 85
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - path_glob
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1412
    functionName: distlib.util.iglob
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - os.path.join
    - os.walk
    - _CHECK_MISMATCH_SET.search
    - set.split
    - _CHECK_RECURSIVE_GLOB.search
    - radical.lstrip
    - os.path.normpath
    - distlib.util._iglob
    - glob.iglob
    - path_glob.split
    - RICH_GLOB.split
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: destinations.pop
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dest.replace
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.getattr
    functionSourceFile: <builtin>
    functionUses: 50
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 304
    functionName: distlib.util.get_executable
    functionSourceFile: distlib.util
    functionUses: 5
    functionsReached:
    - <builtin>.isinstance
    - os.fsdecode
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.fsdecode
    functionSourceFile: os
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 0
    IfCount: 4
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7b0d2e0>
    - <ast.Constant object at 0x7ff8d7b0d3d0>
    argNames:
    - prompt
    - allowed_chars
    - error_prompt
    - default
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 322
    functionName: distlib.util.proceed
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - d
    - keys
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 338
    functionName: distlib.util.extract_by_key
    functionSourceFile: distlib.util
    functionUses: 2
    functionsReached:
    - keys.split
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: keys.split
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 4
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - stream
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 348
    functionName: distlib.util.read_exports
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - distlib.util.get_export_entry
    - flags.split
    - StringIO.StringIO.close
    - StringIO.StringIO
    - cp.items
    - f.strip
    - m.groupdict
    - <builtin>.hasattr
    - path.count
    - entries.items
    - textwrap.dedent
    - io.StringIO.close
    - cp.sections
    - io.StringIO.seek
    - result.items
    - codecs.getreader
    - cp.read_file
    - StringIO.StringIO.read
    - distlib.util.read_exports.read_stream
    - io.StringIO
    - io.StringIO.read
    - path.split
    - configparser.ConfigParser
    - ENTRY_RE.search
    - StringIO.StringIO.seek
    - json.load
    - cp.readfp
    - distlib.util.ExportEntry.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: codecs.getreader
    functionSourceFile: codecs
    functionUses: 18
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: io.StringIO.read
    functionSourceFile: io
    functionUses: 25
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: StringIO.StringIO.read
    functionSourceFile: StringIO
    functionUses: 25
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: io.StringIO
    functionSourceFile: io
    functionUses: 25
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: StringIO.StringIO
    functionSourceFile: StringIO
    functionUses: 25
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: json.load
    functionSourceFile: json
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: result.items
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: entries.items
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 0
    IfCount: 6
    argCount: 1
    argDefaultValues: []
    argNames:
    - specification
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 720
    functionName: distlib.util.get_export_entry
    functionSourceFile: distlib.util
    functionUses: 4
    functionsReached:
    - path.count
    - flags.split
    - f.strip
    - m.groupdict
    - path.split
    - distlib.util.ExportEntry.__init__
    - ENTRY_RE.search
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: io.StringIO.seek
    functionSourceFile: io
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: StringIO.StringIO.seek
    functionSourceFile: StringIO
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - cp
    - stream
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 368
    functionName: distlib.util.read_exports.read_stream
    functionSourceFile: distlib.util
    functionUses: 2
    functionsReached:
    - cp.readfp
    - cp.read_file
    - <builtin>.hasattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: cp.read_file
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: cp.readfp
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: configparser.ConfigParser
    functionSourceFile: configparser
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: StringIO.StringIO.close
    functionSourceFile: StringIO
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: io.StringIO.close
    functionSourceFile: io
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: textwrap.dedent
    functionSourceFile: textwrap
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: cp.sections
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: cp.items
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 3
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - exports
    - stream
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 395
    functionName: distlib.util.write_exports
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - codecs.getwriter
    - configparser.ConfigParser
    - cp.add_section
    - exports.items
    - cp.set
    - v.values
    - cp.write
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: codecs.getwriter
    functionSourceFile: codecs
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: exports.items
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: cp.add_section
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: v.values
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: cp.set
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: cp.write
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: contextlib.contextmanager
    functionSourceFile: ''
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 415
    functionName: distlib.util.tempdir
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - shutil.rmtree
    - tempfile.mkdtemp
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: tempfile.mkdtemp
    functionSourceFile: tempfile
    functionUses: 12
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: shutil.rmtree
    functionSourceFile: shutil
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - d
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 424
    functionName: distlib.util.chdir
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - os.chdir
    - os.getcwd
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.getcwd
    functionSourceFile: os
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.chdir
    functionSourceFile: os
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7b7c1f0>
    argNames:
    - seconds
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 434
    functionName: distlib.util.socket_timeout
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - socket.getdefaulttimeout
    - socket.setdefaulttimeout
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: socket.getdefaulttimeout
    functionSourceFile: socket
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: socket.setdefaulttimeout
    functionSourceFile: socket
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - func
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 445
    functionName: distlib.util.cached_property.__init__
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7b7c220>
    argNames:
    - self
    - obj
    - cls
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 450
    functionName: distlib.util.cached_property.__get__
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - object.__setattr__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: object.__setattr__
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 2
    IfCount: 5
    argCount: 1
    argDefaultValues: []
    argNames:
    - pathname
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 459
    functionName: distlib.util.convert_path
    functionSourceFile: distlib.util
    functionUses: 9
    functionsReached:
    - pathname.split
    - os.path.join
    - paths.remove
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pathname.split
    functionSourceFile: <builtin>
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: paths.remove
    functionSourceFile: <builtin>
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7d4dca0>
    argNames:
    - self
    - dry_run
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 488
    functionName: distlib.util.FileOperator.__init__
    functionSourceFile: distlib.util
    functionUses: 2
    functionsReached:
    - <builtin>.set
    - distlib.util.FileOperator._init_record
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.set
    functionSourceFile: <builtin>
    functionUses: 75
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 493
    functionName: distlib.util.FileOperator._init_record
    functionSourceFile: distlib.util
    functionUses: 5
    functionsReached:
    - <builtin>.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 498
    functionName: distlib.util.FileOperator.record_as_written
    functionSourceFile: distlib.util
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - source
    - target
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 502
    functionName: distlib.util.FileOperator.newer
    functionSourceFile: distlib.util
    functionUses: 2
    functionsReached:
    - os.path.exists
    - os.stat
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.exists
    functionSourceFile: os
    functionUses: 45
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.stat
    functionSourceFile: os
    functionUses: 15
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 5
    IfCount: 5
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7bc61c0>
    argNames:
    - self
    - infile
    - outfile
    - check
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 521
    functionName: distlib.util.FileOperator.copy_file
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - os.path.split
    - os.path.exists
    - os.path.dirname
    - shutil.copyfile
    - distlib.util.FileOperator.record_as_written
    - os.path.isfile
    - logger.info
    - os.mkdir
    - os.path.abspath
    - os.path.islink
    - distlib.util.FileOperator.ensure_dir
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.dirname
    functionSourceFile: os
    functionUses: 15
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 5
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 579
    functionName: distlib.util.FileOperator.ensure_dir
    functionSourceFile: distlib.util
    functionUses: 5
    functionsReached:
    - os.path.split
    - os.path.exists
    - logger.info
    - os.mkdir
    - os.path.abspath
    - distlib.util.FileOperator.ensure_dir
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logger.info
    functionSourceFile: <builtin>
    functionUses: 14
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.islink
    functionSourceFile: os
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.isfile
    functionSourceFile: os
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: shutil.copyfile
    functionSourceFile: shutil
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    IfCount: 2
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7ec1f40>
    argNames:
    - self
    - instream
    - outfile
    - encoding
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 538
    functionName: distlib.util.FileOperator.copy_stream
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - os.path.split
    - os.path.exists
    - os.path.dirname
    - distlib.util.FileOperator.record_as_written
    - outstream.close
    - logger.info
    - <builtin>.open
    - shutil.copyfileobj
    - os.path.isdir
    - codecs.open
    - os.mkdir
    - os.path.abspath
    - distlib.util.FileOperator.ensure_dir
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.isdir
    functionSourceFile: os
    functionUses: 34
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.open
    functionSourceFile: <builtin>
    functionUses: 61
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: codecs.open
    functionSourceFile: codecs
    functionUses: 37
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: shutil.copyfileobj
    functionSourceFile: shutil
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: outstream.close
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    IfCount: 2
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - path
    - data
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 553
    functionName: distlib.util.FileOperator.write_binary_file
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - os.path.split
    - f.write
    - os.path.exists
    - os.path.dirname
    - distlib.util.FileOperator.record_as_written
    - logger.info
    - <builtin>.open
    - os.mkdir
    - os.path.abspath
    - distlib.util.FileOperator.ensure_dir
    - os.remove
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.remove
    functionSourceFile: os
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: f.write
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - path
    - data
    - encoding
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 562
    functionName: distlib.util.FileOperator.write_text_file
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - distlib.util.FileOperator.write_binary_file
    - os.path.split
    - f.write
    - os.path.exists
    - os.path.dirname
    - distlib.util.FileOperator.record_as_written
    - logger.info
    - data.encode
    - <builtin>.open
    - os.mkdir
    - os.path.abspath
    - distlib.util.FileOperator.ensure_dir
    - os.remove
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: data.encode
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    IfCount: 2
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - bits
    - mask
    - files
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 565
    functionName: distlib.util.FileOperator.set_mode
    functionSourceFile: distlib.util
    functionUses: 2
    functionsReached:
    - os.chmod
    - os.stat
    - logger.info
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.chmod
    functionSourceFile: os
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: -1
    functionName: distlib.util.FileOperator.<lambda1>
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - distlib.util.FileOperator.set_mode
    - os.chmod
    - os.stat
    - logger.info
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.abspath
    functionSourceFile: os
    functionUses: 29
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.split
    functionSourceFile: os
    functionUses: 24
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.mkdir
    functionSourceFile: os
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 3
    IfCount: 5
    argCount: 6
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d8306a90>
    - <ast.Constant object at 0x7ff8d83062e0>
    - <ast.Constant object at 0x7ff8d8306ca0>
    - <ast.Constant object at 0x7ff8d8306100>
    argNames:
    - self
    - path
    - optimize
    - force
    - prefix
    - hashed_invalidation
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 591
    functionName: distlib.util.FileOperator.byte_compile
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - os.path.exists
    - path.startswith
    - distlib.util.FileOperator.record_as_written
    - logger.info
    - importlib.util.cache_from_source
    - <builtin>.isinstance
    - os.stat
    - py_compile.compile
    - distlib.util.FileOperator.newer
    - <builtin>.len
    - <builtin>.hasattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: importlib.util.cache_from_source
    functionSourceFile: importlib
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: path.startswith
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: py_compile.compile
    functionSourceFile: py_compile
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 6
    IfCount: 9
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 610
    functionName: distlib.util.FileOperator.ensure_removed
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - os.path.exists
    - shutil.rmtree
    - os.path.isdir
    - logger.debug
    - os.path.islink
    - os.remove
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logger.debug
    functionSourceFile: <builtin>
    functionUses: 86
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 631
    functionName: distlib.util.FileOperator.is_writable
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - os.path.exists
    - os.path.dirname
    - os.access
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.access
    functionSourceFile: os
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 643
    functionName: distlib.util.FileOperator.commit
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - <builtin>.set
    - distlib.util.FileOperator._init_record
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 4
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 653
    functionName: distlib.util.FileOperator.rollback
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - <builtin>.sorted
    - os.path.join
    - <builtin>.list
    - os.path.exists
    - os.listdir
    - <builtin>.set
    - distlib.util.FileOperator._init_record
    - os.remove
    - os.rmdir
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.list
    functionSourceFile: <builtin>
    functionUses: 21
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.sorted
    functionSourceFile: <builtin>
    functionUses: 20
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.listdir
    functionSourceFile: os
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.rmdir
    functionSourceFile: os
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - module_name
    - dotted_path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 672
    functionName: distlib.util.resolve
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - parts.pop
    - dotted_path.split
    - <builtin>.__import__
    - <builtin>.getattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.__import__
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dotted_path.split
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: parts.pop
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 5
    argDefaultValues: []
    argNames:
    - self
    - name
    - prefix
    - suffix
    - flags
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 689
    functionName: distlib.util.ExportEntry.__init__
    functionSourceFile: distlib.util
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.util.ExportEntry
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - distlib.util.cached_property
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.util.cached_property
    functionSourceFile: ''
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 696
    functionName: distlib.util.ExportEntry.value
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - distlib.util.resolve
    - parts.pop
    - <builtin>.getattr
    - dotted_path.split
    - <builtin>.__import__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 699
    functionName: distlib.util.ExportEntry.__repr__
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 702
    functionName: distlib.util.ExportEntry.__eq__
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ENTRY_RE.search
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: m.groupdict
    functionSourceFile: <builtin>
    functionUses: 29
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: path.count
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: path.split
    functionSourceFile: <builtin>
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: f.strip
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: flags.split
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 5
    IfCount: 5
    argCount: 1
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7927eb0>
    argNames:
    - suffix
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 751
    functionName: distlib.util.get_cache_base
    functionSourceFile: distlib.util
    functionUses: 5
    functionsReached:
    - os.path.join
    - logger.warning
    - os.makedirs
    - os.path.isdir
    - tempfile.mkdtemp
    - os.path.expanduser
    - os.path.expandvars
    - os.access
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.expandvars
    functionSourceFile: os
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.expanduser
    functionSourceFile: os
    functionUses: 12
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logger.warning
    functionSourceFile: <builtin>
    functionUses: 71
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.makedirs
    functionSourceFile: os
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7bd9550>
    argNames:
    - path
    - use_abspath
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 792
    functionName: distlib.util.path_to_cache_dir
    functionSourceFile: distlib.util
    functionUses: 5
    functionsReached:
    - d.replace
    - os.path.abspath
    - os.path.splitdrive
    - p.replace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.splitdrive
    functionSourceFile: os
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: d.replace
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: p.replace
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - s
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 809
    functionName: distlib.util.ensure_slash
    functionSourceFile: distlib.util
    functionUses: 6
    functionsReached:
    - urlparse.urljoin.endswith
    - urllib.parse.urljoin.endswith
    - urllib.parse.urlunparse.endswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urlparse.urljoin.endswith
    functionSourceFile: urlparse
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.parse.urljoin.endswith
    functionSourceFile: urllib
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.parse.urlunparse.endswith
    functionSourceFile: urllib
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 0
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - netloc
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 815
    functionName: distlib.util.parse_credentials
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - netloc.rsplit
    - prefix.split
    - urllib.parse.unquote
    - urllib.unquote
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: netloc.rsplit
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: prefix.split
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.parse.unquote
    functionSourceFile: urllib
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.unquote
    functionSourceFile: urllib
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 830
    functionName: distlib.util.get_process_umask
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - os.umask
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.umask
    functionSourceFile: os
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - seq
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 836
    functionName: distlib.util.is_string_sequence
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - <builtin>.enumerate
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.enumerate
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 1
    IfCount: 5
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d826eeb0>
    argNames:
    - filename
    - project_name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 852
    functionName: distlib.util.split_filename
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - m.group
    - re.escape
    - urllib.unquote
    - urllib.unquote.replace
    - urllib.parse.unquote
    - urllib.parse.unquote.replace
    - m.end
    - PROJECT_NAME_AND_VERSION.match
    - m.start
    - re.match
    - PYTHON_VERSION.search
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.parse.unquote.replace
    functionSourceFile: urllib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.unquote.replace
    functionSourceFile: urllib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: PYTHON_VERSION.search
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: m.start
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: re.escape
    functionSourceFile: re
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: re.match
    functionSourceFile: re
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: PROJECT_NAME_AND_VERSION.match
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - p
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 882
    functionName: distlib.util.parse_name_and_version
    functionSourceFile: distlib.util
    functionUses: 9
    functionsReached:
    - m.groupdict
    - NAME_VERSION_RE.match
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: NAME_VERSION_RE.match
    functionSourceFile: <builtin>
    functionUses: 20
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 6
    IfCount: 6
    argCount: 2
    argDefaultValues: []
    argNames:
    - requested
    - available
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 898
    functionName: distlib.util.get_extras
    functionSourceFile: distlib.util
    functionUses: 7
    functionsReached:
    - logger.warning
    - requested.remove
    - result.add
    - result.remove
    - <builtin>.set
    - r.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: requested.remove
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: result.add
    functionSourceFile: <builtin>
    functionUses: 18
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: r.startswith
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: result.remove
    functionSourceFile: <builtin>
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - url
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 926
    functionName: distlib.util._get_external_data
    functionSourceFile: distlib.util
    functionUses: 3
    functionsReached:
    - logger.exception
    - codecs.getreader
    - json.load
    - urllib.request.urlopen
    - urllib2.urlopen.info
    - urllib2.urlopen
    - ct.startswith
    - logger.debug
    - headers.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib2.urlopen
    functionSourceFile: urllib2
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.request.urlopen
    functionSourceFile: urllib
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib2.urlopen.info
    functionSourceFile: urllib2
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: headers.get
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ct.startswith
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logger.exception
    functionSourceFile: <builtin>
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - name
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 950
    functionName: distlib.util.get_project_data
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - logger.exception
    - codecs.getreader
    - distlib.util._get_external_data
    - json.load
    - urllib.request.urlopen
    - urlparse.urljoin
    - urllib.parse.urljoin
    - urllib2.urlopen.info
    - urllib2.urlopen
    - ct.startswith
    - logger.debug
    - headers.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urlparse.urljoin
    functionSourceFile: urlparse
    functionUses: 12
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.parse.urljoin
    functionSourceFile: urllib
    functionUses: 12
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - name
    - version
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 957
    functionName: distlib.util.get_package_data
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - logger.exception
    - codecs.getreader
    - distlib.util._get_external_data
    - json.load
    - urllib.request.urlopen
    - urlparse.urljoin
    - urllib.parse.urljoin
    - urllib2.urlopen.info
    - urllib2.urlopen
    - ct.startswith
    - logger.debug
    - headers.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - base
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 970
    functionName: distlib.util.Cache.__init__
    functionSourceFile: distlib.util
    functionUses: 3
    functionsReached:
    - logger.warning
    - os.makedirs
    - os.path.normpath
    - os.path.isdir
    - os.path.abspath
    - os.stat
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.normpath
    functionSourceFile: os
    functionUses: 14
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7bc0460>
    argNames:
    - self
    - prefix
    - use_abspath
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 984
    functionName: distlib.util.Cache.prefix_to_dir
    functionSourceFile: distlib.util
    functionUses: 4
    functionsReached:
    - distlib.util.path_to_cache_dir
    - p.replace
    - os.path.abspath
    - os.path.splitdrive
    - d.replace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 990
    functionName: distlib.util.Cache.clear
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - os.path.join
    - shutil.rmtree
    - os.listdir
    - os.path.isfile
    - not_removed.append
    - os.path.isdir
    - os.path.islink
    - os.remove
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: not_removed.append
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1012
    functionName: distlib.util.EventMixin.__init__
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    IfCount: 2
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7b2cd30>
    argNames:
    - self
    - event
    - subscriber
    - append
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1015
    functionName: distlib.util.EventMixin.add
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - sq.appendleft
    - sq.append
    - collections.deque
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: collections.deque
    functionSourceFile: collections
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sq.append
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sq.appendleft
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - event
    - subscriber
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1035
    functionName: distlib.util.EventMixin.remove
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - event
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1047
    functionName: distlib.util.EventMixin.get_subscribers
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - <builtin>.iter
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.iter
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 4
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - event
    - args
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1054
    functionName: distlib.util.EventMixin.publish
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - logger.exception
    - result.append
    - <builtin>.iter
    - distlib.util.EventMixin.get_subscribers
    - logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: result.append
    functionSourceFile: <builtin>
    functionUses: 89
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1082
    functionName: distlib.util.Sequencer.__init__
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - <builtin>.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - node
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1087
    functionName: distlib.util.Sequencer.add_node
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 3
    IfCount: 4
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7e2e580>
    argNames:
    - self
    - node
    - edges
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1090
    functionName: distlib.util.Sequencer.remove_node
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - succs.remove
    - <builtin>.list
    - preds.remove
    - <builtin>.set
    - distlib.util.Sequencer.remove
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - pred
    - succ
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1111
    functionName: distlib.util.Sequencer.remove
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - succs.remove
    - preds.remove
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - pred
    - succ
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1106
    functionName: distlib.util.Sequencer.add
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - <builtin>.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: preds.remove
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: succs.remove
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - step
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1124
    functionName: distlib.util.Sequencer.is_step
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 6
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - final
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1127
    functionName: distlib.util.Sequencer.get_steps
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - todo.extend
    - result.append
    - result.remove
    - todo.pop
    - <builtin>.set
    - todo.append
    - seen.add
    - distlib.util.Sequencer.is_step
    - <builtin>.reversed
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: todo.append
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: todo.pop
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: seen.add
    functionSourceFile: <builtin>
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: todo.extend
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.reversed
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1153
    functionName: distlib.util.Sequencer.strong_connections
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - distlib.util.Sequencer.strong_connections.strongconnect
    - stack.append
    - result.append
    - stack.pop
    - <builtin>.min
    - connected_component.append
    - <builtin>.tuple
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 4
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - node
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1163
    functionName: distlib.util.Sequencer.strong_connections.strongconnect
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - distlib.util.Sequencer.strong_connections.strongconnect
    - stack.append
    - result.append
    - stack.pop
    - <builtin>.min
    - connected_component.append
    - <builtin>.tuple
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: stack.append
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.min
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: stack.pop
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: connected_component.append
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.tuple
    functionSourceFile: <builtin>
    functionUses: 100
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1205
    functionName: distlib.util.Sequencer.dot
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - result.append
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 16
    ICount: 4
    IfCount: 11
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d69f6700>
    - <ast.Constant object at 0x7ff8d69f6730>
    argNames:
    - archive_filename
    - dest_dir
    - format
    - check
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1224
    functionName: distlib.util.unarchive
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - path.decode
    - os.path.join
    - archive_filename.endswith
    - zipfile.ZipFile.getmembers
    - p.startswith
    - zipfile.ZipFile
    - zipfile.ZipFile.namelist
    - <builtin>.isinstance
    - tarinfo.name.decode
    - os.path.abspath
    - tarfile.open
    - zipfile.ZipFile.getnames
    - zipfile.ZipFile.close
    - zipfile.ZipFile.extractall
    - distlib.util.unarchive.check_path
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - path
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1226
    functionName: distlib.util.unarchive.check_path
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - path.decode
    - os.path.join
    - p.startswith
    - <builtin>.isinstance
    - os.path.abspath
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: path.decode
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: p.startswith
    functionSourceFile: <builtin>
    functionUses: 76
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: archive_filename.endswith
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zipfile.ZipFile
    functionSourceFile: zipfile
    functionUses: 17
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zipfile.ZipFile.namelist
    functionSourceFile: zipfile
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: tarfile.open
    functionSourceFile: tarfile
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zipfile.ZipFile.getnames
    functionSourceFile: zipfile
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zipfile.ZipFile.getmembers
    functionSourceFile: zipfile
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: tarinfo.name.decode
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - member
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1275
    functionName: distlib.util.unarchive.extraction_filter
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - tarfile.tar_filter
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: tarfile.tar_filter
    functionSourceFile: tarfile
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zipfile.ZipFile.extractall
    functionSourceFile: zipfile
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zipfile.ZipFile.close
    functionSourceFile: zipfile
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - directory
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1292
    functionName: distlib.util.zip_dir
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - os.path.join
    - os.walk
    - zf.write
    - zipfile.ZipFile
    - io.BytesIO
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: io.BytesIO
    functionSourceFile: io
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.walk
    functionSourceFile: os
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zf.write
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d6a09610>
    - <ast.Constant object at 0x7ff8d6a09640>
    argNames:
    - self
    - minval
    - maxval
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1316
    functionName: distlib.util.Progress.__init__
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - curval
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1324
    functionName: distlib.util.Progress.update
    functionSourceFile: distlib.util
    functionUses: 3
    functionsReached:
    - time.time
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: time.time
    functionSourceFile: time
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - incr
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1334
    functionName: distlib.util.Progress.increment
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - time.time
    - distlib.util.Progress.update
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1338
    functionName: distlib.util.Progress.start
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - time.time
    - distlib.util.Progress.update
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1342
    functionName: distlib.util.Progress.stop
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - time.time
    - distlib.util.Progress.update
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1348
    functionName: distlib.util.Progress.maximum
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1352
    functionName: distlib.util.Progress.percentage
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - duration
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1362
    functionName: distlib.util.Progress.format_duration
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - time.strftime
    - time.gmtime
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: time.gmtime
    functionSourceFile: time
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: time.strftime
    functionSourceFile: time
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 0
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1372
    functionName: distlib.util.Progress.ETA
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - time.strftime
    - <builtin>.float
    - time.gmtime
    - distlib.util.Progress.format_duration
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.float
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1391
    functionName: distlib.util.Progress.speed
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _CHECK_RECURSIVE_GLOB.search
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _CHECK_MISMATCH_SET.search
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 3
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - path_glob
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1423
    functionName: distlib.util._iglob
    functionSourceFile: distlib.util
    functionUses: 2
    functionsReached:
    - os.path.join
    - os.walk
    - set.split
    - radical.lstrip
    - os.path.normpath
    - distlib.util._iglob
    - path_glob.split
    - glob.iglob
    - RICH_GLOB.split
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: RICH_GLOB.split
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: set.split
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: glob.iglob
    functionSourceFile: glob
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: path_glob.split
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: radical.lstrip
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 7
    IfCount: 6
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1463
    functionName: distlib.util.HTTPSConnection.connect
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - ssl.SSLContext
    - context.wrap_socket
    - ssl.match_hostname
    - context.load_verify_locations
    - context.load_cert_chain
    - <builtin>.getattr
    - logger.debug
    - httplib.HTTPSConnection._tunnel
    - socket.create_connection
    - <builtin>.hasattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: socket.create_connection
    functionSourceFile: socket
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: httplib.HTTPSConnection._tunnel
    functionSourceFile: httplib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ssl.SSLContext
    functionSourceFile: ssl
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: context.load_cert_chain
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: context.load_verify_locations
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: context.wrap_socket
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ssl.match_hostname
    functionSourceFile: ssl
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d749e6a0>
    argNames:
    - self
    - ca_certs
    - check_domain
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1493
    functionName: distlib.util.HTTPSHandler.__init__
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - urllib.request.HTTPSHandler.__init__
    - urllib2.HTTPSHandler.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.request.HTTPSHandler.__init__
    functionSourceFile: urllib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib2.HTTPSHandler.__init__
    functionSourceFile: urllib2
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - args
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1498
    functionName: distlib.util.HTTPSHandler._conn_maker
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - http.client.HTTPSConnection.__init__
    - httplib.HTTPSConnection.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: http.client.HTTPSConnection.__init__
    functionSourceFile: ''
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: httplib.HTTPSConnection.__init__
    functionSourceFile: ''
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - req
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1514
    functionName: distlib.util.HTTPSHandler.https_open
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - <builtin>.str
    - distlib.compat.HTTPSHandler.do_open
    linkageType: pythonLinkage
    raised:
    - CertificateError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.compat.HTTPSHandler.do_open
    functionSourceFile: distlib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - req
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1535
    functionName: distlib.util.HTTPSOnlyHandler.http_open
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - URLError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d749a400>
    argNames:
    - self
    - timeout
    - use_datetime
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1545
    functionName: distlib.util.Transport.__init__
    functionSourceFile: distlib.util
    functionUses: 4
    functionsReached:
    - xmlrpclib.Transport.__init__
    - xmlrpc.client.Transport.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: xmlrpclib.Transport.__init__
    functionSourceFile: xmlrpclib
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: xmlrpc.client.Transport.__init__
    functionSourceFile: xmlrpc
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - host
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1549
    functionName: distlib.util.Transport.make_connection
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - xmlrpc.client.Transport.get_host_info
    - http.client.HTTPConnection
    - httplib.HTTPConnection
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: xmlrpc.client.Transport.get_host_info
    functionSourceFile: xmlrpc
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: http.client.HTTPConnection
    functionSourceFile: http
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: httplib.HTTPConnection
    functionSourceFile: httplib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d6e08760>
    argNames:
    - self
    - timeout
    - use_datetime
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1561
    functionName: distlib.util.SafeTransport.__init__
    functionSourceFile: distlib.util
    functionUses: 4
    functionsReached:
    - xmlrpclib.SafeTransport.__init__
    - xmlrpc.client.SafeTransport.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: xmlrpclib.SafeTransport.__init__
    functionSourceFile: xmlrpclib
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: xmlrpc.client.SafeTransport.__init__
    functionSourceFile: xmlrpc
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - host
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1565
    functionName: distlib.util.SafeTransport.make_connection
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - xmlrpclib.SafeTransport.get_host_info
    - httplib.HTTPSConnection
    - http.client.HTTPSConnection
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: xmlrpclib.SafeTransport.get_host_info
    functionSourceFile: xmlrpclib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: httplib.HTTPSConnection
    functionSourceFile: httplib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: http.client.HTTPSConnection
    functionSourceFile: http
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - uri
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1578
    functionName: distlib.util.ServerProxy.__init__
    functionSourceFile: distlib.util
    functionUses: 3
    functionsReached:
    - urllib.parse.urlparse
    - distlib.util.Transport.__init__
    - xmlrpclib.SafeTransport.__init__
    - xmlrpclib.Transport.__init__
    - kwargs.pop
    - xmlrpc.client.ServerProxy.__init__
    - xmlrpc.client.SafeTransport.__init__
    - xmlrpc.client.Transport.__init__
    - xmlrpclib.ServerProxy.__init__
    - kwargs.get
    - urlparse.urlparse
    - distlib.util.SafeTransport.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: kwargs.pop
    functionSourceFile: <builtin>
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: kwargs.get
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: xmlrpc.client.ServerProxy.__init__
    functionSourceFile: xmlrpc
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: xmlrpclib.ServerProxy.__init__
    functionSourceFile: xmlrpclib
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - fn
    - mode
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1601
    functionName: distlib.util._csv_open
    functionSourceFile: distlib.util
    functionUses: 14
    functionsReached:
    - <builtin>.open
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.util.CSVBase
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - <builtin>.str
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1619
    functionName: distlib.util.CSVBase.__enter__
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - exc_info
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1622
    functionName: distlib.util.CSVBase.__exit__
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - kwargs
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1628
    functionName: distlib.util.CSVReader.__init__
    functionSourceFile: distlib.util
    functionUses: 7
    functionsReached:
    - <builtin>.open
    - codecs.getreader
    - distlib.util._csv_open
    - csv.reader
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: csv.reader
    functionSourceFile: csv
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1639
    functionName: distlib.util.CSVReader.__iter__
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1642
    functionName: distlib.util.CSVReader.next
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - <builtin>.enumerate
    - item.decode
    - <builtin>.isinstance
    - distlib.util.CSVReader.next
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: item.decode
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - fn
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1655
    functionName: distlib.util.CSVWriter.__init__
    functionSourceFile: distlib.util
    functionUses: 6
    functionsReached:
    - <builtin>.open
    - csv.writer
    - distlib.util._csv_open
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: csv.writer
    functionSourceFile: csv
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - row
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1659
    functionName: distlib.util.CSVWriter.writerow
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - r.append
    - <builtin>.isinstance
    - item.encode
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: item.encode
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: r.append
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.util.Configurator
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - <builtin>.dict
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d6defb50>
    argNames:
    - self
    - config
    - base
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1680
    functionName: distlib.util.Configurator.__init__
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - <builtin>.super
    - os.getcwd
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.super
    functionSourceFile: <builtin>
    functionUses: 23
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - config
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 1684
    functionName: distlib.util.Configurator.configure_custom
    functionSourceFile: distlib.util
    functionUses: 2
    functionsReached:
    - m.groupdict
    - logging.config.BaseConfigurator.importer
    - config.pop
    - sys.exc_info
    - <builtin>.callable
    - distlib.util.Configurator.configure_custom.convert
    - distlib.compat.BaseConfigurator.resolve
    - <builtin>.setattr
    - <builtin>.getattr
    - logging.config.valid_ident
    - s.split
    - distlib.compat.BaseConfigurator.convert
    - name.pop
    - logging.config.BaseConfigurator.CONVERT_PATTERN.match
    - props.items
    - <builtin>.ValueError
    - <builtin>.dict
    - <builtin>.isinstance
    - distlib.util.Configurator.configure_custom
    - <builtin>.type
    - logging.config.BaseConfigurator.value_converters.get
    - <builtin>.tuple
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 0
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - o
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 1686
    functionName: distlib.util.Configurator.configure_custom.convert
    functionSourceFile: distlib.util
    functionUses: 2
    functionsReached:
    - m.groupdict
    - logging.config.BaseConfigurator.importer
    - config.pop
    - sys.exc_info
    - <builtin>.callable
    - distlib.util.Configurator.configure_custom.convert
    - distlib.compat.BaseConfigurator.resolve
    - <builtin>.getattr
    - <builtin>.setattr
    - logging.config.valid_ident
    - s.split
    - distlib.compat.BaseConfigurator.convert
    - name.pop
    - logging.config.BaseConfigurator.CONVERT_PATTERN.match
    - props.items
    - <builtin>.ValueError
    - <builtin>.dict
    - <builtin>.isinstance
    - distlib.util.Configurator.configure_custom
    - <builtin>.type
    - logging.config.BaseConfigurator.value_converters.get
    - <builtin>.tuple
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.type
    functionSourceFile: <builtin>
    functionUses: 43
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 1
    IfCount: 6
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - value
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1090
    functionName: distlib.compat.BaseConfigurator.convert
    functionSourceFile: distlib.compat
    functionUses: 3
    functionsReached:
    - logging.config.BaseConfigurator.CONVERT_PATTERN.match
    - m.groupdict
    - <builtin>.getattr
    - <builtin>.isinstance
    - logging.config.BaseConfigurator.value_converters.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: config.pop
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.callable
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - s
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1028
    functionName: distlib.compat.BaseConfigurator.resolve
    functionSourceFile: distlib.compat
    functionUses: 3
    functionsReached:
    - name.pop
    - sys.exc_info
    - <builtin>.getattr
    - s.split
    - logging.config.BaseConfigurator.importer
    - <builtin>.ValueError
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logging.config.valid_ident
    functionSourceFile: logging
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: props.items
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.setattr
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 1716
    functionName: distlib.util.Configurator.__getitem__
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - m.groupdict
    - logging.config.BaseConfigurator.importer
    - config.pop
    - sys.exc_info
    - <builtin>.callable
    - distlib.util.Configurator.configure_custom.convert
    - distlib.compat.BaseConfigurator.resolve
    - <builtin>.setattr
    - <builtin>.getattr
    - logging.config.valid_ident
    - s.split
    - distlib.compat.BaseConfigurator.convert
    - name.pop
    - logging.config.BaseConfigurator.CONVERT_PATTERN.match
    - props.items
    - <builtin>.ValueError
    - <builtin>.dict
    - <builtin>.isinstance
    - distlib.util.Configurator.configure_custom
    - <builtin>.type
    - logging.config.BaseConfigurator.value_converters.get
    - <builtin>.tuple
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - value
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1722
    functionName: distlib.util.Configurator.inc_convert
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - os.path.join
    - codecs.open
    - os.path.isabs
    - json.load
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.isabs
    functionSourceFile: os
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d6de28b0>
    - <ast.Constant object at 0x7ff8d6de2880>
    argNames:
    - self
    - verbose
    - progress
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1736
    functionName: distlib.util.SubprocessMixin.__init__
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 6
    IfCount: 3
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - stream
    - context
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1740
    functionName: distlib.util.SubprocessMixin.reader
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - s.decode
    - stream.readline
    - sys.stderr.flush
    - stream.close
    - sys.stderr.write
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: stream.readline
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.stderr.write
    functionSourceFile: sys
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: s.decode
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.stderr.flush
    functionSourceFile: sys
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: stream.close
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    IfCount: 2
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - cmd
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1761
    functionName: distlib.util.SubprocessMixin.run_command
    functionSourceFile: distlib.util
    functionUses: 0
    functionsReached:
    - dummy_threading.Thread
    - threading.Thread
    - subprocess.Popen
    - t2.join
    - p.wait
    - t2.start
    - sys.stderr.write
    - t1.join
    - t1.start
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: subprocess.Popen
    functionSourceFile: subprocess
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dummy_threading.Thread
    functionSourceFile: dummy_threading
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: threading.Thread
    functionSourceFile: threading
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: t1.start
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: t2.start
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: p.wait
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: t1.join
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: t2.join
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - name
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1777
    functionName: distlib.util.normalize_name
    functionSourceFile: distlib.util
    functionUses: 6
    functionsReached:
    - re.sub
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: re.sub
    functionSourceFile: re
    functionUses: 14
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d6dd91c0>
    - <ast.Constant object at 0x7ff8d6dd9190>
    argNames:
    - self
    - fn
    - url
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1799
    functionName: distlib.util.PyPIRCFile.__init__
    functionSourceFile: distlib.util
    functionUses: 5
    functionsReached:
    - os.path.join
    - os.path.expanduser
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 1
    IfCount: 9
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1805
    functionName: distlib.util.PyPIRCFile.read
    functionSourceFile: distlib.util
    functionUses: 3
    functionsReached:
    - server.strip
    - os.path.exists
    - config.get
    - config.read
    - index_servers.split
    - config.sections
    - config.has_option
    - ConfigParser.RawConfigParser
    - configparser.RawConfigParser
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ConfigParser.RawConfigParser
    functionSourceFile: ConfigParser
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: configparser.RawConfigParser
    functionSourceFile: configparser
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: config.read
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: config.sections
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: config.get
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: server.strip
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: index_servers.split
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: config.has_option
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 5
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - username
    - password
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1858
    functionName: distlib.util.PyPIRCFile.update
    functionSourceFile: distlib.util
    functionUses: 2
    functionsReached:
    - config.has_section
    - config.add_section
    - config.set
    - config.read
    - config.write
    - <builtin>.open
    - ConfigParser.RawConfigParser
    - configparser.RawConfigParser
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: config.has_section
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: config.add_section
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: config.set
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: config.write
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - index
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1871
    functionName: distlib.util._load_pypirc
    functionSourceFile: distlib.util
    functionUses: 2
    functionsReached:
    - server.strip
    - os.path.join
    - os.path.exists
    - distlib.util.PyPIRCFile.read
    - config.get
    - config.read
    - index_servers.split
    - config.sections
    - config.has_option
    - ConfigParser.RawConfigParser
    - os.path.expanduser
    - distlib.util.PyPIRCFile.__init__
    - configparser.RawConfigParser
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - index
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1878
    functionName: distlib.util._store_pypirc
    functionSourceFile: distlib.util
    functionUses: 1
    functionsReached:
    - os.path.join
    - config.has_section
    - config.add_section
    - config.set
    - config.read
    - config.write
    - <builtin>.open
    - ConfigParser.RawConfigParser
    - os.path.expanduser
    - distlib.util.PyPIRCFile.update
    - configparser.RawConfigParser
    - distlib.util.PyPIRCFile.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 19
    ICount: 1
    IfCount: 13
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1888
    functionName: distlib.util.get_host_platform
    functionSourceFile: distlib.util
    functionUses: 8
    functionsReached:
    - <builtin>.int
    - machine.replace
    - m.group
    - distutils.sysconfig.get_config_vars
    - os.uname
    - re.compile
    - _aix_support.aix_platform
    - rel_re.match
    - sysconfig.get_config_vars
    - osname.lower
    - sys.version.lower
    - _osx_support.get_platform_osx
    - <builtin>.hasattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.version.lower
    functionSourceFile: sys
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.uname
    functionSourceFile: os
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: osname.lower
    functionSourceFile: <builtin>
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: machine.replace
    functionSourceFile: <builtin>
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.int
    functionSourceFile: <builtin>
    functionUses: 101
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _aix_support.aix_platform
    functionSourceFile: _aix_support
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: rel_re.match
    functionSourceFile: <builtin>
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sysconfig.get_config_vars
    functionSourceFile: sysconfig
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distutils.sysconfig.get_config_vars
    functionSourceFile: distutils
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _osx_support.get_platform_osx
    functionSourceFile: _osx_support
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1978
    functionName: distlib.util.get_platform
    functionSourceFile: distlib.util
    functionUses: 7
    functionsReached:
    - distlib.util.get_host_platform
    - <builtin>.int
    - machine.replace
    - m.group
    - distutils.sysconfig.get_config_vars
    - os.uname
    - re.compile
    - _aix_support.aix_platform
    - rel_re.match
    - sysconfig.get_config_vars
    - os.environ.get
    - osname.lower
    - sys.version.lower
    - _osx_support.get_platform_osx
    - <builtin>.hasattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.environ.get
    functionSourceFile: os
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.version
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - distlib.version.VersionScheme.__init__
    - re.compile
    - logging.getLogger
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: s.strip
    functionSourceFile: <builtin>
    functionUses: 76
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - s
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 274
    functionName: distlib.version.NormalizedVersion.parse
    functionSourceFile: distlib.version
    functionUses: 71
    functionsReached:
    - <builtin>.int
    - local.split
    - parts.append
    - m.groups
    - PEP440_VERSION_RE.match
    - part.isdigit
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - s.strip
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - s
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 37
    functionName: distlib.version.Version.parse
    functionSourceFile: ''
    functionUses: 71
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - NotImplementedError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - s
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 615
    functionName: distlib.version.LegacyVersion.parse
    functionSourceFile: distlib.version
    functionUses: 71
    functionsReached:
    - distlib.version._legacy_key.get_parts
    - distlib.version._legacy_key
    - result.pop
    - result.append
    - <builtin>.tuple
    - p.startswith
    - p.zfill
    - s.lower
    - _VERSION_PART.split
    - _VERSION_REPLACE.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - s
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 685
    functionName: distlib.version.SemanticVersion.parse
    functionSourceFile: distlib.version
    functionUses: 71
    functionsReached:
    - <builtin>.int
    - _SEMVER_RE.match
    - <builtin>.tuple
    - m.groups
    - distlib.version._semantic_key.make_tuple
    - p.zfill
    - p.isdigit
    - distlib.version._semantic_key
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 40
    functionName: distlib.version.Version._check_compatible
    functionSourceFile: distlib.version
    functionUses: 6
    functionsReached:
    - <builtin>.type
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 44
    functionName: distlib.version.Version.__eq__
    functionSourceFile: distlib.version
    functionUses: 4
    functionsReached:
    - distlib.version.Version._check_compatible
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 48
    functionName: distlib.version.Version.__ne__
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - distlib.version.Version._check_compatible
    - distlib.version.Version.__eq__
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 51
    functionName: distlib.version.Version.__lt__
    functionSourceFile: distlib.version
    functionUses: 3
    functionsReached:
    - distlib.version.Version._check_compatible
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 55
    functionName: distlib.version.Version.__gt__
    functionSourceFile: distlib.version
    functionUses: 1
    functionsReached:
    - distlib.version.Version._check_compatible
    - distlib.version.Version.__eq__
    - distlib.version.Version.__lt__
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 58
    functionName: distlib.version.Version.__le__
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - distlib.version.Version._check_compatible
    - distlib.version.Version.__eq__
    - distlib.version.Version.__lt__
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 61
    functionName: distlib.version.Version.__ge__
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - distlib.version.Version._check_compatible
    - distlib.version.Version.__eq__
    - distlib.version.Version.__lt__
    - <builtin>.type
    - distlib.version.Version.__gt__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 65
    functionName: distlib.version.Version.__hash__
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - <builtin>.hash
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.hash
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 68
    functionName: distlib.version.Version.__repr__
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 71
    functionName: distlib.version.Version.__str__
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 75
    functionName: distlib.version.Version.is_prerelease
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - NotImplementedError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.version.Matcher.<dict1>.<lambda1>
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.version.Matcher.<dict1>.<lambda2>
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.version.Matcher.<dict1>.<lambda3>
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.version.Matcher.<dict1>.<lambda4>
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.version.Matcher.<dict1>.<lambda5>
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.version.Matcher.<dict1>.<lambda6>
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.version.Matcher.<dict1>.<lambda7>
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.version.Matcher.<dict1>.<lambda8>
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - s
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 97
    functionName: distlib.version.Matcher.parse_requirement
    functionSourceFile: distlib.version
    functionUses: 46
    functionsReached:
    - distlib.version.Matcher.parse_requirement
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 2
    IfCount: 5
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - s
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 100
    functionName: distlib.version.Matcher.__init__
    functionSourceFile: distlib.version
    functionUses: 45
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - s.endswith
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - clist.append
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: s.endswith
    functionSourceFile: <builtin>
    functionUses: 46
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: clist.append
    functionSourceFile: <builtin>
    functionUses: 46
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - version
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 129
    functionName: distlib.version.Matcher.match
    functionSourceFile: distlib.version
    functionUses: 11
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - <builtin>.getattr
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - result.append
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised:
    - NotImplementedError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 151
    functionName: distlib.version.Matcher.exact_version
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 157
    functionName: distlib.version.Matcher._check_compatible
    functionSourceFile: distlib.version
    functionUses: 2
    functionsReached:
    - <builtin>.type
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 161
    functionName: distlib.version.Matcher.__eq__
    functionSourceFile: distlib.version
    functionUses: 1
    functionsReached:
    - distlib.version.Matcher._check_compatible
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 165
    functionName: distlib.version.Matcher.__ne__
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - distlib.version.Matcher._check_compatible
    - distlib.version.Matcher.__eq__
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 169
    functionName: distlib.version.Matcher.__hash__
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - <builtin>.hash
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 172
    functionName: distlib.version.Matcher.__repr__
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 175
    functionName: distlib.version.Matcher.__str__
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 14
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 21
    ICount: 1
    IfCount: 14
    argCount: 1
    argDefaultValues: []
    argNames:
    - s
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 184
    functionName: distlib.version._pep_440_key
    functionSourceFile: distlib.version
    functionUses: 74
    functionsReached:
    - <builtin>.int
    - local.split
    - parts.append
    - m.groups
    - PEP440_VERSION_RE.match
    - part.isdigit
    - <builtin>.tuple
    - s.strip
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - UnsupportedVersionError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: PEP440_VERSION_RE.match
    functionSourceFile: <builtin>
    functionUses: 75
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: local.split
    functionSourceFile: <builtin>
    functionUses: 75
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: part.isdigit
    functionSourceFile: <builtin>
    functionUses: 75
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.version.NormalizedVersion
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - <builtin>.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 288
    functionName: distlib.version.NormalizedVersion.is_prerelease
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.any
    functionSourceFile: <builtin>
    functionUses: 42
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - x
    - y
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 292
    functionName: distlib.version._match_prefix
    functionSourceFile: distlib.version
    functionUses: 6
    functionsReached:
    - <builtin>.str
    - <builtin>.len
    - x.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: x.startswith
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - version
    - constraint
    - prefix
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 318
    functionName: distlib.version.NormalizedMatcher._adjust_local
    functionSourceFile: distlib.version
    functionUses: 7
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - version._string.split
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - result.append
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: version._string.split
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - version
    - constraint
    - prefix
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 332
    functionName: distlib.version.NormalizedMatcher._match_lt
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.str
    - <builtin>.len
    - _VERSION_REPLACE.get
    - version._string.split
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - x.startswith
    - result.append
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - distlib.version.NormalizedMatcher._adjust_local
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._match_prefix
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - version
    - constraint
    - prefix
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 340
    functionName: distlib.version.NormalizedMatcher._match_gt
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.str
    - <builtin>.len
    - _VERSION_REPLACE.get
    - version._string.split
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - x.startswith
    - result.append
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - distlib.version.NormalizedMatcher._adjust_local
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._match_prefix
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - version
    - constraint
    - prefix
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 348
    functionName: distlib.version.NormalizedMatcher._match_le
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - version._string.split
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - result.append
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - distlib.version.NormalizedMatcher._adjust_local
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - version
    - constraint
    - prefix
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 352
    functionName: distlib.version.NormalizedMatcher._match_ge
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - version._string.split
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - result.append
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - distlib.version.NormalizedMatcher._adjust_local
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - version
    - constraint
    - prefix
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 356
    functionName: distlib.version.NormalizedMatcher._match_eq
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.str
    - <builtin>.len
    - _VERSION_REPLACE.get
    - version._string.split
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - x.startswith
    - result.append
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - distlib.version.NormalizedMatcher._adjust_local
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._match_prefix
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - version
    - constraint
    - prefix
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 364
    functionName: distlib.version.NormalizedMatcher._match_arbitrary
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - <builtin>.str
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - version
    - constraint
    - prefix
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 367
    functionName: distlib.version.NormalizedMatcher._match_ne
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.str
    - <builtin>.len
    - _VERSION_REPLACE.get
    - version._string.split
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - x.startswith
    - result.append
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - distlib.version.NormalizedMatcher._adjust_local
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._match_prefix
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 0
    IfCount: 3
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - version
    - constraint
    - prefix
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 375
    functionName: distlib.version.NormalizedMatcher._match_compatible
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.str
    - <builtin>.len
    - _VERSION_REPLACE.get
    - version._string.split
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - x.startswith
    - result.append
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - distlib.version.NormalizedMatcher._adjust_local
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._match_prefix
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 2
    IfCount: 6
    argCount: 1
    argDefaultValues: []
    argNames:
    - s
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 415
    functionName: distlib.version._suggest_semantic_version
    functionSourceFile: distlib.version
    functionUses: 1
    functionsReached:
    - _NUMERIC_PREFIX.match
    - <builtin>.int
    - suffix.strip
    - prefix.append
    - _SEMVER_RE.match
    - distlib.version.is_semver
    - m.groups
    - m.end
    - pat.sub
    - <builtin>.str
    - s.strip
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pat.sub
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _NUMERIC_PREFIX.match
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: prefix.append
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: suffix.strip
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - s
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 659
    functionName: distlib.version.is_semver
    functionSourceFile: distlib.version
    functionUses: 75
    functionsReached:
    - _SEMVER_RE.match
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - s
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 461
    functionName: distlib.version._suggest_normalized_version
    functionSourceFile: distlib.version
    functionUses: 1
    functionsReached:
    - <builtin>.int
    - rs.startswith
    - re.sub
    - parts.append
    - m.groups
    - PEP440_VERSION_RE.match
    - rs.replace
    - part.isdigit
    - s.strip
    - s.lower
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - local.split
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: s.lower
    functionSourceFile: <builtin>
    functionUses: 76
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: rs.replace
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: rs.startswith
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - s
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 588
    functionName: distlib.version._legacy_key
    functionSourceFile: distlib.version
    functionUses: 72
    functionsReached:
    - distlib.version._legacy_key.get_parts
    - result.pop
    - result.append
    - <builtin>.tuple
    - p.startswith
    - p.zfill
    - s.lower
    - _VERSION_PART.split
    - _VERSION_REPLACE.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - s
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 589
    functionName: distlib.version._legacy_key.get_parts
    functionSourceFile: distlib.version
    functionUses: 73
    functionsReached:
    - result.append
    - p.zfill
    - s.lower
    - _VERSION_PART.split
    - _VERSION_REPLACE.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _VERSION_PART.split
    functionSourceFile: <builtin>
    functionUses: 74
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _VERSION_REPLACE.get
    functionSourceFile: <builtin>
    functionUses: 74
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: p.zfill
    functionSourceFile: <builtin>
    functionUses: 77
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: result.pop
    functionSourceFile: <builtin>
    functionUses: 73
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 619
    functionName: distlib.version.LegacyVersion.is_prerelease
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - x.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.version.LegacyMatcher
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - re.compile
    - <builtin>.dict
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - version
    - constraint
    - prefix
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 636
    functionName: distlib.version.LegacyMatcher._match_compatible
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - logger.warning
    - x.startswith
    - s.rsplit
    - <builtin>.len
    - m.groups
    - <builtin>.str
    - distlib.version._match_prefix
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: s.rsplit
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _SEMVER_RE.match
    functionSourceFile: <builtin>
    functionUses: 76
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - s
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 663
    functionName: distlib.version._semantic_key
    functionSourceFile: distlib.version
    functionUses: 72
    functionsReached:
    - <builtin>.int
    - _SEMVER_RE.match
    - m.groups
    - distlib.version._semantic_key.make_tuple
    - p.zfill
    - p.isdigit
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised:
    - UnsupportedVersionError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - s
    - absent
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 664
    functionName: distlib.version._semantic_key.make_tuple
    functionSourceFile: distlib.version
    functionUses: 73
    functionsReached:
    - p.isdigit
    - <builtin>.tuple
    - p.zfill
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: p.isdigit
    functionSourceFile: <builtin>
    functionUses: 74
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 689
    functionName: distlib.version.SemanticVersion.is_prerelease
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7e79580>
    argNames:
    - self
    - key
    - matcher
    - suggester
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 698
    functionName: distlib.version.VersionScheme.__init__
    functionSourceFile: distlib.version
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - s
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 703
    functionName: distlib.version.VersionScheme.is_valid_version
    functionSourceFile: distlib.version
    functionUses: 33
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - result.append
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - s
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 711
    functionName: distlib.version.VersionScheme.is_valid_matcher
    functionSourceFile: distlib.version
    functionUses: 35
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version.Matcher.__init__
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - s.endswith
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - clist.append
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - s
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 719
    functionName: distlib.version.VersionScheme.is_valid_constraint_list
    functionSourceFile: distlib.version
    functionUses: 33
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version.Matcher.__init__
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - s.endswith
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - clist.append
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - distlib.version.VersionScheme.is_valid_matcher
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - s
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 728
    functionName: distlib.version.VersionScheme.suggest
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached:
    - suffix.strip
    - prefix.append
    - PEP440_VERSION_RE.match
    - rs.replace
    - pat.sub
    - <builtin>.str
    - <builtin>.len
    - rs.startswith
    - m.end
    - distlib.version._suggest_semantic_version
    - local.split
    - _NUMERIC_PREFIX.match
    - _SEMVER_RE.match
    - parts.append
    - s.lower
    - distlib.version._suggest_normalized_version
    - re.sub
    - s.strip
    - <builtin>.int
    - m.groups
    - part.isdigit
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.version.<dict2>.<lambda1>
    functionSourceFile: distlib.version
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - name
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 747
    functionName: distlib.version.get_scheme
    functionSourceFile: distlib.version
    functionUses: 42
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 0
    IfCount: 5
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.compat
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - sys.getfilesystemencoding
    - re.compile
    - HTMLParser.HTMLParser
    - html.parser.HTMLParser
    - <builtin>.hasattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - s
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 30
    functionName: distlib.compat.quote
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - urllib.quote
    - <builtin>.isinstance
    - types.SimpleNamespace.name.encode
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: types.SimpleNamespace.name.encode
    functionSourceFile: types
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.quote
    functionSourceFile: urllib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 5
    IfCount: 5
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7e46d00>
    argNames:
    - dn
    - hostname
    - max_wildcards
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 96
    functionName: distlib.compat._dnsname_match
    functionSourceFile: distlib.compat
    functionUses: 1
    functionsReached:
    - re.escape
    - dn.split
    - leftmost.startswith
    - leftmost.count
    - re.compile
    - hostname.startswith
    - pat.match
    - pats.append
    - hostname.lower
    - dn.lower
    linkageType: pythonLinkage
    raised:
    - CertificateError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dn.split
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: leftmost.count
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dn.lower
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: hostname.lower
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pats.append
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: leftmost.startswith
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: hostname.startswith
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pat.match
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 12
    ICount: 3
    IfCount: 8
    argCount: 2
    argDefaultValues: []
    argNames:
    - cert
    - hostname
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 145
    functionName: distlib.compat.match_hostname
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - re.escape
    - dn.split
    - leftmost.startswith
    - distlib.compat._dnsname_match
    - leftmost.count
    - re.compile
    - hostname.startswith
    - pat.match
    - pats.append
    - cert.get
    - dnsnames.append
    - hostname.lower
    - <builtin>.len
    - dn.lower
    linkageType: pythonLinkage
    raised:
    - CertificateError
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: cert.get
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dnsnames.append
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - kwargs
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 197
    functionName: distlib.compat.Container.__init__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - types.SimpleNamespace.__dict__.update
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: types.SimpleNamespace.__dict__.update
    functionSourceFile: types
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 3
    IfCount: 9
    argCount: 3
    argDefaultValues:
    - <ast.BinOp object at 0x7ff8d796b9d0>
    - <ast.Constant object at 0x7ff8d796b610>
    argNames:
    - cmd
    - mode
    - path
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 205
    functionName: distlib.compat.which
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - os.path.join
    - os.path.exists
    - os.path.dirname
    - path.insert
    - distlib.compat.which._access_check
    - <builtin>.set
    - os.path.normcase
    - os.path.isdir
    - path.split
    - os.environ.get
    - cmd.lower
    - ext.lower
    - seen.add
    - <builtin>.any
    - os.access
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - fn
    - mode
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 219
    functionName: distlib.compat.which._access_check
    functionSourceFile: distlib.compat
    functionUses: 1
    functionsReached:
    - os.path.isdir
    - os.path.exists
    - os.access
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: path.insert
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ext.lower
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: cmd.lower
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.normcase
    functionSourceFile: os
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - base
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 279
    functionName: distlib.compat.ZipExtFile.__init__
    functionSourceFile: distlib.compat
    functionUses: 1
    functionsReached:
    - zipfile.ZipExtFile.__dict__.update
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zipfile.ZipExtFile.__dict__.update
    functionSourceFile: zipfile
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 282
    functionName: distlib.compat.ZipExtFile.__enter__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - exc_info
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 285
    functionName: distlib.compat.ZipExtFile.__exit__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - zipfile.ZipExtFile.close
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zipfile.ZipExtFile.close
    functionSourceFile: zipfile
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 291
    functionName: distlib.compat.ZipFile.__enter__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - exc_info
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 294
    functionName: distlib.compat.ZipFile.__exit__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - zipfile.ZipFile.close
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - args
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 298
    functionName: distlib.compat.ZipFile.open
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - zipfile.ZipExtFile.__dict__.update
    - distlib.compat.ZipExtFile.__init__
    - zipfile.ZipFile.open
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zipfile.ZipFile.open
    functionSourceFile: zipfile
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 307
    functionName: distlib.compat.python_implementation
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - sys.version.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.version.startswith
    functionSourceFile: sys
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - obj
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 325
    functionName: distlib.compat.callable
    functionSourceFile: distlib.compat
    functionUses: 1
    functionsReached:
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.getfilesystemencoding
    functionSourceFile: sys
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - filename
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 345
    functionName: distlib.compat.fsencode
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - filename.encode
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: filename.encode
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - filename
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 354
    functionName: distlib.compat.fsdecode
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - sys.executable.decode
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.executable.decode
    functionSourceFile: sys
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - orig_enc
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 371
    functionName: distlib.compat._get_normal_name
    functionSourceFile: distlib.compat
    functionUses: 2
    functionsReached:
    - enc.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: enc.startswith
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 1
    IfCount: 5
    argCount: 1
    argDefaultValues: []
    argNames:
    - readline
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 382
    functionName: distlib.compat.detect_encoding
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - codecs.lookup
    - distlib.compat._get_normal_name
    - first.startswith
    - cookie_re.findall
    - distlib.compat.detect_encoding.find_cookie
    - enc.startswith
    - distlib.compat.detect_encoding.read_or_stop
    - line.decode
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 407
    functionName: distlib.compat.detect_encoding.read_or_stop
    functionSourceFile: distlib.compat
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 0
    IfCount: 6
    argCount: 1
    argDefaultValues: []
    argNames:
    - line
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 413
    functionName: distlib.compat.detect_encoding.find_cookie
    functionSourceFile: distlib.compat
    functionUses: 1
    functionsReached:
    - codecs.lookup
    - distlib.compat._get_normal_name
    - cookie_re.findall
    - enc.startswith
    - line.decode
    linkageType: pythonLinkage
    raised:
    - SyntaxError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: line.decode
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: cookie_re.findall
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: codecs.lookup
    functionSourceFile: codecs
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: first.startswith
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: HTMLParser.HTMLParser
    functionSourceFile: HTMLParser
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: html.parser.HTMLParser
    functionSourceFile: html
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7b6a160>
    argNames:
    - fillvalue
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 494
    functionName: distlib.compat._recursive_repr
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - user_function
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 500
    functionName: distlib.compat._recursive_repr.decorating_function
    functionSourceFile: distlib.compat
    functionUses: 1
    functionsReached:
    - <builtin>.set
    - <builtin>.getattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 503
    functionName: distlib.compat._recursive_repr.decorating_function.wrapper
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.id
    - repr_running.add
    - repr_running.discard
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.id
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: repr_running.add
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: repr_running.discard
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - maps
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 537
    functionName: distlib.compat.ChainMap.__init__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.list
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 544
    functionName: distlib.compat.ChainMap.__missing__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - KeyError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 547
    functionName: distlib.compat.ChainMap.__getitem__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - collections.ChainMap.__missing__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: collections.ChainMap.__missing__
    functionSourceFile: collections
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7b7c8e0>
    argNames:
    - self
    - key
    - default
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 557
    functionName: distlib.compat.ChainMap.get
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 560
    functionName: distlib.compat.ChainMap.__len__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.set
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 564
    functionName: distlib.compat.ChainMap.__iter__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.set
    - <builtin>.iter
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 567
    functionName: distlib.compat.ChainMap.__contains__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 570
    functionName: distlib.compat.ChainMap.__bool__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: reprlib.recursive_repr
    functionSourceFile: reprlib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: -1
    functionName: distlib.compat.ChainMap
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.set
    - distlib.compat._recursive_repr.decorating_function
    - reprlib.recursive_repr
    - <builtin>.getattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 574
    functionName: distlib.compat.ChainMap.__repr__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.map
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.map
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - cls
    - iterable
    - args
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 579
    functionName: distlib.compat.ChainMap.fromkeys
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - collections.ChainMap
    - dict.fromkeys
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dict.fromkeys
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: collections.ChainMap
    functionSourceFile: collections
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 583
    functionName: distlib.compat.ChainMap.copy
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - collections.ChainMap.__class__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: collections.ChainMap.__class__
    functionSourceFile: collections
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 589
    functionName: distlib.compat.ChainMap.new_child
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - collections.ChainMap.__class__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 594
    functionName: distlib.compat.ChainMap.parents
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - collections.ChainMap.__class__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - key
    - value
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 598
    functionName: distlib.compat.ChainMap.__setitem__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 601
    functionName: distlib.compat.ChainMap.__delitem__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - KeyError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 608
    functionName: distlib.compat.ChainMap.popitem
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - KeyError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - key
    - args
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 615
    functionName: distlib.compat.ChainMap.pop
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - KeyError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 623
    functionName: distlib.compat.ChainMap.clear
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7ec17f0>
    argNames:
    - path
    - debug_override
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 632
    functionName: distlib.compat.cache_from_source
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - path.endswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: path.endswith
    functionSourceFile: <builtin>
    functionUses: 20
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - args
    - kwds
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 672
    functionName: distlib.compat.OrderedDict.__init__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - collections.OrderedDict.__update
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: collections.OrderedDict.__update
    functionSourceFile: collections
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 4
    argDefaultValues:
    - <ast.Attribute object at 0x7ff8d872c0d0>
    argNames:
    - self
    - key
    - value
    - dict_setitem
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 689
    functionName: distlib.compat.OrderedDict.__setitem__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Attribute object at 0x7ff8d84cd940>
    argNames:
    - self
    - key
    - dict_delitem
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 699
    functionName: distlib.compat.OrderedDict.__delitem__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - collections.OrderedDict.__map.pop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: collections.OrderedDict.__map.pop
    functionSourceFile: collections
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 708
    functionName: distlib.compat.OrderedDict.__iter__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 716
    functionName: distlib.compat.OrderedDict.__reversed__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 724
    functionName: distlib.compat.OrderedDict.clear
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - dict.clear
    - collections.OrderedDict.__map.clear
    - collections.OrderedDict.__map.itervalues
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: collections.OrderedDict.__map.itervalues
    functionSourceFile: collections
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: collections.OrderedDict.__map.clear
    functionSourceFile: collections
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dict.clear
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7df2460>
    argNames:
    - self
    - last
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 736
    functionName: distlib.compat.OrderedDict.popitem
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - dict.pop
    linkageType: pythonLinkage
    raised:
    - KeyError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dict.pop
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 761
    functionName: distlib.compat.OrderedDict.keys
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.list
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 765
    functionName: distlib.compat.OrderedDict.values
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 769
    functionName: distlib.compat.OrderedDict.items
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 773
    functionName: distlib.compat.OrderedDict.iterkeys
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.iter
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 777
    functionName: distlib.compat.OrderedDict.itervalues
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 782
    functionName: distlib.compat.OrderedDict.iteritems
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 1
    IfCount: 5
    argCount: 2
    argDefaultValues: []
    argNames:
    - args
    - kwds
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 787
    functionName: distlib.compat.OrderedDict.update
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - other.keys
    - kwds.items
    - <builtin>.isinstance
    - <builtin>.len
    - <builtin>.hasattr
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: other.keys
    functionSourceFile: <builtin>
    functionUses: 29
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: kwds.items
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.object
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.compat.OrderedDict
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.object
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Name object at 0x7ff8d7d4dbb0>
    argNames:
    - self
    - key
    - default
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 822
    functionName: distlib.compat.OrderedDict.pop
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - KeyError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d85316a0>
    argNames:
    - self
    - key
    - default
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 835
    functionName: distlib.compat.OrderedDict.setdefault
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d8531d90>
    argNames:
    - self
    - _repr_running
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 842
    functionName: distlib.compat.OrderedDict.__repr__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.id
    - thread.get_ident
    - collections.OrderedDict.items
    - dummy_thread.get_ident
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: thread.get_ident
    functionSourceFile: thread
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dummy_thread.get_ident
    functionSourceFile: dummy_thread
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: collections.OrderedDict.items
    functionSourceFile: collections
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 857
    functionName: distlib.compat.OrderedDict.__reduce__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - collections.OrderedDict
    - inst_dict.pop
    - <builtin>.vars
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.vars
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: collections.OrderedDict
    functionSourceFile: collections
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: inst_dict.pop
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 867
    functionName: distlib.compat.OrderedDict.copy
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - collections.OrderedDict.__class__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: collections.OrderedDict.__class__
    functionSourceFile: collections
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d837ad60>
    argNames:
    - cls
    - iterable
    - value
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 872
    functionName: distlib.compat.OrderedDict.fromkeys
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - collections.OrderedDict
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 882
    functionName: distlib.compat.OrderedDict.__eq__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - dict.__eq__
    - other.items
    - <builtin>.isinstance
    - collections.OrderedDict.items
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: other.items
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dict.__eq__
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 892
    functionName: distlib.compat.OrderedDict.__ne__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 897
    functionName: distlib.compat.OrderedDict.viewkeys
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - _abcoll.KeysView
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _abcoll.KeysView
    functionSourceFile: _abcoll
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 901
    functionName: distlib.compat.OrderedDict.viewvalues
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - _abcoll.ValuesView
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _abcoll.ValuesView
    functionSourceFile: _abcoll
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 905
    functionName: distlib.compat.OrderedDict.viewitems
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - _abcoll.ItemsView
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _abcoll.ItemsView
    functionSourceFile: _abcoll
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - s
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 915
    functionName: distlib.compat.valid_ident
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - IDENTIFIER.match
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 933
    functionName: distlib.compat.ConvertingDict.__getitem__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - dict.__getitem__
    - logging.config.BaseConfigurator.convert
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dict.__getitem__
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logging.config.BaseConfigurator.convert
    functionSourceFile: logging
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d84d21f0>
    argNames:
    - self
    - key
    - default
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 945
    functionName: distlib.compat.ConvertingDict.get
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - logging.config.BaseConfigurator.convert
    - dict.get
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dict.get
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7e12940>
    argNames:
    - self
    - key
    - default
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 957
    functionName: distlib.compat.pop
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - dict.pop
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 970
    functionName: distlib.compat.ConvertingList.__getitem__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - logging.config.BaseConfigurator.convert
    - list.__getitem__
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: list.__getitem__
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues:
    - <ast.UnaryOp object at 0x7ff8d7be59d0>
    argNames:
    - self
    - idx
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 982
    functionName: distlib.compat.ConvertingList.pop
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - logging.config.BaseConfigurator.convert
    - list.pop
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: list.pop
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 994
    functionName: distlib.compat.ConvertingTuple.__getitem__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - tuple.__getitem__
    - logging.config.BaseConfigurator.convert
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: tuple.__getitem__
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.compat.BaseConfigurator
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - re.compile
    - <builtin>.staticmethod
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.staticmethod
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - config
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1024
    functionName: distlib.compat.BaseConfigurator.__init__
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: s.split
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: name.pop
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logging.config.BaseConfigurator.importer
    functionSourceFile: logging
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.exc_info
    functionSourceFile: sys
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.ValueError
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - value
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1051
    functionName: distlib.compat.BaseConfigurator.ext_convert
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - logging.config.BaseConfigurator.resolve
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logging.config.BaseConfigurator.resolve
    functionSourceFile: logging
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 1
    IfCount: 5
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - value
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1055
    functionName: distlib.compat.BaseConfigurator.cfg_convert
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.int
    - m.groups
    - logging.config.BaseConfigurator.DIGIT_PATTERN.match
    - m.end
    - logging.config.BaseConfigurator.WORD_PATTERN.match
    - logging.config.BaseConfigurator.INDEX_PATTERN.match
    - logging.config.BaseConfigurator.DOT_PATTERN.match
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logging.config.BaseConfigurator.WORD_PATTERN.match
    functionSourceFile: logging
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logging.config.BaseConfigurator.DOT_PATTERN.match
    functionSourceFile: logging
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logging.config.BaseConfigurator.INDEX_PATTERN.match
    functionSourceFile: logging
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logging.config.BaseConfigurator.DIGIT_PATTERN.match
    functionSourceFile: logging
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logging.config.BaseConfigurator.CONVERT_PATTERN.match
    functionSourceFile: logging
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logging.config.BaseConfigurator.value_converters.get
    functionSourceFile: logging
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - config
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1119
    functionName: distlib.compat.BaseConfigurator.configure_custom
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - logging.config.BaseConfigurator.resolve
    - <builtin>.setattr
    - distlib.compat.callable
    - <builtin>.isinstance
    - logging.config.valid_ident
    - props.items
    - config.pop
    - <builtin>.dict
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - value
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1133
    functionName: distlib.compat.BaseConfigurator.as_tuple
    functionSourceFile: distlib.compat
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - <builtin>.tuple
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib
    functionSourceFile: distlib
    functionUses: 0
    functionsReached:
    - logging.NullHandler
    - logging.getLogger
    - logger.addHandler
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - record
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 22
    functionName: distlib.NullHandler.handle
    functionSourceFile: distlib
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - record
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 25
    functionName: distlib.NullHandler.emit
    functionSourceFile: distlib
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 28
    functionName: distlib.NullHandler.createLock
    functionSourceFile: distlib
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logging.NullHandler
    functionSourceFile: logging
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logger.addHandler
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.database
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - logging.getLogger
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 46
    functionName: distlib.database._Cache.__init__
    functionSourceFile: distlib.database
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 54
    functionName: distlib.database._Cache.clear
    functionSourceFile: distlib.database
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - dist
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 62
    functionName: distlib.database._Cache.add
    functionSourceFile: distlib.database
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7cf61f0>
    - <ast.Constant object at 0x7ff8d7cf67f0>
    argNames:
    - self
    - path
    - include_egg
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 77
    functionName: distlib.database.DistributionPath.__init__
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.version.get_scheme
    - distlib.database._Cache.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 97
    functionName: distlib.database.DistributionPath._get_cache_enabled
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - value
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 100
    functionName: distlib.database.DistributionPath._set_cache_enabled
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.property
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.database.DistributionPath
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - <builtin>.property
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 105
    functionName: distlib.database.DistributionPath.clear_cache
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.database._Cache.clear
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 9
    IfCount: 6
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 12
    functionLinenumber: 112
    functionName: distlib.database.DistributionPath._yield_distributions
    functionSourceFile: distlib.database
    functionUses: 6
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - NON_SPACE.match
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - pattern.match
    - fp.close
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - tl_data.splitlines
    - contextlib.closing
    - m.end
    - VERSION_IDENTIFIER.match
    - p.isdigit
    - <builtin>.sorted
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - extras.append
    - StringIO.StringIO.read
    - io.StringIO
    - STRING_CHUNK.match
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - path.endswith
    - fp.read
    - s.strip
    - email.message_from_file.get_payload
    - name.replace
    - os.path.exists
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.metadata.LegacyMetadata.update
    - distlib.version._pep_440_key
    - seen.add
    - mapping.get
    - types.SimpleNamespace
    - distlib.version.is_semver
    - distlib.database.EggInfoDistribution._get_metadata
    - distlib.version.NormalizedVersion.parse
    - distlib.util.parse_marker.marker
    - v.strip
    - <builtin>.set
    - distlib.util.parse_requirement
    - res.append
    - p.zfill
    - zipimport.zipimporter
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.util.parse_marker
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - IDENTIFIER.match
    - versions.append
    - distlib.util.parse_requirement.get_versions
    - remaining.startswith
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - distlib.database.EggInfoDistribution.__init__
    - codecs.open
    - distlib.util.parse_marker.marker_var
    - warnings.append
    - OR.match
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - os.path.join
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - distlib.util.parse_marker.marker_expr
    - posixpath.join
    - _finder_registry.get
    - StringIO.StringIO
    - finder.find
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - run_requires.insert
    - urllib.parse.urlparse
    - distlib.metadata.LegacyMetadata.set
    - reqs.append
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - r.as_stream
    - distlib.resources.finder_for_path
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_path
    - <builtin>.super
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - data.splitlines
    - entry.endswith
    - pkgutil.get_importer
    - distlib.metadata.LegacyMetadata.__init__
    - zipf.get_data
    - distlib.database.InstalledDistribution.__init__
    - distlib.version.SemanticVersion.parse
    - distlib.database.EggInfoDistribution.__init__.set_name_and_version
    - <builtin>.int
    - pydist.as_stream
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - <builtin>.type
    - line.startswith
    - remaining.find
    - <builtin>.open
    - os.path.isdir
    - n.lower
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_data
    - distlib.metadata.Metadata.add_requirements
    - distlib.database._Cache.add
    - _VERSION_REPLACE.get
    - warnings.warn
    - distlib.metadata.LegacyMetadata.add_requirements
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - AND.match
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - MARKER_OP.match
    - req.strip
    - s.lower
    - clist.append
    - data.decode
    - line.strip
    - sys.path_importer_cache.get
    - distlib.metadata._best_version
    - distlib.version.Version.parse
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.metadata.Metadata.__init__
    - COMPARE_OP.match
    - distlib.util.parse_marker.marker_and
    - <builtin>.tuple
    - urlparse.urlparse
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - path
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 341
    functionName: distlib.resources.finder_for_path
    functionSourceFile: distlib.resources
    functionUses: 17
    functionsReached:
    - os.path.join
    - _finder_registry.get
    - sys.path_importer_cache.get
    - <builtin>.type
    - pkgutil.get_importer
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: finder.find
    functionSourceFile: <builtin>
    functionUses: 17
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: entry.endswith
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: posixpath.join
    functionSourceFile: posixpath
    functionUses: 15
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pydist.as_stream
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: contextlib.closing
    functionSourceFile: contextlib
    functionUses: 16
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 4
    IfCount: 6
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7c3a4c0>
    - <ast.Constant object at 0x7ff8d7c3a610>
    - <ast.Constant object at 0x7ff8d7c3a490>
    - <ast.Constant object at 0x7ff8d7c3a2b0>
    argNames:
    - self
    - path
    - fileobj
    - mapping
    - scheme
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 11
    functionLinenumber: 629
    functionName: distlib.metadata.Metadata.__init__
    functionSourceFile: distlib.metadata
    functionUses: 23
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.isEnabledFor
    - logger.debug
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - p.isdigit
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - StringIO.StringIO.read
    - io.StringIO
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - email.message_from_file.get_payload
    - s.strip
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.metadata.LegacyMetadata.update
    - distlib.version._pep_440_key
    - distlib.version.is_semver
    - mapping.get
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - res.append
    - p.zfill
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - mapping.items
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - StringIO.StringIO
    - <builtin>.tuple
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - distlib.metadata.LegacyMetadata.set
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - <builtin>.open
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - s.lower
    - clist.append
    - data.decode
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - _LINE_PREFIX_1_2.sub
    - <builtin>.any
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 12
    ICount: 2
    IfCount: 8
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d8728280>
    - <ast.Constant object at 0x7ff8d8273b50>
    argNames:
    - self
    - path
    - metadata
    - env
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 12
    functionLinenumber: 533
    functionName: distlib.database.InstalledDistribution.__init__
    functionSourceFile: distlib.database
    functionUses: 8
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.isEnabledFor
    - logger.debug
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - contextlib.closing
    - p.isdigit
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - StringIO.StringIO.read
    - io.StringIO
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - s.strip
    - email.message_from_file.get_payload
    - name.replace
    - os.path.exists
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.version._pep_440_key
    - distlib.metadata.LegacyMetadata.update
    - distlib.version.is_semver
    - mapping.get
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - res.append
    - p.zfill
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - os.path.join
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - _finder_registry.get
    - StringIO.StringIO
    - finder.find
    - PEP440_VERSION_RE.match
    - <builtin>.tuple
    - distlib.metadata._best_version._has_marker
    - distlib.metadata.LegacyMetadata.set
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - r.as_stream
    - distlib.resources.finder_for_path
    - <builtin>.super
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - data.splitlines
    - pkgutil.get_importer
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - <builtin>.type
    - <builtin>.open
    - distlib.database._Cache.add
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - s.lower
    - clist.append
    - data.decode
    - sys.path_importer_cache.get
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - _LINE_PREFIX_1_2.sub
    - <builtin>.any
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7e88130>
    argNames:
    - self
    - path
    - env
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 13
    functionLinenumber: 855
    functionName: distlib.database.EggInfoDistribution.__init__
    functionSourceFile: distlib.database
    functionUses: 7
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - NON_SPACE.match
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - pattern.match
    - fp.close
    - logger.isEnabledFor
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - tl_data.splitlines
    - m.end
    - VERSION_IDENTIFIER.match
    - p.isdigit
    - <builtin>.sorted
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - StringIO.StringIO.read
    - extras.append
    - io.StringIO
    - STRING_CHUNK.match
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - path.endswith
    - s.strip
    - email.message_from_file.get_payload
    - fp.read
    - name.replace
    - os.path.exists
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.metadata.LegacyMetadata.update
    - distlib.version._pep_440_key
    - distlib.version.is_semver
    - mapping.get
    - types.SimpleNamespace
    - distlib.database.EggInfoDistribution._get_metadata
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - distlib.util.parse_marker.marker
    - <builtin>.set
    - distlib.util.parse_requirement
    - res.append
    - p.zfill
    - zipimport.zipimporter
    - distlib.metadata.Metadata._validate_mapping
    - f.read
    - <builtin>.len
    - distlib.util.parse_marker
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - IDENTIFIER.match
    - versions.append
    - distlib.util.parse_requirement.get_versions
    - remaining.startswith
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - codecs.open
    - distlib.util.parse_marker.marker_var
    - warnings.append
    - OR.match
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - os.path.join
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - distlib.util.parse_marker.marker_expr
    - StringIO.StringIO
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - run_requires.insert
    - urllib.parse.urlparse
    - distlib.metadata.LegacyMetadata.set
    - reqs.append
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_path
    - <builtin>.super
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - data.splitlines
    - distlib.metadata.LegacyMetadata.__init__
    - zipf.get_data
    - distlib.version.SemanticVersion.parse
    - distlib.database.EggInfoDistribution.__init__.set_name_and_version
    - <builtin>.int
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - line.startswith
    - remaining.find
    - <builtin>.open
    - os.path.isdir
    - n.lower
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_data
    - distlib.metadata.Metadata.add_requirements
    - distlib.database._Cache.add
    - _VERSION_REPLACE.get
    - distlib.metadata.LegacyMetadata.add_requirements
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - AND.match
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - MARKER_OP.match
    - req.strip
    - s.lower
    - clist.append
    - data.decode
    - line.strip
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.metadata._best_version
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - COMPARE_OP.match
    - distlib.util.parse_marker.marker_and
    - <builtin>.tuple
    - urlparse.urlparse
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: warnings.warn
    functionSourceFile: warnings
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 3
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 13
    functionLinenumber: 158
    functionName: distlib.database.DistributionPath._generate_cache
    functionSourceFile: distlib.database
    functionUses: 5
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - NON_SPACE.match
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - pattern.match
    - fp.close
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - tl_data.splitlines
    - contextlib.closing
    - m.end
    - VERSION_IDENTIFIER.match
    - p.isdigit
    - <builtin>.sorted
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - extras.append
    - StringIO.StringIO.read
    - io.StringIO
    - STRING_CHUNK.match
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - path.endswith
    - s.strip
    - email.message_from_file.get_payload
    - fp.read
    - name.replace
    - os.path.exists
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.metadata.LegacyMetadata.update
    - distlib.version._pep_440_key
    - seen.add
    - mapping.get
    - types.SimpleNamespace
    - distlib.version.is_semver
    - distlib.database.EggInfoDistribution._get_metadata
    - distlib.version.NormalizedVersion.parse
    - distlib.util.parse_marker.marker
    - v.strip
    - <builtin>.set
    - distlib.util.parse_requirement
    - res.append
    - p.zfill
    - zipimport.zipimporter
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.util.parse_marker
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - IDENTIFIER.match
    - versions.append
    - distlib.util.parse_requirement.get_versions
    - remaining.startswith
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - distlib.database.EggInfoDistribution.__init__
    - codecs.open
    - distlib.util.parse_marker.marker_var
    - warnings.append
    - OR.match
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - os.path.join
    - kwargs.items
    - m.groups
    - distlib.database.DistributionPath._yield_distributions
    - part.isdigit
    - <builtin>.isinstance
    - distlib.util.parse_marker.marker_expr
    - posixpath.join
    - _finder_registry.get
    - StringIO.StringIO
    - finder.find
    - PEP440_VERSION_RE.match
    - <builtin>.tuple
    - distlib.metadata._best_version._has_marker
    - run_requires.insert
    - urllib.parse.urlparse
    - distlib.metadata.LegacyMetadata.set
    - reqs.append
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - r.as_stream
    - distlib.resources.finder_for_path
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_path
    - <builtin>.super
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - data.splitlines
    - entry.endswith
    - pkgutil.get_importer
    - distlib.metadata.LegacyMetadata.__init__
    - zipf.get_data
    - distlib.database.InstalledDistribution.__init__
    - distlib.version.SemanticVersion.parse
    - distlib.database.EggInfoDistribution.__init__.set_name_and_version
    - <builtin>.int
    - pydist.as_stream
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - <builtin>.type
    - line.startswith
    - remaining.find
    - <builtin>.open
    - os.path.isdir
    - n.lower
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_data
    - distlib.metadata.Metadata.add_requirements
    - distlib.database._Cache.add
    - _VERSION_REPLACE.get
    - warnings.warn
    - distlib.metadata.LegacyMetadata.add_requirements
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - AND.match
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - MARKER_OP.match
    - req.strip
    - s.lower
    - clist.append
    - data.decode
    - line.strip
    - sys.path_importer_cache.get
    - distlib.metadata._best_version
    - distlib.version.Version.parse
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.metadata.Metadata.__init__
    - COMPARE_OP.match
    - distlib.util.parse_marker.marker_and
    - _LINE_PREFIX_1_2.sub
    - urlparse.urlparse
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - cls
    - name
    - version
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 178
    functionName: distlib.database.DistributionPath.distinfo_dirname
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - name.replace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: name.replace
    functionSourceFile: <builtin>
    functionUses: 46
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 13
    functionLinenumber: 199
    functionName: distlib.database.DistributionPath.get_distributions
    functionSourceFile: distlib.database
    functionUses: 2
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - NON_SPACE.match
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - tl_data.splitlines
    - contextlib.closing
    - m.end
    - VERSION_IDENTIFIER.match
    - p.isdigit
    - <builtin>.sorted
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - extras.append
    - StringIO.StringIO.read
    - io.StringIO
    - STRING_CHUNK.match
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - path.endswith
    - s.strip
    - email.message_from_file.get_payload
    - fp.read
    - name.replace
    - os.path.exists
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.metadata.LegacyMetadata.update
    - distlib.version._pep_440_key
    - distlib.version.is_semver
    - mapping.get
    - types.SimpleNamespace
    - seen.add
    - distlib.database.EggInfoDistribution._get_metadata
    - distlib.version.NormalizedVersion.parse
    - distlib.util.parse_marker.marker
    - v.strip
    - <builtin>.set
    - distlib.util.parse_requirement
    - res.append
    - p.zfill
    - f.read
    - zipimport.zipimporter
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.util.parse_marker
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - IDENTIFIER.match
    - versions.append
    - distlib.util.parse_requirement.get_versions
    - remaining.startswith
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - distlib.database.EggInfoDistribution.__init__
    - codecs.open
    - distlib.util.parse_marker.marker_var
    - warnings.append
    - OR.match
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - os.path.join
    - kwargs.items
    - m.groups
    - distlib.database.DistributionPath._yield_distributions
    - part.isdigit
    - <builtin>.isinstance
    - distlib.util.parse_marker.marker_expr
    - posixpath.join
    - _finder_registry.get
    - StringIO.StringIO
    - finder.find
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - distlib.database.DistributionPath._generate_cache
    - run_requires.insert
    - urllib.parse.urlparse
    - distlib.metadata.LegacyMetadata.set
    - reqs.append
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - r.as_stream
    - distlib.resources.finder_for_path
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_path
    - <builtin>.super
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - data.splitlines
    - entry.endswith
    - pkgutil.get_importer
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.database.InstalledDistribution.__init__
    - zipf.get_data
    - distlib.version.SemanticVersion.parse
    - distlib.database.EggInfoDistribution.__init__.set_name_and_version
    - <builtin>.int
    - pydist.as_stream
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - <builtin>.type
    - line.startswith
    - remaining.find
    - <builtin>.open
    - os.path.isdir
    - n.lower
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_data
    - distlib.metadata.Metadata.add_requirements
    - distlib.database._Cache.add
    - _VERSION_REPLACE.get
    - warnings.warn
    - distlib.metadata.LegacyMetadata.add_requirements
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - AND.match
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - MARKER_OP.match
    - req.strip
    - s.lower
    - clist.append
    - data.decode
    - line.strip
    - sys.path_importer_cache.get
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - COMPARE_OP.match
    - distlib.util.parse_marker.marker_and
    - <builtin>.tuple
    - urlparse.urlparse
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 2
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 13
    functionLinenumber: 221
    functionName: distlib.database.DistributionPath.get_distribution
    functionSourceFile: distlib.database
    functionUses: 1
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - NON_SPACE.match
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - tl_data.splitlines
    - contextlib.closing
    - m.end
    - VERSION_IDENTIFIER.match
    - p.isdigit
    - <builtin>.sorted
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - extras.append
    - StringIO.StringIO.read
    - io.StringIO
    - STRING_CHUNK.match
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - path.endswith
    - s.strip
    - email.message_from_file.get_payload
    - fp.read
    - name.replace
    - os.path.exists
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.metadata.LegacyMetadata.update
    - distlib.version._pep_440_key
    - distlib.version.is_semver
    - mapping.get
    - types.SimpleNamespace
    - seen.add
    - distlib.database.EggInfoDistribution._get_metadata
    - distlib.version.NormalizedVersion.parse
    - distlib.util.parse_marker.marker
    - v.strip
    - <builtin>.set
    - distlib.util.parse_requirement
    - res.append
    - p.zfill
    - f.read
    - zipimport.zipimporter
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.util.parse_marker
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - IDENTIFIER.match
    - versions.append
    - distlib.util.parse_requirement.get_versions
    - remaining.startswith
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - distlib.database.EggInfoDistribution.__init__
    - codecs.open
    - distlib.util.parse_marker.marker_var
    - warnings.append
    - OR.match
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - os.path.join
    - kwargs.items
    - m.groups
    - distlib.database.DistributionPath._yield_distributions
    - part.isdigit
    - <builtin>.isinstance
    - distlib.util.parse_marker.marker_expr
    - posixpath.join
    - _finder_registry.get
    - StringIO.StringIO
    - finder.find
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - distlib.database.DistributionPath._generate_cache
    - run_requires.insert
    - urllib.parse.urlparse
    - distlib.metadata.LegacyMetadata.set
    - reqs.append
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - r.as_stream
    - distlib.resources.finder_for_path
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_path
    - <builtin>.super
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - data.splitlines
    - entry.endswith
    - pkgutil.get_importer
    - name.lower
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.database.InstalledDistribution.__init__
    - zipf.get_data
    - distlib.version.SemanticVersion.parse
    - distlib.database.EggInfoDistribution.__init__.set_name_and_version
    - <builtin>.int
    - pydist.as_stream
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - <builtin>.type
    - line.startswith
    - remaining.find
    - <builtin>.open
    - os.path.isdir
    - n.lower
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_data
    - distlib.metadata.Metadata.add_requirements
    - distlib.database._Cache.add
    - _VERSION_REPLACE.get
    - warnings.warn
    - distlib.metadata.LegacyMetadata.add_requirements
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - AND.match
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - MARKER_OP.match
    - req.strip
    - s.lower
    - clist.append
    - data.decode
    - line.strip
    - sys.path_importer_cache.get
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - COMPARE_OP.match
    - distlib.util.parse_marker.marker_and
    - <builtin>.tuple
    - urlparse.urlparse
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: name.lower
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 4
    IfCount: 5
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7d8ad30>
    argNames:
    - self
    - name
    - version
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 13
    functionLinenumber: 247
    functionName: distlib.database.DistributionPath.provides_distribution
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - NON_SPACE.match
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - pattern.match
    - fp.close
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - tl_data.splitlines
    - contextlib.closing
    - m.end
    - VERSION_IDENTIFIER.match
    - p.isdigit
    - <builtin>.sorted
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - extras.append
    - StringIO.StringIO.read
    - io.StringIO
    - STRING_CHUNK.match
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - s.strip
    - path.endswith
    - fp.read
    - email.message_from_file.get_payload
    - name.replace
    - os.path.exists
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.version.Matcher.match
    - distlib.metadata.LegacyMetadata.update
    - distlib.version._pep_440_key
    - distlib.version.is_semver
    - mapping.get
    - types.SimpleNamespace
    - seen.add
    - distlib.database.EggInfoDistribution._get_metadata
    - distlib.version.NormalizedVersion.parse
    - distlib.util.parse_marker.marker
    - v.strip
    - <builtin>.set
    - distlib.util.parse_requirement
    - res.append
    - p.zfill
    - NAME_VERSION_RE.match
    - f.read
    - zipimport.zipimporter
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.util.parse_marker
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - _VERSION_PART.split
    - versions.append
    - distlib.version._semantic_key
    - IDENTIFIER.match
    - mapping.items
    - distlib.util.parse_requirement.get_versions
    - distlib.version.Matcher.parse_requirement
    - remaining.startswith
    - distlib.metadata.Metadata._validate_value
    - distlib.database.EggInfoDistribution.__init__
    - codecs.open
    - distlib.util.parse_marker.marker_var
    - OR.match
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - os.path.join
    - kwargs.items
    - m.groups
    - distlib.database.DistributionPath._yield_distributions
    - part.isdigit
    - <builtin>.isinstance
    - distlib.util.parse_marker.marker_expr
    - posixpath.join
    - _finder_registry.get
    - StringIO.StringIO
    - finder.find
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - distlib.database.DistributionPath._generate_cache
    - run_requires.insert
    - urllib.parse.urlparse
    - distlib.metadata.LegacyMetadata.set
    - reqs.append
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - <builtin>.getattr
    - possible_versions.remove
    - local.split
    - r.as_stream
    - distlib.resources.finder_for_path
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_path
    - <builtin>.super
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - data.splitlines
    - entry.endswith
    - pkgutil.get_importer
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.database.InstalledDistribution.__init__
    - zipf.get_data
    - distlib.version.SemanticVersion.parse
    - distlib.database.EggInfoDistribution.__init__.set_name_and_version
    - <builtin>.int
    - pydist.as_stream
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - <builtin>.type
    - line.startswith
    - remaining.find
    - m.groupdict
    - <builtin>.open
    - os.path.isdir
    - n.lower
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_data
    - distlib.metadata.Metadata.add_requirements
    - distlib.database._Cache.add
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - warnings.warn
    - distlib.metadata.LegacyMetadata.add_requirements
    - distlib.version.get_scheme
    - distlib.database.DistributionPath.get_distributions
    - value.split
    - AND.match
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - MARKER_OP.match
    - s.lower
    - req.strip
    - distlib.util.parse_name_and_version
    - clist.append
    - data.decode
    - line.strip
    - sys.path_importer_cache.get
    - distlib.metadata._best_version
    - distlib.version.Version.parse
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.metadata.Metadata.__init__
    - COMPARE_OP.match
    - distlib.util.parse_marker.marker_and
    - <builtin>.tuple
    - urlparse.urlparse
    - <builtin>.any
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - name
    - relative_path
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 14
    functionLinenumber: 287
    functionName: distlib.database.DistributionPath.get_file_path
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - NON_SPACE.match
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - tl_data.splitlines
    - contextlib.closing
    - m.end
    - VERSION_IDENTIFIER.match
    - p.isdigit
    - <builtin>.sorted
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - dist.get_resource_path
    - extras.append
    - StringIO.StringIO.read
    - io.StringIO
    - STRING_CHUNK.match
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - path.endswith
    - s.strip
    - email.message_from_file.get_payload
    - fp.read
    - name.replace
    - os.path.exists
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.metadata.LegacyMetadata.update
    - distlib.version._pep_440_key
    - distlib.version.is_semver
    - mapping.get
    - types.SimpleNamespace
    - seen.add
    - distlib.database.EggInfoDistribution._get_metadata
    - distlib.version.NormalizedVersion.parse
    - distlib.util.parse_marker.marker
    - v.strip
    - <builtin>.set
    - distlib.util.parse_requirement
    - res.append
    - p.zfill
    - f.read
    - zipimport.zipimporter
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.util.parse_marker
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - IDENTIFIER.match
    - versions.append
    - distlib.database.DistributionPath.get_distribution
    - distlib.util.parse_requirement.get_versions
    - remaining.startswith
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - distlib.database.EggInfoDistribution.__init__
    - codecs.open
    - distlib.util.parse_marker.marker_var
    - warnings.append
    - OR.match
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - os.path.join
    - kwargs.items
    - m.groups
    - distlib.database.DistributionPath._yield_distributions
    - part.isdigit
    - <builtin>.isinstance
    - distlib.util.parse_marker.marker_expr
    - posixpath.join
    - _finder_registry.get
    - StringIO.StringIO
    - finder.find
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - distlib.database.DistributionPath._generate_cache
    - run_requires.insert
    - urllib.parse.urlparse
    - distlib.metadata.LegacyMetadata.set
    - reqs.append
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - r.as_stream
    - distlib.resources.finder_for_path
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_path
    - <builtin>.super
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - data.splitlines
    - entry.endswith
    - pkgutil.get_importer
    - name.lower
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.database.InstalledDistribution.__init__
    - zipf.get_data
    - distlib.version.SemanticVersion.parse
    - distlib.database.EggInfoDistribution.__init__.set_name_and_version
    - <builtin>.int
    - pydist.as_stream
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - <builtin>.type
    - line.startswith
    - remaining.find
    - <builtin>.open
    - os.path.isdir
    - n.lower
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_data
    - distlib.metadata.Metadata.add_requirements
    - distlib.database._Cache.add
    - _VERSION_REPLACE.get
    - warnings.warn
    - distlib.metadata.LegacyMetadata.add_requirements
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - AND.match
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - MARKER_OP.match
    - req.strip
    - s.lower
    - clist.append
    - data.decode
    - line.strip
    - sys.path_importer_cache.get
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - COMPARE_OP.match
    - distlib.util.parse_marker.marker_and
    - <builtin>.tuple
    - urlparse.urlparse
    - <builtin>.any
    linkageType: pythonLinkage
    raised:
    - LookupError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dist.get_resource_path
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 3
    IfCount: 3
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d8306df0>
    argNames:
    - self
    - category
    - name
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 14
    functionLinenumber: 296
    functionName: distlib.database.DistributionPath.get_exported_entries
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - NON_SPACE.match
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - tl_data.splitlines
    - contextlib.closing
    - m.end
    - VERSION_IDENTIFIER.match
    - p.isdigit
    - <builtin>.sorted
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - extras.append
    - StringIO.StringIO.read
    - io.StringIO
    - STRING_CHUNK.match
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - path.endswith
    - s.strip
    - email.message_from_file.get_payload
    - fp.read
    - name.replace
    - os.path.exists
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.metadata.LegacyMetadata.update
    - distlib.version._pep_440_key
    - distlib.version.is_semver
    - mapping.get
    - types.SimpleNamespace
    - seen.add
    - distlib.database.EggInfoDistribution._get_metadata
    - distlib.version.NormalizedVersion.parse
    - distlib.util.parse_marker.marker
    - v.strip
    - <builtin>.set
    - distlib.util.parse_requirement
    - res.append
    - p.zfill
    - f.read
    - zipimport.zipimporter
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.util.parse_marker
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - IDENTIFIER.match
    - versions.append
    - distlib.util.parse_requirement.get_versions
    - remaining.startswith
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - distlib.database.EggInfoDistribution.__init__
    - codecs.open
    - distlib.util.parse_marker.marker_var
    - warnings.append
    - OR.match
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - os.path.join
    - kwargs.items
    - m.groups
    - distlib.database.DistributionPath._yield_distributions
    - part.isdigit
    - <builtin>.isinstance
    - distlib.util.parse_marker.marker_expr
    - posixpath.join
    - _finder_registry.get
    - StringIO.StringIO
    - finder.find
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - distlib.database.DistributionPath._generate_cache
    - run_requires.insert
    - urllib.parse.urlparse
    - distlib.metadata.LegacyMetadata.set
    - reqs.append
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - r.as_stream
    - distlib.resources.finder_for_path
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_path
    - <builtin>.super
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - data.splitlines
    - entry.endswith
    - pkgutil.get_importer
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.database.InstalledDistribution.__init__
    - zipf.get_data
    - distlib.version.SemanticVersion.parse
    - distlib.database.EggInfoDistribution.__init__.set_name_and_version
    - <builtin>.int
    - pydist.as_stream
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - <builtin>.type
    - line.startswith
    - remaining.find
    - <builtin>.open
    - os.path.isdir
    - n.lower
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_data
    - distlib.metadata.Metadata.add_requirements
    - distlib.database._Cache.add
    - _VERSION_REPLACE.get
    - d.values
    - warnings.warn
    - distlib.metadata.LegacyMetadata.add_requirements
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - distlib.database.DistributionPath.get_distributions
    - value.split
    - AND.match
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - MARKER_OP.match
    - req.strip
    - s.lower
    - clist.append
    - data.decode
    - line.strip
    - sys.path_importer_cache.get
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - COMPARE_OP.match
    - distlib.util.parse_marker.marker_and
    - <builtin>.tuple
    - urlparse.urlparse
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: d.values
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - metadata
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 333
    functionName: distlib.database.Distribution.__init__
    functionSourceFile: distlib.database
    functionUses: 8
    functionsReached:
    - <builtin>.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 351
    functionName: distlib.database.Distribution.source_url
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 360
    functionName: distlib.database.Distribution.name_and_version
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 367
    functionName: distlib.database.Distribution.provides
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - req_attr
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 9
    functionLinenumber: 378
    functionName: distlib.database.Distribution._get_requirements
    functionSourceFile: distlib.database
    functionUses: 5
    functionsReached:
    - distlib.version.Version.__init__
    - distlib.markers._get_versions
    - result.pop
    - d.get
    - result.extend
    - distlib.version.NormalizedVersion.parse
    - result.add
    - distlib.markers.interpret_parsed
    - distlib.metadata.Metadata.get_requirements
    - PEP440_VERSION_RE.match
    - distlib.util.parse_marker.marker
    - <builtin>.set
    - distlib.markers._is_version_marker
    - logger.debug
    - p.zfill
    - distlib.markers._is_literal
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.util.get_extras
    - logger.warning
    - distlib.version._legacy_key
    - distlib.util.parse_marker
    - _VERSION_PATTERN.finditer
    - <builtin>.getattr
    - m.end
    - distlib.version._semantic_key.make_tuple
    - AND.match
    - context.update
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - IDENTIFIER.match
    - _SEMVER_RE.match
    - result.append
    - requested.remove
    - distlib.markers.Evaluator.evaluate
    - result.remove
    - parts.append
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - OR.match
    - s.lower
    - s.strip
    - <builtin>.dict
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.markers.interpret
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - extras.remove
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.util.parse_marker.marker_expr
    - distlib.util.parse_marker.marker_and
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    - r.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 4
    IfCount: 7
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7ec1040>
    - <ast.Constant object at 0x7ff8d7ec1eb0>
    argNames:
    - self
    - reqts
    - extras
    - env
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 8
    functionLinenumber: 806
    functionName: distlib.metadata.Metadata.get_requirements
    functionSourceFile: distlib.metadata
    functionUses: 6
    functionsReached:
    - distlib.version.Version.__init__
    - distlib.markers._get_versions
    - result.pop
    - result.extend
    - d.get
    - distlib.version.NormalizedVersion.parse
    - distlib.markers.interpret_parsed
    - result.add
    - distlib.metadata.Metadata.get_requirements
    - PEP440_VERSION_RE.match
    - distlib.util.parse_marker.marker
    - <builtin>.set
    - distlib.markers._is_version_marker
    - p.zfill
    - distlib.markers._is_literal
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.util.get_extras
    - logger.warning
    - distlib.version._legacy_key
    - distlib.util.parse_marker
    - _VERSION_PATTERN.finditer
    - m.end
    - distlib.version._semantic_key.make_tuple
    - AND.match
    - context.update
    - p.isdigit
    - _VERSION_PART.split
    - distlib.version._semantic_key
    - local.split
    - IDENTIFIER.match
    - _SEMVER_RE.match
    - result.append
    - requested.remove
    - distlib.markers.Evaluator.evaluate
    - result.remove
    - parts.append
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - OR.match
    - s.lower
    - s.strip
    - <builtin>.dict
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.markers.interpret
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - extras.remove
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.util.parse_marker.marker_expr
    - distlib.util.parse_marker.marker_and
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    - r.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 385
    functionName: distlib.database.Distribution.run_requires
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - distlib.markers._get_versions
    - result.pop
    - distlib.database.Distribution._get_requirements
    - d.get
    - result.extend
    - result.add
    - distlib.markers.interpret_parsed
    - distlib.metadata.Metadata.get_requirements
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - <builtin>.set
    - distlib.util.parse_marker.marker
    - distlib.markers._is_version_marker
    - logger.debug
    - p.zfill
    - distlib.markers._is_literal
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.util.get_extras
    - logger.warning
    - distlib.version._legacy_key
    - distlib.util.parse_marker
    - _VERSION_PATTERN.finditer
    - <builtin>.getattr
    - m.end
    - distlib.version._semantic_key.make_tuple
    - AND.match
    - context.update
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - IDENTIFIER.match
    - _SEMVER_RE.match
    - result.append
    - requested.remove
    - distlib.markers.Evaluator.evaluate
    - result.remove
    - parts.append
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - OR.match
    - s.lower
    - s.strip
    - <builtin>.dict
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.markers.interpret
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - extras.remove
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.util.parse_marker.marker_expr
    - distlib.util.parse_marker.marker_and
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    - r.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 389
    functionName: distlib.database.Distribution.meta_requires
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - distlib.markers._get_versions
    - result.pop
    - distlib.database.Distribution._get_requirements
    - d.get
    - result.extend
    - result.add
    - distlib.markers.interpret_parsed
    - distlib.metadata.Metadata.get_requirements
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - <builtin>.set
    - distlib.util.parse_marker.marker
    - distlib.markers._is_version_marker
    - logger.debug
    - p.zfill
    - distlib.markers._is_literal
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.util.get_extras
    - logger.warning
    - distlib.version._legacy_key
    - distlib.util.parse_marker
    - _VERSION_PATTERN.finditer
    - <builtin>.getattr
    - m.end
    - distlib.version._semantic_key.make_tuple
    - AND.match
    - context.update
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - IDENTIFIER.match
    - _SEMVER_RE.match
    - result.append
    - requested.remove
    - distlib.markers.Evaluator.evaluate
    - result.remove
    - parts.append
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - OR.match
    - s.lower
    - s.strip
    - <builtin>.dict
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.markers.interpret
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - extras.remove
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.util.parse_marker.marker_expr
    - distlib.util.parse_marker.marker_and
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    - r.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 393
    functionName: distlib.database.Distribution.build_requires
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - distlib.markers._get_versions
    - result.pop
    - distlib.database.Distribution._get_requirements
    - d.get
    - result.extend
    - result.add
    - distlib.markers.interpret_parsed
    - distlib.metadata.Metadata.get_requirements
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - <builtin>.set
    - distlib.util.parse_marker.marker
    - distlib.markers._is_version_marker
    - logger.debug
    - p.zfill
    - distlib.markers._is_literal
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.util.get_extras
    - logger.warning
    - distlib.version._legacy_key
    - distlib.util.parse_marker
    - _VERSION_PATTERN.finditer
    - <builtin>.getattr
    - m.end
    - distlib.version._semantic_key.make_tuple
    - AND.match
    - context.update
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - IDENTIFIER.match
    - _SEMVER_RE.match
    - result.append
    - requested.remove
    - distlib.markers.Evaluator.evaluate
    - result.remove
    - parts.append
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - OR.match
    - s.lower
    - s.strip
    - <builtin>.dict
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.markers.interpret
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - extras.remove
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.util.parse_marker.marker_expr
    - distlib.util.parse_marker.marker_and
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    - r.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 397
    functionName: distlib.database.Distribution.test_requires
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - distlib.markers._get_versions
    - result.pop
    - distlib.database.Distribution._get_requirements
    - d.get
    - result.extend
    - result.add
    - distlib.markers.interpret_parsed
    - distlib.metadata.Metadata.get_requirements
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - <builtin>.set
    - distlib.util.parse_marker.marker
    - distlib.markers._is_version_marker
    - logger.debug
    - p.zfill
    - distlib.markers._is_literal
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.util.get_extras
    - logger.warning
    - distlib.version._legacy_key
    - distlib.util.parse_marker
    - _VERSION_PATTERN.finditer
    - <builtin>.getattr
    - m.end
    - distlib.version._semantic_key.make_tuple
    - AND.match
    - context.update
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - IDENTIFIER.match
    - _SEMVER_RE.match
    - result.append
    - requested.remove
    - distlib.markers.Evaluator.evaluate
    - result.remove
    - parts.append
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - OR.match
    - s.lower
    - s.strip
    - <builtin>.dict
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.markers.interpret
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - extras.remove
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.util.parse_marker.marker_expr
    - distlib.util.parse_marker.marker_and
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    - r.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 401
    functionName: distlib.database.Distribution.dev_requires
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - distlib.markers._get_versions
    - result.pop
    - distlib.database.Distribution._get_requirements
    - d.get
    - result.extend
    - result.add
    - distlib.markers.interpret_parsed
    - distlib.metadata.Metadata.get_requirements
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - <builtin>.set
    - distlib.util.parse_marker.marker
    - distlib.markers._is_version_marker
    - logger.debug
    - p.zfill
    - distlib.markers._is_literal
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.util.get_extras
    - logger.warning
    - distlib.version._legacy_key
    - distlib.util.parse_marker
    - _VERSION_PATTERN.finditer
    - <builtin>.getattr
    - m.end
    - distlib.version._semantic_key.make_tuple
    - AND.match
    - context.update
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - IDENTIFIER.match
    - _SEMVER_RE.match
    - result.append
    - requested.remove
    - distlib.markers.Evaluator.evaluate
    - result.remove
    - parts.append
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - OR.match
    - s.lower
    - s.strip
    - <builtin>.dict
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.markers.interpret
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - extras.remove
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.util.parse_marker.marker_expr
    - distlib.util.parse_marker.marker_and
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    - r.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - req
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 404
    functionName: distlib.database.Distribution.matches_requirement
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - remaining.find
    - distlib.version.NormalizedVersion.parse
    - NON_SPACE.match
    - distlib.util.parse_marker.marker
    - PEP440_VERSION_RE.match
    - m.groupdict
    - distlib.util.parse_requirement
    - p.zfill
    - NAME_VERSION_RE.match
    - <builtin>.len
    - _VERSION_REPLACE.get
    - urllib.parse.urlparse
    - logger.warning
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - req.split
    - distlib.util.parse_marker
    - m.end
    - VERSION_IDENTIFIER.match
    - <builtin>.getattr
    - distlib.version._semantic_key.make_tuple
    - AND.match
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version.Matcher.__init__
    - IDENTIFIER.match
    - versions.append
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - s.endswith
    - result.append
    - distlib.util.parse_requirement.get_versions
    - remaining.startswith
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - extras.append
    - distlib.util.parse_marker.marker_expr
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - OR.match
    - req.strip
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - distlib.util.parse_name_and_version
    - clist.append
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version.is_semver
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version.Matcher.match
    - COMPARE_OP.match
    - distlib.util.parse_marker.marker_and
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - urlparse.urlparse
    - types.SimpleNamespace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: req.split
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 437
    functionName: distlib.database.Distribution.__repr__
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 447
    functionName: distlib.database.Distribution.__eq__
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 461
    functionName: distlib.database.Distribution.__hash__
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - <builtin>.hash
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7d5a340>
    argNames:
    - self
    - metadata
    - path
    - env
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 476
    functionName: distlib.database.BaseInstalledDistribution.__init__
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7e0abe0>
    argNames:
    - self
    - data
    - hasher
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 491
    functionName: distlib.database.BaseInstalledDistribution.get_hash
    functionSourceFile: distlib.database
    functionUses: 3
    functionsReached:
    - hashlib.md5
    - <builtin>.getattr
    - base64.urlsafe_b64encode
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: hashlib.md5
    functionSourceFile: hashlib
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: base64.urlsafe_b64encode
    functionSourceFile: base64
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: r.as_stream
    functionSourceFile: <builtin>
    functionUses: 16
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: f.read
    functionSourceFile: <builtin>
    functionUses: 36
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: data.splitlines
    functionSourceFile: <builtin>
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 566
    functionName: distlib.database.InstalledDistribution.__repr__
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 569
    functionName: distlib.database.InstalledDistribution.__str__
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 572
    functionName: distlib.database.InstalledDistribution._get_records
    functionSourceFile: distlib.database
    functionUses: 3
    functionsReached:
    - r.as_stream
    - csv.reader
    - os.path.join
    - codecs.getreader
    - <builtin>.range
    - contextlib.closing
    - distlib.util.CSVReader.__init__
    - distlib.database.InstalledDistribution.get_distinfo_resource
    - _finder_registry.get
    - <builtin>.len
    - finder.find
    - pkgutil.get_importer
    - sys.path_importer_cache.get
    - <builtin>.open
    - <builtin>.type
    - distlib.util._csv_open
    - results.append
    - distlib.resources.finder_for_path
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 786
    functionName: distlib.database.InstalledDistribution.get_distinfo_resource
    functionSourceFile: distlib.database
    functionUses: 7
    functionsReached:
    - os.path.join
    - _finder_registry.get
    - finder.find
    - sys.path_importer_cache.get
    - <builtin>.type
    - pkgutil.get_importer
    - distlib.resources.finder_for_path
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.range
    functionSourceFile: <builtin>
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: results.append
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.database.InstalledDistribution
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.util.cached_property
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 596
    functionName: distlib.database.InstalledDistribution.exports
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - r.as_stream
    - os.path.join
    - contextlib.closing
    - _finder_registry.get
    - distlib.database.InstalledDistribution.read_exports
    - finder.find
    - pkgutil.get_importer
    - sys.path_importer_cache.get
    - <builtin>.type
    - distlib.database.InstalledDistribution.get_distinfo_resource
    - distlib.resources.finder_for_path
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 609
    functionName: distlib.database.InstalledDistribution.read_exports
    functionSourceFile: distlib.database
    functionUses: 1
    functionsReached:
    - r.as_stream
    - os.path.join
    - contextlib.closing
    - _finder_registry.get
    - distlib.database.InstalledDistribution.read_exports
    - finder.find
    - pkgutil.get_importer
    - sys.path_importer_cache.get
    - <builtin>.type
    - distlib.database.InstalledDistribution.get_distinfo_resource
    - distlib.resources.finder_for_path
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - exports
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 624
    functionName: distlib.database.InstalledDistribution.write_exports
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - os.path.join
    - distlib.database.InstalledDistribution.get_distinfo_file
    - <builtin>.open
    - distlib.database.InstalledDistribution.write_exports
    - path.split
    - path.find
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 795
    functionName: distlib.database.InstalledDistribution.get_distinfo_file
    functionSourceFile: distlib.database
    functionUses: 4
    functionsReached:
    - os.path.join
    - path.split
    - path.find
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - relative_path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 635
    functionName: distlib.database.InstalledDistribution.get_resource_path
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - os.path.join
    - codecs.getreader
    - contextlib.closing
    - distlib.util.CSVReader.__init__
    - distlib.database.InstalledDistribution.get_distinfo_resource
    - _finder_registry.get
    - finder.find
    - pkgutil.get_importer
    - <builtin>.type
    - sys.path_importer_cache.get
    - <builtin>.open
    - csv.reader
    - distlib.util._csv_open
    - r.as_stream
    - distlib.resources.finder_for_path
    linkageType: pythonLinkage
    raised:
    - KeyError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 655
    functionName: distlib.database.InstalledDistribution.list_installed_files
    functionSourceFile: distlib.database
    functionUses: 1
    functionsReached:
    - _finder_registry.get
    - finder.find
    - <builtin>.open
    - csv.reader
    - <builtin>.len
    - <builtin>.range
    - contextlib.closing
    - distlib.util.CSVReader.__init__
    - distlib.database.InstalledDistribution.get_distinfo_resource
    - r.as_stream
    - distlib.resources.finder_for_path
    - codecs.getreader
    - pkgutil.get_importer
    - distlib.util._csv_open
    - os.path.join
    - sys.path_importer_cache.get
    - <builtin>.type
    - distlib.database.InstalledDistribution._get_records
    - results.append
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 4
    IfCount: 4
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7b38d90>
    argNames:
    - self
    - paths
    - prefix
    - dry_run
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 665
    functionName: distlib.database.InstalledDistribution.write_installed_files
    functionSourceFile: distlib.database
    functionUses: 1
    functionsReached:
    - path.startswith
    - base.startswith
    - <builtin>.open
    - os.path.isdir
    - distlib.util.CSVWriter.__init__
    - os.path.getsize
    - writer.writerow
    - hashlib.md5
    - record_path.startswith
    - <builtin>.getattr
    - base64.urlsafe_b64encode
    - logger.info
    - distlib.database.InstalledDistribution.get_distinfo_file
    - distlib.database.BaseInstalledDistribution.get_hash
    - path.split
    - path.find
    - path.endswith
    - fp.read
    - distlib.util._csv_open
    - os.path.join
    - csv.writer
    - os.path.dirname
    - os.path.relpath
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: base.startswith
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.getsize
    functionSourceFile: os
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: fp.read
    functionSourceFile: <builtin>
    functionUses: 19
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.relpath
    functionSourceFile: os
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: writer.writerow
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: record_path.startswith
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 12
    ICount: 4
    IfCount: 8
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 699
    functionName: distlib.database.InstalledDistribution.check_installed_files
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - _finder_registry.get
    - finder.find
    - <builtin>.open
    - csv.reader
    - <builtin>.str
    - os.path.isabs
    - mismatches.append
    - f.read
    - <builtin>.len
    - hash_value.split
    - <builtin>.range
    - contextlib.closing
    - distlib.util.CSVReader.__init__
    - os.path.getsize
    - hashlib.md5
    - <builtin>.getattr
    - base64.urlsafe_b64encode
    - distlib.database.InstalledDistribution.get_distinfo_resource
    - r.as_stream
    - distlib.resources.finder_for_path
    - codecs.getreader
    - distlib.database.InstalledDistribution.get_distinfo_file
    - distlib.database.BaseInstalledDistribution.get_hash
    - path.split
    - path.find
    - pkgutil.get_importer
    - distlib.util._csv_open
    - os.path.join
    - distlib.database.InstalledDistribution.list_installed_files
    - os.path.dirname
    - os.path.exists
    - os.path.isfile
    - sys.path_importer_cache.get
    - <builtin>.type
    - distlib.database.InstalledDistribution._get_records
    - results.append
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: mismatches.append
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: hash_value.split
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 735
    functionName: distlib.database.InstalledDistribution.shared_locations
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - os.path.join
    - os.path.isfile
    - codecs.open
    - line.split
    - result.setdefault
    - f.read
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: line.split
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: result.setdefault
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7d80b80>
    argNames:
    - self
    - paths
    - dry_run
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 761
    functionName: distlib.database.InstalledDistribution.write_shared_locations
    functionSourceFile: distlib.database
    functionUses: 1
    functionsReached:
    - os.path.join
    - f.write
    - logger.info
    - os.path.isdir
    - codecs.open
    - lines.append
    - paths.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: lines.append
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: paths.get
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: path.find
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 823
    functionName: distlib.database.InstalledDistribution.list_distinfo_files
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - _finder_registry.get
    - path.startswith
    - finder.find
    - <builtin>.open
    - csv.reader
    - os.path.isabs
    - <builtin>.len
    - <builtin>.range
    - contextlib.closing
    - distlib.util.CSVReader.__init__
    - distlib.database.InstalledDistribution.get_distinfo_resource
    - r.as_stream
    - distlib.resources.finder_for_path
    - codecs.getreader
    - pkgutil.get_importer
    - distlib.util._csv_open
    - os.path.join
    - os.path.dirname
    - sys.path_importer_cache.get
    - <builtin>.type
    - distlib.database.InstalledDistribution._get_records
    - results.append
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 839
    functionName: distlib.database.InstalledDistribution.__eq__
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - s
    - n
    - v
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 857
    functionName: distlib.database.EggInfoDistribution.__init__.set_name_and_version
    functionSourceFile: distlib.database
    functionUses: 8
    functionsReached:
    - n.lower
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: n.lower
    functionSourceFile: <builtin>
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 12
    ICount: 1
    IfCount: 8
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 12
    functionLinenumber: 877
    functionName: distlib.database.EggInfoDistribution._get_metadata
    functionSourceFile: distlib.database
    functionUses: 8
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - NON_SPACE.match
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.isEnabledFor
    - logger.debug
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - tl_data.splitlines
    - m.end
    - VERSION_IDENTIFIER.match
    - p.isdigit
    - <builtin>.sorted
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - StringIO.StringIO.read
    - extras.append
    - io.StringIO
    - STRING_CHUNK.match
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - path.endswith
    - s.strip
    - email.message_from_file.get_payload
    - fp.read
    - name.replace
    - os.path.exists
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.version._pep_440_key
    - distlib.metadata.LegacyMetadata.update
    - distlib.version.is_semver
    - mapping.get
    - types.SimpleNamespace
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - distlib.util.parse_marker.marker
    - <builtin>.set
    - distlib.util.parse_requirement
    - res.append
    - p.zfill
    - zipimport.zipimporter
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.util.parse_marker
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - IDENTIFIER.match
    - versions.append
    - distlib.util.parse_requirement.get_versions
    - remaining.startswith
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - codecs.open
    - distlib.util.parse_marker.marker_var
    - warnings.append
    - OR.match
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - os.path.join
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - distlib.util.parse_marker.marker_expr
    - StringIO.StringIO
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - run_requires.insert
    - urllib.parse.urlparse
    - distlib.metadata.LegacyMetadata.set
    - reqs.append
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_path
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - data.splitlines
    - distlib.metadata.LegacyMetadata.__init__
    - zipf.get_data
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - line.startswith
    - remaining.find
    - <builtin>.open
    - os.path.isdir
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_data
    - distlib.metadata.Metadata.add_requirements
    - _VERSION_REPLACE.get
    - distlib.metadata.LegacyMetadata.add_requirements
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - AND.match
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - MARKER_OP.match
    - req.strip
    - s.lower
    - clist.append
    - data.decode
    - line.strip
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.metadata._best_version
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - COMPARE_OP.match
    - distlib.util.parse_marker.marker_and
    - <builtin>.tuple
    - urlparse.urlparse
    - <builtin>.any
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 6
    IfCount: 5
    argCount: 1
    argDefaultValues: []
    argNames:
    - data
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 880
    functionName: distlib.database.EggInfoDistribution._get_metadata.parse_requires_data
    functionSourceFile: distlib.database
    functionUses: 10
    functionsReached:
    - line.startswith
    - remaining.find
    - NON_SPACE.match
    - distlib.util.parse_marker.marker
    - distlib.util.parse_requirement
    - urllib.parse.urlparse
    - reqs.append
    - logger.warning
    - distlib.util.parse_marker
    - m.end
    - VERSION_IDENTIFIER.match
    - AND.match
    - versions.append
    - IDENTIFIER.match
    - distlib.util.parse_requirement.get_versions
    - remaining.startswith
    - parts.append
    - data.splitlines
    - extras.append
    - distlib.util.parse_marker.marker_expr
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - OR.match
    - req.strip
    - m.groups
    - line.strip
    - COMPARE_OP.match
    - distlib.util.parse_marker.marker_and
    - urlparse.urlparse
    - types.SimpleNamespace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: line.strip
    functionSourceFile: <builtin>
    functionUses: 14
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: line.startswith
    functionSourceFile: <builtin>
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: reqs.append
    functionSourceFile: <builtin>
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - req_path
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 8
    functionLinenumber: 909
    functionName: distlib.database.EggInfoDistribution._get_metadata.parse_requires_path
    functionSourceFile: distlib.database
    functionUses: 9
    functionsReached:
    - line.startswith
    - remaining.find
    - NON_SPACE.match
    - distlib.util.parse_marker.marker
    - distlib.util.parse_requirement
    - distlib.database.EggInfoDistribution._get_metadata.parse_requires_data
    - urllib.parse.urlparse
    - reqs.append
    - logger.warning
    - distlib.util.parse_marker
    - m.end
    - VERSION_IDENTIFIER.match
    - AND.match
    - versions.append
    - IDENTIFIER.match
    - distlib.util.parse_requirement.get_versions
    - remaining.startswith
    - parts.append
    - data.splitlines
    - extras.append
    - distlib.util.parse_marker.marker_expr
    - codecs.open
    - MARKER_OP.match
    - distlib.util.parse_marker.marker_var
    - STRING_CHUNK.match
    - OR.match
    - req.strip
    - fp.read
    - m.groups
    - line.strip
    - COMPARE_OP.match
    - distlib.util.parse_marker.marker_and
    - urlparse.urlparse
    - types.SimpleNamespace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zipimport.zipimporter
    functionSourceFile: zipimport
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zipf.get_data
    functionSourceFile: <builtin>
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: data.decode
    functionSourceFile: <builtin>
    functionUses: 26
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 2
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - requirements
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1011
    functionName: distlib.metadata.Metadata.add_requirements
    functionSourceFile: distlib.metadata
    functionUses: 9
    functionsReached:
    - <builtin>.sorted
    - <builtin>.set
    - distlib.metadata.LegacyMetadata.add_requirements
    - run_requires.insert
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: tl_data.splitlines
    functionSourceFile: <builtin>
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 968
    functionName: distlib.database.EggInfoDistribution.__repr__
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 971
    functionName: distlib.database.EggInfoDistribution.__str__
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 2
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 974
    functionName: distlib.database.EggInfoDistribution.check_installed_files
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - f.close
    - distlib.database.EggInfoDistribution.list_installed_files._md5
    - os.path.join
    - os.path.exists
    - logger.warning
    - result.append
    - os.path.normpath
    - p.endswith
    - line.strip
    - hashlib.md5
    - <builtin>.open
    - codecs.open
    - os.path.isdir
    - distlib.database.EggInfoDistribution.list_installed_files._size
    - os.stat
    - f.read
    - mismatches.append
    - distlib.database.EggInfoDistribution.list_installed_files
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 4
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 993
    functionName: distlib.database.EggInfoDistribution.list_installed_files
    functionSourceFile: distlib.database
    functionUses: 1
    functionsReached:
    - f.close
    - os.path.join
    - os.path.exists
    - distlib.database.EggInfoDistribution.list_installed_files._md5
    - logger.warning
    - result.append
    - os.path.normpath
    - p.endswith
    - line.strip
    - hashlib.md5
    - <builtin>.open
    - codecs.open
    - os.path.isdir
    - distlib.database.EggInfoDistribution.list_installed_files._size
    - os.stat
    - f.read
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - path
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1001
    functionName: distlib.database.EggInfoDistribution.list_installed_files._md5
    functionSourceFile: distlib.database
    functionUses: 2
    functionsReached:
    - hashlib.md5
    - <builtin>.open
    - f.read
    - f.close
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: f.close
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - path
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1009
    functionName: distlib.database.EggInfoDistribution.list_installed_files._size
    functionSourceFile: distlib.database
    functionUses: 2
    functionsReached:
    - os.stat
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: p.endswith
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 3
    IfCount: 5
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7c3a3d0>
    argNames:
    - self
    - absolute
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1031
    functionName: distlib.database.EggInfoDistribution.list_distinfo_files
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - os.path.join
    - os.path.exists
    - os.path.normpath
    - line.strip
    - p.startswith
    - codecs.open
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1060
    functionName: distlib.database.EggInfoDistribution.__eq__
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1087
    functionName: distlib.database.DependencyGraph.__init__
    functionSourceFile: distlib.database
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - distribution
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1092
    functionName: distlib.database.DependencyGraph.add_distribution
    functionSourceFile: distlib.database
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7b0da30>
    argNames:
    - self
    - x
    - y
    - label
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1102
    functionName: distlib.database.DependencyGraph.add_edge
    functionSourceFile: distlib.database
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - distribution
    - requirement
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1117
    functionName: distlib.database.DependencyGraph.add_missing
    functionSourceFile: distlib.database
    functionUses: 3
    functionsReached:
    - logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - dist
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1128
    functionName: distlib.database.DependencyGraph._repr_dist
    functionSourceFile: distlib.database
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7ebd2e0>
    argNames:
    - self
    - dist
    - level
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1131
    functionName: distlib.database.DependencyGraph.repr_node
    functionSourceFile: distlib.database
    functionUses: 1
    functionsReached:
    - distlib.database.DependencyGraph.repr_node
    - output.append
    - output.extend
    - suboutput.split
    - distlib.database.DependencyGraph._repr_dist
    - <builtin>.str
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: output.append
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: suboutput.split
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: output.extend
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 12
    IfCount: 3
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d84ee400>
    argNames:
    - self
    - f
    - skip_disconnected
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1144
    functionName: distlib.database.DependencyGraph.to_dot
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - disconnected.append
    - f.write
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: disconnected.append
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1175
    functionName: distlib.database.DependencyGraph.topological_sort
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - <builtin>.list
    - result.extend
    - to_remove.append
    - alist.items
    - alist.keys
    - logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: alist.items
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: to_remove.append
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: result.extend
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: alist.keys
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1205
    functionName: distlib.database.DependencyGraph.__repr__
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.database.DependencyGraph.repr_node
    - output.append
    - output.extend
    - suboutput.split
    - distlib.database.DependencyGraph._repr_dist
    - <builtin>.str
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 7
    IfCount: 3
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7d8bb20>
    argNames:
    - dists
    - scheme
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 1213
    functionName: distlib.database.make_graph
    functionSourceFile: distlib.database
    functionUses: 2
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - m.groupdict
    - logger.debug
    - p.zfill
    - NAME_VERSION_RE.match
    - <builtin>.len
    - _VERSION_REPLACE.get
    - logger.warning
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - req.split
    - <builtin>.getattr
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version.Matcher.__init__
    - distlib.version._semantic_key
    - provided.setdefault
    - _SEMVER_RE.match
    - s.endswith
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - distlib.database.DependencyGraph.add_distribution
    - s.lower
    - s.strip
    - distlib.database.DependencyGraph.__init__
    - distlib.util.parse_name_and_version
    - distlib.database.DependencyGraph.add_missing
    - clist.append
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version.SemanticVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - distlib.database.DependencyGraph.add_edge
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version.Matcher.match
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: provided.setdefault
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - dists
    - dist
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 1265
    functionName: distlib.database.get_dependent_dists
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - m.groupdict
    - logger.debug
    - p.zfill
    - NAME_VERSION_RE.match
    - <builtin>.len
    - _VERSION_REPLACE.get
    - logger.warning
    - distlib.version._legacy_key
    - dep.append
    - distlib.version.get_scheme
    - dep.pop
    - req.split
    - <builtin>.getattr
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version.Matcher.__init__
    - distlib.version._semantic_key
    - provided.setdefault
    - _SEMVER_RE.match
    - s.endswith
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - todo.pop
    - todo.append
    - distlib.database.DependencyGraph.add_distribution
    - s.lower
    - s.strip
    - distlib.database.DependencyGraph.__init__
    - distlib.util.parse_name_and_version
    - distlib.database.DependencyGraph.add_missing
    - clist.append
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version.SemanticVersion.parse
    - distlib.version._legacy_key.get_parts
    - distlib.database.make_graph
    - m.groups
    - distlib.database.DependencyGraph.add_edge
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version.Matcher.match
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dep.append
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dep.pop
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - dists
    - dist
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 1291
    functionName: distlib.database.get_required_dists
    functionSourceFile: distlib.database
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - m.groupdict
    - <builtin>.set
    - logger.debug
    - p.zfill
    - NAME_VERSION_RE.match
    - <builtin>.len
    - _VERSION_REPLACE.get
    - logger.warning
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - req.split
    - <builtin>.getattr
    - distlib.version._semantic_key.make_tuple
    - req.add
    - p.isdigit
    - distlib.version._semantic_key
    - local.split
    - distlib.version.Matcher.__init__
    - _VERSION_PART.split
    - provided.setdefault
    - _SEMVER_RE.match
    - s.endswith
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - todo.pop
    - todo.append
    - distlib.database.DependencyGraph.add_distribution
    - s.lower
    - s.strip
    - distlib.database.DependencyGraph.__init__
    - distlib.util.parse_name_and_version
    - distlib.database.DependencyGraph.add_missing
    - clist.append
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version.SemanticVersion.parse
    - distlib.version._legacy_key.get_parts
    - distlib.database.make_graph
    - m.groups
    - distlib.database.DependencyGraph.add_edge
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version.Matcher.match
    - seen.add
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: req.add
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - name
    - version
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 12
    functionLinenumber: 1320
    functionName: distlib.database.make_dist
    functionSourceFile: distlib.database
    functionUses: 5
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - kwargs.pop
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.isEnabledFor
    - logger.debug
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - p.isdigit
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - StringIO.StringIO.read
    - io.StringIO
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - s.strip
    - email.message_from_file.get_payload
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.version._pep_440_key
    - distlib.metadata.LegacyMetadata.update
    - distlib.version.is_semver
    - mapping.get
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - <builtin>.set
    - res.append
    - p.zfill
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - StringIO.StringIO
    - <builtin>.tuple
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - distlib.metadata.LegacyMetadata.set
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - distlib.database.Distribution.__init__
    - <builtin>.open
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - s.lower
    - clist.append
    - data.decode
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - _LINE_PREFIX_1_2.sub
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.resources
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - <builtin>.str
    - logging.getLogger
    - types.ModuleType
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d85304c0>
    argNames:
    - self
    - base
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 28
    functionName: distlib.resources.ResourceCache.__init__
    functionSourceFile: distlib.resources
    functionUses: 1
    functionsReached:
    - <builtin>.super
    - os.path.join
    - os.access
    - os.path.expanduser
    - logger.warning
    - distlib.util.get_cache_base
    - os.makedirs
    - os.path.isdir
    - <builtin>.str
    - os.path.expandvars
    - tempfile.mkdtemp
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - resource
    - path
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 34
    functionName: distlib.resources.ResourceCache.is_stale
    functionSourceFile: distlib.resources
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 3
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 45
    functionName: distlib.resources.ResourceCache.get
    functionSourceFile: distlib.resources
    functionUses: 1
    functionsReached:
    - os.path.join
    - os.path.exists
    - f.write
    - os.path.dirname
    - distlib.util.path_to_cache_dir
    - os.makedirs
    - d.replace
    - distlib.util.Cache.prefix_to_dir
    - distlib.resources.ResourceCache.is_stale
    - <builtin>.open
    - os.path.isdir
    - os.path.abspath
    - os.path.splitdrive
    - resource.finder.get_cache_info
    - p.replace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: resource.finder.get_cache_info
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - finder
    - name
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 72
    functionName: distlib.resources.ResourceBase.__init__
    functionSourceFile: distlib.resources
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 85
    functionName: distlib.resources.Resource.as_stream
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.resources.Resource
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - distlib.util.cached_property
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 95
    functionName: distlib.resources.Resource.file_path
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - os.makedirs
    - distlib.util.Cache.prefix_to_dir
    - distlib.resources.ResourceCache.is_stale
    - <builtin>.open
    - os.path.isdir
    - <builtin>.str
    - distlib.util.get_cache_base
    - logger.warning
    - distlib.resources.ResourceCache.get
    - os.path.abspath
    - os.path.expanduser
    - tempfile.mkdtemp
    - p.replace
    - <builtin>.super
    - distlib.util.path_to_cache_dir
    - os.path.splitdrive
    - os.path.expandvars
    - os.access
    - os.path.join
    - os.path.exists
    - f.write
    - os.path.dirname
    - distlib.resources.ResourceCache.__init__
    - resource.finder.get_cache_info
    - d.replace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 102
    functionName: distlib.resources.Resource.bytes
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 106
    functionName: distlib.resources.Resource.size
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.resources.ResourceContainer
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - distlib.util.cached_property
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 114
    functionName: distlib.resources.ResourceContainer.resources
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.platform.startswith
    functionSourceFile: sys
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.resources.ResourceFinder
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - <builtin>.staticmethod
    - sys.platform.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - module
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 128
    functionName: distlib.resources.ResourceFinder.__init__
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - <builtin>.getattr
    - os.path.dirname
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 133
    functionName: distlib.resources.ResourceFinder._adjust_path
    functionSourceFile: distlib.resources
    functionUses: 3
    functionsReached:
    - os.path.realpath
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.realpath
    functionSourceFile: os
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource_name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 136
    functionName: distlib.resources.ResourceFinder._make_path
    functionSourceFile: distlib.resources
    functionUses: 2
    functionsReached:
    - os.path.join
    - os.path.realpath
    - parts.insert
    - <builtin>.isinstance
    - distlib.resources.ResourceFinder._adjust_path
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: parts.insert
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 148
    functionName: distlib.resources.ResourceFinder._find
    functionSourceFile: distlib.resources
    functionUses: 2
    functionsReached:
    - os.path.exists
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 151
    functionName: distlib.resources.ResourceFinder.get_cache_info
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource_name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 154
    functionName: distlib.resources.ResourceFinder.find
    functionSourceFile: distlib.resources
    functionUses: 1
    functionsReached:
    - os.path.join
    - os.path.exists
    - distlib.resources.ResourceFinder._make_path
    - os.path.realpath
    - parts.insert
    - distlib.resources.ResourceFinder._find
    - <builtin>.isinstance
    - distlib.resources.ResourceBase.__init__
    - distlib.resources.ResourceFinder._adjust_path
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 166
    functionName: distlib.resources.ResourceFinder.get_stream
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - <builtin>.open
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 169
    functionName: distlib.resources.ResourceFinder.get_bytes
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - <builtin>.open
    - f.read
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 173
    functionName: distlib.resources.ResourceFinder.get_size
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - os.path.getsize
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 176
    functionName: distlib.resources.ResourceFinder.get_resources
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - <builtin>.set
    - os.listdir
    - f.endswith
    - distlib.resources.ResourceFinder.get_resources.allowed
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - f
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 177
    functionName: distlib.resources.ResourceFinder.get_resources.allowed
    functionSourceFile: distlib.resources
    functionUses: 1
    functionsReached:
    - f.endswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: f.endswith
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 182
    functionName: distlib.resources.ResourceFinder.is_container
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 3
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource_name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 187
    functionName: distlib.resources.ResourceFinder.iterator
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - os.path.join
    - os.path.exists
    - distlib.resources.ResourceFinder._make_path
    - todo.pop
    - os.path.realpath
    - parts.insert
    - distlib.resources.ResourceFinder._find
    - <builtin>.isinstance
    - todo.append
    - distlib.resources.ResourceBase.__init__
    - distlib.resources.ResourceFinder._adjust_path
    - distlib.resources.ResourceFinder.find
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - module
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 212
    functionName: distlib.resources.ZipResourceFinder.__init__
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - <builtin>.sorted
    - <builtin>.super
    - <builtin>.len
    - <builtin>.hasattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 223
    functionName: distlib.resources.ZipResourceFinder._adjust_path
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 2
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 226
    functionName: distlib.resources.ZipResourceFinder._find
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - bisect.bisect
    - logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: bisect.bisect
    functionSourceFile: bisect
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 244
    functionName: distlib.resources.ZipResourceFinder.get_cache_info
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 249
    functionName: distlib.resources.ZipResourceFinder.get_bytes
    functionSourceFile: distlib.resources
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 252
    functionName: distlib.resources.ZipResourceFinder.get_stream
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - io.BytesIO
    - distlib.resources.ZipResourceFinder.get_bytes
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 255
    functionName: distlib.resources.ZipResourceFinder.get_size
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - resource
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 259
    functionName: distlib.resources.ZipResourceFinder.get_resources
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - bisect.bisect
    - result.add
    - <builtin>.set
    - s.split
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 274
    functionName: distlib.resources.ZipResourceFinder._is_directory
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - bisect.bisect
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - loader
    - finder_maker
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 306
    functionName: distlib.resources.register_finder
    functionSourceFile: distlib.resources
    functionUses: 0
    functionsReached:
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 2
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - package
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 313
    functionName: distlib.resources.finder
    functionSourceFile: distlib.resources
    functionUses: 1
    functionsReached:
    - _finder_registry.get
    - <builtin>.getattr
    - <builtin>.__import__
    - <builtin>.type
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _finder_registry.get
    functionSourceFile: <builtin>
    functionUses: 20
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: types.ModuleType
    functionSourceFile: types
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pkgutil.get_importer
    functionSourceFile: pkgutil
    functionUses: 18
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.path_importer_cache.get
    functionSourceFile: sys
    functionUses: 18
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 7
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.metadata
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - re.compile
    - logging.getLogger
    - <builtin>.set
    - _ALL_FIELDS.update
    - <builtin>.object
    - name.lower
    - _ATTR2FIELD.items
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _ALL_FIELDS.update
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 0
    IfCount: 6
    argCount: 1
    argDefaultValues: []
    argNames:
    - version
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 103
    functionName: distlib.metadata._version2fieldlist
    functionSourceFile: distlib.metadata
    functionUses: 13
    functionsReached:
    - <builtin>.tuple
    linkageType: pythonLinkage
    raised:
    - MetadataUnrecognizedVersionError
    - ValueError
    returnType: N/A
  - BBCount: 15
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 22
    ICount: 14
    IfCount: 15
    argCount: 1
    argDefaultValues: []
    argNames:
    - fields
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 121
    functionName: distlib.metadata._best_version
    functionSourceFile: distlib.metadata
    functionUses: 36
    functionsReached:
    - <builtin>.int
    - <builtin>.len
    - distlib.metadata._best_version._has_marker
    - fields.items
    - logger.debug
    - possible_versions.remove
    - <builtin>.any
    linkageType: pythonLinkage
    raised:
    - MetadataConflictError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - keys
    - markers
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 124
    functionName: distlib.metadata._best_version._has_marker
    functionSourceFile: distlib.metadata
    functionUses: 37
    functionsReached:
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: fields.items
    functionSourceFile: <builtin>
    functionUses: 37
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: possible_versions.remove
    functionSourceFile: <builtin>
    functionUses: 37
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _ATTR2FIELD.items
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7d8a700>
    argNames:
    - name
    - version
    - for_filename
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 215
    functionName: distlib.metadata._get_name_and_version
    functionSourceFile: distlib.metadata
    functionUses: 2
    functionsReached:
    - _FILESAFE.sub
    - version.replace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _FILESAFE.sub
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: version.replace
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 4
    IfCount: 4
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7b8a9d0>
    - <ast.Constant object at 0x7ff8d7b8a8b0>
    - <ast.Constant object at 0x7ff8d7b8adc0>
    - <ast.Constant object at 0x7ff8d7b8a190>
    argNames:
    - self
    - path
    - fileobj
    - mapping
    - scheme
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 241
    functionName: distlib.metadata.LegacyMetadata.__init__
    functionSourceFile: distlib.metadata
    functionUses: 26
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - <builtin>.tuple
    - distlib.version.VersionScheme.is_valid_version
    - v.strip
    - PEP440_VERSION_RE.match
    - fp.close
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.isEnabledFor
    - p.zfill
    - logger.debug
    - distlib.metadata._best_version._has_marker
    - distlib.version._pep_440_key
    - <builtin>.len
    - <builtin>.hasattr
    - _VERSION_REPLACE.get
    - distlib.metadata.LegacyMetadata.set
    - _ATTR2FIELD.get
    - logger.warning
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - other.keys
    - value.split
    - distlib.version._semantic_key.make_tuple
    - distlib.metadata.LegacyMetadata.read_file
    - possible_versions.remove
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - distlib.version.Matcher.__init__
    - local.split
    - p.isdigit
    - _SEMVER_RE.match
    - s.endswith
    - email.message_from_file
    - v.split
    - result.append
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - parts.append
    - codecs.open
    - s.lower
    - distlib.metadata.LegacyMetadata.read
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - email.message_from_file.get_payload
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - name.replace
    - clist.append
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - kwargs.items
    - distlib.metadata.LegacyMetadata.update._set
    - m.groups
    - distlib.version.VersionScheme.is_valid_constraint_list
    - distlib.version.VersionScheme.is_valid_matcher
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - fields.items
    - email.message_from_file.get_all
    - distlib.metadata.LegacyMetadata.update
    - _LINE_PREFIX_1_2.sub
    - distlib.version.is_semver
    - <builtin>.any
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - filepath
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 9
    functionLinenumber: 321
    functionName: distlib.metadata.LegacyMetadata.read
    functionSourceFile: distlib.metadata
    functionUses: 27
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - <builtin>.tuple
    - distlib.version.VersionScheme.is_valid_version
    - v.strip
    - PEP440_VERSION_RE.match
    - fp.close
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.isEnabledFor
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.metadata.LegacyMetadata.set
    - _ATTR2FIELD.get
    - logger.warning
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.version._semantic_key.make_tuple
    - distlib.metadata.LegacyMetadata.read_file
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - distlib.version.Matcher.__init__
    - _SEMVER_RE.match
    - s.endswith
    - email.message_from_file
    - v.split
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - codecs.open
    - s.lower
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - s.strip
    - email.message_from_file.get_payload
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - name.replace
    - clist.append
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - distlib.version.VersionScheme.is_valid_constraint_list
    - distlib.version.VersionScheme.is_valid_matcher
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - email.message_from_file.get_all
    - distlib.version._pep_440_key
    - _LINE_PREFIX_1_2.sub
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 3
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - fileob
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 8
    functionLinenumber: 329
    functionName: distlib.metadata.LegacyMetadata.read_file
    functionSourceFile: distlib.metadata
    functionUses: 28
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - <builtin>.tuple
    - distlib.version.VersionScheme.is_valid_version
    - v.strip
    - PEP440_VERSION_RE.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.isEnabledFor
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.metadata.LegacyMetadata.set
    - _ATTR2FIELD.get
    - logger.warning
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - distlib.version.Matcher.__init__
    - _SEMVER_RE.match
    - s.endswith
    - email.message_from_file
    - v.split
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - s.lower
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - email.message_from_file.get_payload
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - name.replace
    - clist.append
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - distlib.version.VersionScheme.is_valid_constraint_list
    - distlib.version.VersionScheme.is_valid_matcher
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - email.message_from_file.get_all
    - distlib.version._pep_440_key
    - _LINE_PREFIX_1_2.sub
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 4
    IfCount: 3
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d852c850>
    argNames:
    - self
    - other
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 9
    functionLinenumber: 390
    functionName: distlib.metadata.LegacyMetadata.update
    functionSourceFile: distlib.metadata
    functionUses: 27
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - <builtin>.tuple
    - distlib.version.VersionScheme.is_valid_version
    - v.strip
    - PEP440_VERSION_RE.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.isEnabledFor
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - distlib.metadata.LegacyMetadata.set
    - logger.warning
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - other.keys
    - value.split
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version.Matcher.__init__
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - s.endswith
    - v.split
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - s.lower
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - s.strip
    - distlib.version.SemanticVersion.parse
    - name.replace
    - <builtin>.int
    - clist.append
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - kwargs.items
    - distlib.metadata.LegacyMetadata.update._set
    - m.groups
    - distlib.version.VersionScheme.is_valid_constraint_list
    - distlib.version.VersionScheme.is_valid_matcher
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - _LINE_PREFIX_1_2.sub
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 256
    functionName: distlib.metadata.LegacyMetadata.set_metadata_version
    functionSourceFile: distlib.metadata
    functionUses: 35
    functionsReached:
    - <builtin>.int
    - <builtin>.len
    - possible_versions.remove
    - distlib.metadata._best_version
    - fields.items
    - logger.debug
    - distlib.metadata._best_version._has_marker
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - fileobj
    - name
    - value
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 259
    functionName: distlib.metadata.LegacyMetadata._write_field
    functionSourceFile: distlib.metadata
    functionUses: 5
    functionsReached:
    - fileobj.write
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: fileobj.write
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 262
    functionName: distlib.metadata.LegacyMetadata.__getitem__
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - name.replace
    - _ATTR2FIELD.get
    - distlib.metadata.LegacyMetadata._default_value
    - value.split
    - <builtin>.isinstance
    - res.append
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata._convert_name
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 12
    ICount: 3
    IfCount: 8
    argCount: 3
    argDefaultValues:
    - <ast.Name object at 0x7ff8d7bc0160>
    argNames:
    - self
    - name
    - default
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 457
    functionName: distlib.metadata.LegacyMetadata.get
    functionSourceFile: distlib.metadata
    functionUses: 31
    functionsReached:
    - name.replace
    - _ATTR2FIELD.get
    - distlib.metadata.LegacyMetadata._default_value
    - value.split
    - <builtin>.isinstance
    - res.append
    - distlib.metadata.LegacyMetadata._convert_name
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - name
    - value
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 8
    functionLinenumber: 265
    functionName: distlib.metadata.LegacyMetadata.__setitem__
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - distlib.version.VersionScheme.is_valid_version
    - v.strip
    - PEP440_VERSION_RE.match
    - distlib.metadata.LegacyMetadata._convert_name
    - p.zfill
    - logger.isEnabledFor
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.metadata.LegacyMetadata.set
    - _ATTR2FIELD.get
    - logger.warning
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version.Matcher.__init__
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - s.endswith
    - v.split
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - s.lower
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - name.replace
    - clist.append
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - distlib.version.VersionScheme.is_valid_constraint_list
    - distlib.version.VersionScheme.is_valid_matcher
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 19
    ICount: 4
    IfCount: 13
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - name
    - value
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 419
    functionName: distlib.metadata.LegacyMetadata.set
    functionSourceFile: distlib.metadata
    functionUses: 32
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - distlib.version.VersionScheme.is_valid_version
    - v.strip
    - PEP440_VERSION_RE.match
    - distlib.metadata.LegacyMetadata._convert_name
    - p.zfill
    - logger.isEnabledFor
    - <builtin>.len
    - _VERSION_REPLACE.get
    - _ATTR2FIELD.get
    - logger.warning
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version.Matcher.__init__
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - s.endswith
    - v.split
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - s.lower
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - name.replace
    - clist.append
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - distlib.version.VersionScheme.is_valid_constraint_list
    - distlib.version.VersionScheme.is_valid_matcher
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 268
    functionName: distlib.metadata.LegacyMetadata.__delitem__
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - name.replace
    - _ATTR2FIELD.get
    - distlib.metadata.LegacyMetadata._convert_name
    linkageType: pythonLinkage
    raised:
    - KeyError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 278
    functionName: distlib.metadata.LegacyMetadata._convert_name
    functionSourceFile: distlib.metadata
    functionUses: 44
    functionsReached:
    - name.replace
    - _ATTR2FIELD.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 275
    functionName: distlib.metadata.LegacyMetadata.__contains__
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - name.replace
    - _ATTR2FIELD.get
    - distlib.metadata.LegacyMetadata._convert_name
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _ATTR2FIELD.get
    functionSourceFile: <builtin>
    functionUses: 45
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 284
    functionName: distlib.metadata.LegacyMetadata._default_value
    functionSourceFile: distlib.metadata
    functionUses: 32
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - value
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 289
    functionName: distlib.metadata.LegacyMetadata._remove_line_prefix
    functionSourceFile: distlib.metadata
    functionUses: 33
    functionsReached:
    - _LINE_PREFIX_PRE_1_2.sub
    - _LINE_PREFIX_1_2.sub
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _LINE_PREFIX_PRE_1_2.sub
    functionSourceFile: <builtin>
    functionUses: 34
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _LINE_PREFIX_1_2.sub
    functionSourceFile: <builtin>
    functionUses: 34
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 295
    functionName: distlib.metadata.LegacyMetadata.__getattr__
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - AttributeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d8270ac0>
    argNames:
    - self
    - filesafe
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 304
    functionName: distlib.metadata.LegacyMetadata.get_fullname
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - _FILESAFE.sub
    - distlib.metadata._get_name_and_version
    - version.replace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 312
    functionName: distlib.metadata.LegacyMetadata.is_field
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - name.replace
    - _ATTR2FIELD.get
    - distlib.metadata.LegacyMetadata._convert_name
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 317
    functionName: distlib.metadata.LegacyMetadata.is_multi_field
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - name.replace
    - _ATTR2FIELD.get
    - distlib.metadata.LegacyMetadata._convert_name
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: fp.close
    functionSourceFile: <builtin>
    functionUses: 29
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: email.message_from_file
    functionSourceFile: email
    functionUses: 32
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: email.message_from_file.get_all
    functionSourceFile: email
    functionUses: 29
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: value.split
    functionSourceFile: <builtin>
    functionUses: 41
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: email.message_from_file.get_payload
    functionSourceFile: email
    functionUses: 29
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7d5adc0>
    argNames:
    - self
    - filepath
    - skip_unknown
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 357
    functionName: distlib.metadata.LegacyMetadata.write
    functionSourceFile: distlib.metadata
    functionUses: 3
    functionsReached:
    - distlib.metadata.LegacyMetadata.write_file
    - fp.close
    - res.append
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - distlib.metadata._best_version._has_marker
    - <builtin>.len
    - _ATTR2FIELD.get
    - distlib.metadata.LegacyMetadata._write_field
    - distlib.metadata.LegacyMetadata._default_value
    - values.replace
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata._version2fieldlist
    - possible_versions.remove
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - codecs.open
    - fileobj.write
    - <builtin>.int
    - name.replace
    - distlib.metadata._best_version
    - <builtin>.isinstance
    - fields.items
    - <builtin>.tuple
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 4
    IfCount: 6
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7d5afa0>
    argNames:
    - self
    - fileobject
    - skip_unknown
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 365
    functionName: distlib.metadata.LegacyMetadata.write_file
    functionSourceFile: distlib.metadata
    functionUses: 4
    functionsReached:
    - res.append
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - distlib.metadata._best_version._has_marker
    - <builtin>.len
    - _ATTR2FIELD.get
    - distlib.metadata.LegacyMetadata._write_field
    - distlib.metadata.LegacyMetadata._default_value
    - values.replace
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata._version2fieldlist
    - possible_versions.remove
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - fileobj.write
    - <builtin>.int
    - name.replace
    - distlib.metadata._best_version
    - <builtin>.isinstance
    - fields.items
    - <builtin>.tuple
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: values.replace
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - key
    - value
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 8
    functionLinenumber: 401
    functionName: distlib.metadata.LegacyMetadata.update._set
    functionSourceFile: distlib.metadata
    functionUses: 28
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - distlib.version.VersionScheme.is_valid_version
    - v.strip
    - PEP440_VERSION_RE.match
    - distlib.metadata.LegacyMetadata._convert_name
    - p.zfill
    - logger.isEnabledFor
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.metadata.LegacyMetadata.set
    - _ATTR2FIELD.get
    - logger.warning
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version.Matcher.__init__
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - s.endswith
    - v.split
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - s.lower
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - name.replace
    - clist.append
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - distlib.version.VersionScheme.is_valid_constraint_list
    - distlib.version.VersionScheme.is_valid_matcher
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: kwargs.items
    functionSourceFile: <builtin>
    functionUses: 28
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: v.strip
    functionSourceFile: <builtin>
    functionUses: 33
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logger.isEnabledFor
    functionSourceFile: <builtin>
    functionUses: 33
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: v.split
    functionSourceFile: <builtin>
    functionUses: 34
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: res.append
    functionSourceFile: <builtin>
    functionUses: 32
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 5
    IfCount: 5
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d84ca5b0>
    argNames:
    - self
    - strict
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 486
    functionName: distlib.metadata.LegacyMetadata.check
    functionSourceFile: distlib.metadata
    functionUses: 26
    functionsReached:
    - res.append
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - distlib.metadata._best_version._has_marker
    - <builtin>.len
    - _ATTR2FIELD.get
    - distlib.version.get_scheme
    - distlib.metadata.LegacyMetadata._default_value
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - possible_versions.remove
    - missing.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - warnings.append
    - <builtin>.int
    - name.replace
    - distlib.metadata._best_version
    - <builtin>.isinstance
    - fields.items
    - <builtin>.any
    linkageType: pythonLinkage
    raised:
    - MetadataMissingError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: missing.append
    functionSourceFile: <builtin>
    functionUses: 28
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - value
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 512
    functionName: distlib.metadata.LegacyMetadata.check.are_valid_constraints
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version.Matcher.__init__
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - s.endswith
    - v.split
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - clist.append
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - distlib.version.VersionScheme.is_valid_matcher
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: warnings.append
    functionSourceFile: <builtin>
    functionUses: 27
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d837aa30>
    argNames:
    - self
    - skip_missing
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 528
    functionName: distlib.metadata.LegacyMetadata.todict
    functionSourceFile: distlib.metadata
    functionUses: 6
    functionsReached:
    - <builtin>.int
    - <builtin>.len
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - possible_versions.remove
    - distlib.metadata._best_version
    - fields.items
    - logger.debug
    - distlib.metadata._version2fieldlist
    - distlib.metadata._best_version._has_marker
    - <builtin>.tuple
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - requirements
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 551
    functionName: distlib.metadata.LegacyMetadata.add_requirements
    functionSourceFile: distlib.metadata
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 562
    functionName: distlib.metadata.LegacyMetadata.keys
    functionSourceFile: distlib.metadata
    functionUses: 3
    functionsReached:
    - distlib.metadata._version2fieldlist
    - <builtin>.list
    - <builtin>.tuple
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 565
    functionName: distlib.metadata.LegacyMetadata.__iter__
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - distlib.metadata.LegacyMetadata.keys
    - distlib.metadata._version2fieldlist
    - <builtin>.list
    - <builtin>.tuple
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 569
    functionName: distlib.metadata.LegacyMetadata.values
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - distlib.metadata.LegacyMetadata.keys
    - distlib.metadata._version2fieldlist
    - <builtin>.list
    - <builtin>.tuple
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 572
    functionName: distlib.metadata.LegacyMetadata.items
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - distlib.metadata.LegacyMetadata.keys
    - distlib.metadata._version2fieldlist
    - <builtin>.list
    - <builtin>.tuple
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 575
    functionName: distlib.metadata.LegacyMetadata.__repr__
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.metadata.Metadata
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - <builtin>.set
    - re.compile
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 2
    IfCount: 4
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - mapping
    - scheme
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 867
    functionName: distlib.metadata.Metadata._validate_mapping
    functionSourceFile: distlib.metadata
    functionUses: 26
    functionsReached:
    - distlib.metadata.Metadata._validate_value
    - pattern.match
    - missing.append
    - mapping.items
    - mapping.get
    linkageType: pythonLinkage
    raised:
    - MetadataMissingError
    - MetadataUnrecognizedVersionError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 881
    functionName: distlib.metadata.Metadata.validate
    functionSourceFile: distlib.metadata
    functionUses: 25
    functionsReached:
    - distlib.metadata.LegacyMetadata.check
    - pattern.match
    - res.append
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - distlib.metadata._best_version._has_marker
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - _ATTR2FIELD.get
    - logger.warning
    - distlib.version.get_scheme
    - distlib.metadata.LegacyMetadata._default_value
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - possible_versions.remove
    - mapping.items
    - missing.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - distlib.metadata.Metadata._validate_value
    - warnings.append
    - <builtin>.int
    - name.replace
    - <builtin>.isinstance
    - distlib.metadata._best_version
    - fields.items
    - <builtin>.any
    - mapping.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: json.loads
    functionSourceFile: json
    functionUses: 24
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 19
    ICount: 0
    IfCount: 13
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 695
    functionName: distlib.metadata.Metadata.__getattribute__
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - name.replace
    - _ATTR2FIELD.get
    - d.get
    - object.__getattribute__
    - distlib.metadata.LegacyMetadata._default_value
    - value.split
    - <builtin>.isinstance
    - <builtin>.object
    - res.append
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata._convert_name
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: object.__getattribute__
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: d.get
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 0
    IfCount: 3
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7bcd400>
    argNames:
    - self
    - key
    - value
    - scheme
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 737
    functionName: distlib.metadata.Metadata._validate_value
    functionSourceFile: distlib.metadata
    functionUses: 28
    functionsReached:
    - pattern.match
    linkageType: pythonLinkage
    raised:
    - MetadataInvalidError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pattern.match
    functionSourceFile: <builtin>
    functionUses: 29
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 16
    ICount: 2
    IfCount: 11
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - key
    - value
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 746
    functionName: distlib.metadata.Metadata.__setattr__
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - d.setdefault
    - object.__setattr__
    - object.__getattribute__
    - distlib.metadata.Metadata._validate_value
    - value.split
    - value.strip
    - <builtin>.isinstance
    - pattern.match
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: d.setdefault
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: value.strip
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 785
    functionName: distlib.metadata.Metadata.name_and_version
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - _FILESAFE.sub
    - distlib.metadata._get_name_and_version
    - version.replace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - value
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 800
    functionName: distlib.metadata.Metadata.provides
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - result.append
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: extras.remove
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 848
    functionName: distlib.metadata.Metadata.dictionary
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - <builtin>.int
    - <builtin>.len
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - distlib.metadata.Metadata._from_legacy
    - lmd.get
    - distlib.metadata._best_version
    - fields.items
    - possible_versions.remove
    - <builtin>.any
    - logger.debug
    - distlib.metadata._version2fieldlist
    - distlib.metadata._best_version._has_marker
    - <builtin>.tuple
    - distlib.metadata.LegacyMetadata.todict
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 0
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 896
    functionName: distlib.metadata.Metadata._from_legacy
    functionSourceFile: distlib.metadata
    functionUses: 4
    functionsReached:
    - <builtin>.int
    - <builtin>.len
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - lmd.get
    - distlib.metadata._best_version
    - possible_versions.remove
    - fields.items
    - <builtin>.any
    - logger.debug
    - distlib.metadata._version2fieldlist
    - distlib.metadata._best_version._has_marker
    - <builtin>.tuple
    - distlib.metadata.LegacyMetadata.todict
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - value
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 861
    functionName: distlib.metadata.Metadata.dependencies
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - keys.split
    - <builtin>.isinstance
    - distlib.util.extract_by_key
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: mapping.get
    functionSourceFile: <builtin>
    functionUses: 27
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: mapping.items
    functionSourceFile: <builtin>
    functionUses: 27
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 889
    functionName: distlib.metadata.Metadata.todict
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached:
    - <builtin>.int
    - keys.split
    - <builtin>.len
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - possible_versions.remove
    - <builtin>.isinstance
    - distlib.metadata._best_version
    - distlib.util.extract_by_key
    - fields.items
    - <builtin>.any
    - logger.debug
    - distlib.metadata._version2fieldlist
    - distlib.metadata._best_version._has_marker
    - <builtin>.tuple
    - distlib.metadata.LegacyMetadata.todict
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: lmd.get
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 0
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 11
    functionLinenumber: 936
    functionName: distlib.metadata.Metadata._to_legacy
    functionSourceFile: distlib.metadata
    functionUses: 3
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - distlib.version.VersionScheme.is_valid_version
    - v.strip
    - PEP440_VERSION_RE.match
    - <builtin>.set
    - fp.close
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.isEnabledFor
    - p.zfill
    - logger.debug
    - distlib.metadata._best_version._has_marker
    - distlib.metadata.LegacyMetadata.update
    - <builtin>.len
    - _VERSION_REPLACE.get
    - <builtin>.hasattr
    - distlib.metadata.LegacyMetadata.set
    - _ATTR2FIELD.get
    - logger.warning
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - distlib.metadata.LegacyMetadata.read_file
    - possible_versions.remove
    - reqts.add
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - local.split
    - <builtin>.sorted
    - distlib.version.Matcher.__init__
    - _SEMVER_RE.match
    - s.endswith
    - p.isdigit
    - email.message_from_file
    - v.split
    - result.append
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - parts.append
    - codecs.open
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.metadata.LegacyMetadata.read
    - s.lower
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - email.message_from_file.get_payload
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - name.replace
    - clist.append
    - e.get
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - kwargs.items
    - distlib.metadata.LegacyMetadata.update._set
    - m.groups
    - distlib.version.VersionScheme.is_valid_constraint_list
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - part.isdigit
    - <builtin>.isinstance
    - distlib.metadata.Metadata._to_legacy.process_entries
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - fields.items
    - email.message_from_file.get_all
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 2
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - entries
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 938
    functionName: distlib.metadata.Metadata._to_legacy.process_entries
    functionSourceFile: distlib.metadata
    functionUses: 4
    functionsReached:
    - <builtin>.set
    - reqts.add
    - e.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: e.get
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: reqts.add
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 5
    IfCount: 6
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7be55b0>
    - <ast.Constant object at 0x7ff8d7be50d0>
    - <ast.Constant object at 0x7ff8d7be5100>
    - <ast.Constant object at 0x7ff8d7be51c0>
    argNames:
    - self
    - path
    - fileobj
    - legacy
    - skip_unknown
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 12
    functionLinenumber: 987
    functionName: distlib.metadata.Metadata.write
    functionSourceFile: distlib.metadata
    functionUses: 2
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - p.isdigit
    - <builtin>.sorted
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - distlib.metadata.LegacyMetadata.read
    - s.strip
    - email.message_from_file.get_payload
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.metadata.Metadata._to_legacy
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - distlib.metadata.Metadata._to_legacy.process_entries
    - fields.items
    - distlib.version._pep_440_key
    - distlib.metadata.LegacyMetadata.update
    - distlib.version.is_semver
    - mapping.get
    - distlib.metadata.LegacyMetadata.write
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - <builtin>.set
    - res.append
    - p.zfill
    - distlib.metadata.Metadata._validate_mapping
    - distlib.metadata.LegacyMetadata.todict
    - <builtin>.len
    - distlib.metadata.LegacyMetadata._write_field
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - reqts.add
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - kwargs.items
    - m.groups
    - part.isdigit
    - distlib.metadata.Metadata._from_legacy
    - <builtin>.isinstance
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - distlib.metadata.LegacyMetadata.set
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.version.SemanticVersion.parse
    - fileobj.write
    - <builtin>.int
    - e.get
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - distlib.metadata.LegacyMetadata.write_file
    - lmd.get
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - values.replace
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - distlib.metadata._version2fieldlist
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - s.lower
    - clist.append
    - json.dump
    - distlib.metadata._best_version
    - distlib.version.Version.parse
    - _LINE_PREFIX_PRE_1_2.sub
    - <builtin>.tuple
    - <builtin>.any
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: json.dump
    functionSourceFile: json
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: run_requires.insert
    functionSourceFile: <builtin>
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1028
    functionName: distlib.metadata.Metadata.__repr__
    functionSourceFile: distlib.metadata
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: -1
    functionName: distlib.scripts
    functionSourceFile: distlib.scripts
    functionUses: 0
    functionsReached:
    - r.name.endswith
    - __name__.rsplit
    - _finder_registry.get
    - distlib.resources.finder
    - re.compile
    - logging.getLogger
    - <builtin>.getattr
    - <builtin>.type
    - <builtin>.__import__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: __name__.rsplit
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: r.name.endswith
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 0
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - executable
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 71
    functionName: distlib.scripts.enquote_executable
    functionSourceFile: distlib.scripts
    functionUses: 5
    functionsReached:
    - sys.executable.startswith
    - _executable.startswith
    - sys.executable.split
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.executable.startswith
    functionSourceFile: sys
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.executable.split
    functionSourceFile: sys
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _executable.startswith
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 6
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7e2ed90>
    - <ast.Constant object at 0x7ff8d7e2ee80>
    - <ast.Constant object at 0x7ff8d7e2e730>
    argNames:
    - self
    - source_dir
    - target_dir
    - add_launchers
    - dry_run
    - fileop
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 100
    functionName: distlib.scripts.ScriptMaker.__init__
    functionSourceFile: distlib.scripts
    functionUses: 0
    functionsReached:
    - <builtin>.set
    - distlib.util.FileOperator._init_record
    - distlib.util.FileOperator.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - executable
    - options
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 114
    functionName: distlib.scripts.ScriptMaker._get_alternate_executable
    functionSourceFile: distlib.scripts
    functionUses: 5
    functionsReached:
    - os.path.split
    - os.path.join
    - options.get
    - fn.replace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: options.get
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: fn.replace
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.scripts.ScriptMaker
    functionSourceFile: distlib.scripts
    functionUses: 0
    functionsReached:
    - sys.platform.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - executable
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 123
    functionName: distlib.scripts.ScriptMaker._is_shell
    functionSourceFile: distlib.scripts
    functionUses: 6
    functionsReached:
    - <builtin>.open
    - fp.read
    - logger.warning
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 0
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - executable
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 135
    functionName: distlib.scripts.ScriptMaker._fix_jython_executable
    functionSourceFile: distlib.scripts
    functionUses: 5
    functionsReached:
    - sys.executable.lower
    - logger.warning
    - java.lang.System.getProperty
    - <builtin>.open
    - distlib.scripts.ScriptMaker._is_shell
    - fp.read
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: java.lang.System.getProperty
    functionSourceFile: java
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.executable.lower
    functionSourceFile: sys
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - executable
    - post_interp
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 147
    functionName: distlib.scripts.ScriptMaker._build_shebang
    functionSourceFile: distlib.scripts
    functionUses: 5
    functionsReached:
    - <builtin>.getattr
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 2
    IfCount: 9
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d8531070>
    - <ast.Constant object at 0x7ff8d8531640>
    argNames:
    - self
    - encoding
    - post_interp
    - options
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 183
    functionName: distlib.scripts.ScriptMaker._get_shebang
    functionSourceFile: distlib.scripts
    functionUses: 4
    functionsReached:
    - os.path.split
    - os.fsdecode
    - sys.executable.startswith
    - _executable.startswith
    - <builtin>.open
    - shebang.decode
    - <builtin>.len
    - <builtin>.hasattr
    - sys.executable.lower
    - distlib.scripts.enquote_executable
    - logger.warning
    - sysconfig.get_path
    - <builtin>.getattr
    - distlib.scripts.ScriptMaker._get_alternate_executable
    - sys.platform.startswith
    - sysconfig.is_python_build
    - fn.replace
    - distlib.util.get_executable
    - distlib.util.in_venv
    - options.get
    - sys.executable.split
    - fp.read
    - os.path.join
    - sys.executable.encode
    - distlib.scripts.ScriptMaker._fix_jython_executable
    - java.lang.System.getProperty
    - sysconfig.get_config_var
    - <builtin>.isinstance
    - distlib.scripts.ScriptMaker._build_shebang
    - distlib.scripts.ScriptMaker._is_shell
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sysconfig.is_python_build
    functionSourceFile: sysconfig
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sysconfig.get_path
    functionSourceFile: sysconfig
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sysconfig.get_config_var
    functionSourceFile: sysconfig
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.executable.encode
    functionSourceFile: sys
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: shebang.decode
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - entry
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 249
    functionName: distlib.scripts.ScriptMaker._get_script_text
    functionSourceFile: distlib.scripts
    functionUses: 3
    functionsReached:
    - entry.suffix.split
    - <builtin>.dict
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: entry.suffix.split
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - exename
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 255
    functionName: distlib.scripts.ScriptMaker.get_manifest
    functionSourceFile: distlib.scripts
    functionUses: 0
    functionsReached:
    - os.path.basename
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.basename
    functionSourceFile: os
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 13
    IfCount: 9
    argCount: 6
    argDefaultValues: []
    argNames:
    - self
    - names
    - shebang
    - script_bytes
    - filenames
    - ext
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 259
    functionName: distlib.scripts.ScriptMaker._write_script
    functionSourceFile: distlib.scripts
    functionUses: 4
    functionsReached:
    - distlib.util.get_host_platform
    - time.gmtime
    - outname.endswith
    - zipfile.ZipInfo
    - rel_re.match
    - io.BytesIO
    - logger.debug
    - os.remove
    - <builtin>.hasattr
    - logger.warning
    - distlib.util.get_platform
    - os.uname
    - distlib.scripts.ScriptMaker._get_launcher
    - zipfile.ZipFile
    - osname.lower
    - _osx_support.get_platform_osx
    - os.rename
    - distutils.sysconfig.get_config_vars
    - re.compile
    - _aix_support.aix_platform
    - sys.version.lower
    - io.BytesIO.getvalue
    - <builtin>.int
    - os.path.join
    - os.path.exists
    - struct.calcsize
    - machine.replace
    - m.group
    - e.startswith
    - os.path.splitext
    - os.environ.get
    - filenames.append
    - sysconfig.get_config_vars
    - zf.writestr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - kind
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 404
    functionName: distlib.scripts.ScriptMaker._get_launcher
    functionSourceFile: distlib.scripts
    functionUses: 5
    functionsReached:
    - distlib.util.get_host_platform
    - <builtin>.int
    - machine.replace
    - m.group
    - struct.calcsize
    - distutils.sysconfig.get_config_vars
    - distlib.util.get_platform
    - os.uname
    - re.compile
    - _aix_support.aix_platform
    - rel_re.match
    - sysconfig.get_config_vars
    - os.environ.get
    - osname.lower
    - sys.version.lower
    - _osx_support.get_platform_osx
    - <builtin>.hasattr
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zipfile.ZipInfo
    functionSourceFile: zipfile
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zf.writestr
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: io.BytesIO.getvalue
    functionSourceFile: io
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.path.splitext
    functionSourceFile: os
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: e.startswith
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.rename
    functionSourceFile: os
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: outname.endswith
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: filenames.append
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 3
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 316
    functionName: distlib.scripts.ScriptMaker.get_script_filenames
    functionSourceFile: distlib.scripts
    functionUses: 3
    functionsReached:
    - <builtin>.set
    - result.add
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7cde0a0>
    argNames:
    - self
    - entry
    - filenames
    - options
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 326
    functionName: distlib.scripts.ScriptMaker._make_script
    functionSourceFile: distlib.scripts
    functionUses: 2
    functionsReached:
    - distlib.scripts.ScriptMaker._get_shebang
    - distlib.util.get_host_platform
    - os.path.split
    - time.gmtime
    - os.fsdecode
    - sys.executable.startswith
    - outname.endswith
    - entry.suffix.split
    - zipfile.ZipInfo
    - result.add
    - _executable.startswith
    - <builtin>.set
    - rel_re.match
    - <builtin>.open
    - io.BytesIO
    - shebang.decode
    - logger.debug
    - os.remove
    - <builtin>.len
    - <builtin>.hasattr
    - sys.executable.lower
    - distlib.scripts.enquote_executable
    - logger.warning
    - distlib.util.get_platform
    - os.uname
    - sysconfig.get_path
    - distlib.scripts.ScriptMaker._get_launcher
    - zipfile.ZipFile
    - <builtin>.getattr
    - args.encode
    - osname.lower
    - distlib.scripts.ScriptMaker._get_alternate_executable
    - _osx_support.get_platform_osx
    - sys.platform.startswith
    - sysconfig.is_python_build
    - os.rename
    - distutils.sysconfig.get_config_vars
    - re.compile
    - fn.replace
    - distlib.util.get_executable
    - _aix_support.aix_platform
    - distlib.util.in_venv
    - distlib.scripts.ScriptMaker._get_script_text
    - options.get
    - sys.version.lower
    - sys.executable.split
    - <builtin>.dict
    - io.BytesIO.getvalue
    - fp.read
    - <builtin>.int
    - os.path.join
    - os.path.exists
    - struct.calcsize
    - machine.replace
    - sys.executable.encode
    - m.group
    - distlib.scripts.ScriptMaker._write_script
    - distlib.scripts.ScriptMaker._fix_jython_executable
    - e.startswith
    - java.lang.System.getProperty
    - distlib.scripts.ScriptMaker.get_script_filenames
    - sysconfig.get_config_var
    - os.path.splitext
    - <builtin>.isinstance
    - distlib.scripts.ScriptMaker._build_shebang
    - distlib.scripts.ScriptMaker._is_shell
    - os.environ.get
    - filenames.append
    - sysconfig.get_config_vars
    - zf.writestr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: args.encode
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 15
    ICount: 10
    IfCount: 10
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - script
    - filenames
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 342
    functionName: distlib.scripts.ScriptMaker._copy_script
    functionSourceFile: distlib.scripts
    functionUses: 2
    functionsReached:
    - distlib.scripts.ScriptMaker._get_shebang
    - distlib.util.get_host_platform
    - os.path.split
    - time.gmtime
    - os.fsdecode
    - sys.executable.startswith
    - outname.endswith
    - zipfile.ZipInfo
    - tokenize.detect_encoding
    - _executable.startswith
    - <builtin>.open
    - rel_re.match
    - io.BytesIO
    - shebang.decode
    - logger.debug
    - f.read
    - os.remove
    - <builtin>.len
    - <builtin>.hasattr
    - sys.executable.lower
    - f.seek
    - distlib.scripts.enquote_executable
    - logger.warning
    - distlib.util.get_platform
    - os.uname
    - sysconfig.get_path
    - distlib.scripts.ScriptMaker._get_launcher
    - zipfile.ZipFile
    - <builtin>.getattr
    - os.path.basename
    - first_line.replace
    - osname.lower
    - distlib.scripts.ScriptMaker._get_alternate_executable
    - pathname.split
    - _osx_support.get_platform_osx
    - sys.platform.startswith
    - distlib.util.convert_path
    - f.readline
    - f.close
    - sysconfig.is_python_build
    - os.rename
    - distutils.sysconfig.get_config_vars
    - re.compile
    - fn.replace
    - logger.info
    - distlib.util.get_executable
    - _aix_support.aix_platform
    - distlib.util.in_venv
    - options.get
    - sys.version.lower
    - match.group
    - sys.executable.split
    - io.BytesIO.getvalue
    - fp.read
    - <builtin>.int
    - os.path.join
    - os.path.exists
    - struct.calcsize
    - FIRST_LINE_RE.match
    - sys.executable.encode
    - machine.replace
    - distlib.scripts.ScriptMaker._write_script
    - distlib.scripts.ScriptMaker._fix_jython_executable
    - e.startswith
    - m.group
    - java.lang.System.getProperty
    - sysconfig.get_config_var
    - os.path.splitext
    - <builtin>.isinstance
    - distlib.scripts.ScriptMaker._build_shebang
    - distlib.scripts.ScriptMaker._is_shell
    - os.environ.get
    - filenames.append
    - sysconfig.get_config_vars
    - zf.writestr
    - paths.remove
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: f.readline
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: first_line.replace
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: FIRST_LINE_RE.match
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: match.group
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: tokenize.detect_encoding
    functionSourceFile: tokenize
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: f.seek
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - value
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 397
    functionName: distlib.scripts.ScriptMaker.dry_run
    functionSourceFile: distlib.scripts
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: struct.calcsize
    functionSourceFile: struct
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7d9b670>
    argNames:
    - self
    - specification
    - options
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 419
    functionName: distlib.scripts.ScriptMaker.make
    functionSourceFile: distlib.scripts
    functionUses: 1
    functionsReached:
    - outname.endswith
    - entry.suffix.split
    - _executable.startswith
    - rel_re.match
    - logger.debug
    - <builtin>.hasattr
    - f.seek
    - distlib.util.get_platform
    - distlib.scripts.ScriptMaker._get_alternate_executable
    - pathname.split
    - _osx_support.get_platform_osx
    - sysconfig.is_python_build
    - options.get
    - sys.version.lower
    - <builtin>.dict
    - fp.read
    - os.path.exists
    - distlib.scripts.ScriptMaker._fix_jython_executable
    - distlib.scripts.ScriptMaker.get_script_filenames
    - distlib.scripts.ScriptMaker._is_shell
    - filenames.append
    - os.path.basename
    - distlib.scripts.ScriptMaker._get_shebang
    - os.path.split
    - time.gmtime
    - os.fsdecode
    - sys.executable.startswith
    - tokenize.detect_encoding
    - <builtin>.set
    - io.BytesIO
    - shebang.decode
    - f.read
    - os.remove
    - <builtin>.len
    - path.count
    - zipfile.ZipFile
    - distlib.util.convert_path
    - f.readline
    - f.close
    - re.compile
    - distlib.util.in_venv
    - distlib.scripts.ScriptMaker._get_script_text
    - distlib.scripts.ScriptMaker._make_script
    - io.BytesIO.getvalue
    - os.path.join
    - java.lang.System.getProperty
    - sysconfig.get_config_var
    - os.path.splitext
    - <builtin>.isinstance
    - os.environ.get
    - distlib.util.ExportEntry.__init__
    - sysconfig.get_config_vars
    - paths.remove
    - flags.split
    - zipfile.ZipInfo
    - result.add
    - f.strip
    - sys.executable.lower
    - logger.warning
    - sysconfig.get_path
    - distlib.scripts.ScriptMaker._get_launcher
    - <builtin>.getattr
    - first_line.replace
    - os.rename
    - distutils.sysconfig.get_config_vars
    - fn.replace
    - logger.info
    - _aix_support.aix_platform
    - distlib.scripts.ScriptMaker._copy_script
    - ENTRY_RE.search
    - sys.executable.split
    - <builtin>.int
    - m.group
    - struct.calcsize
    - FIRST_LINE_RE.match
    - distlib.util.get_export_entry
    - distlib.util.get_host_platform
    - m.groupdict
    - <builtin>.open
    - distlib.scripts.enquote_executable
    - os.uname
    - args.encode
    - osname.lower
    - sys.platform.startswith
    - distlib.util.get_executable
    - path.split
    - match.group
    - machine.replace
    - sys.executable.encode
    - distlib.scripts.ScriptMaker._write_script
    - e.startswith
    - distlib.scripts.ScriptMaker._build_shebang
    - zf.writestr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7d9b640>
    argNames:
    - self
    - specifications
    - options
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 438
    functionName: distlib.scripts.ScriptMaker.make_multiple
    functionSourceFile: distlib.scripts
    functionUses: 0
    functionsReached:
    - outname.endswith
    - entry.suffix.split
    - _executable.startswith
    - rel_re.match
    - logger.debug
    - <builtin>.hasattr
    - f.seek
    - distlib.util.get_platform
    - distlib.scripts.ScriptMaker._get_alternate_executable
    - pathname.split
    - _osx_support.get_platform_osx
    - sysconfig.is_python_build
    - options.get
    - sys.version.lower
    - <builtin>.dict
    - fp.read
    - os.path.exists
    - distlib.scripts.ScriptMaker._fix_jython_executable
    - distlib.scripts.ScriptMaker.get_script_filenames
    - distlib.scripts.ScriptMaker._is_shell
    - filenames.append
    - os.path.basename
    - distlib.scripts.ScriptMaker._get_shebang
    - os.path.split
    - time.gmtime
    - os.fsdecode
    - sys.executable.startswith
    - tokenize.detect_encoding
    - <builtin>.set
    - io.BytesIO
    - shebang.decode
    - f.read
    - os.remove
    - <builtin>.len
    - path.count
    - zipfile.ZipFile
    - distlib.util.convert_path
    - f.readline
    - f.close
    - re.compile
    - distlib.util.in_venv
    - distlib.scripts.ScriptMaker._get_script_text
    - distlib.scripts.ScriptMaker._make_script
    - io.BytesIO.getvalue
    - os.path.join
    - java.lang.System.getProperty
    - sysconfig.get_config_var
    - os.path.splitext
    - <builtin>.isinstance
    - os.environ.get
    - distlib.util.ExportEntry.__init__
    - sysconfig.get_config_vars
    - paths.remove
    - flags.split
    - zipfile.ZipInfo
    - result.add
    - f.strip
    - sys.executable.lower
    - logger.warning
    - sysconfig.get_path
    - distlib.scripts.ScriptMaker._get_launcher
    - <builtin>.getattr
    - first_line.replace
    - os.rename
    - distutils.sysconfig.get_config_vars
    - fn.replace
    - logger.info
    - _aix_support.aix_platform
    - distlib.scripts.ScriptMaker._copy_script
    - filenames.extend
    - ENTRY_RE.search
    - sys.executable.split
    - <builtin>.int
    - m.group
    - struct.calcsize
    - FIRST_LINE_RE.match
    - distlib.util.get_export_entry
    - distlib.util.get_host_platform
    - m.groupdict
    - <builtin>.open
    - distlib.scripts.enquote_executable
    - os.uname
    - args.encode
    - osname.lower
    - sys.platform.startswith
    - distlib.util.get_executable
    - path.split
    - match.group
    - distlib.scripts.ScriptMaker.make
    - machine.replace
    - sys.executable.encode
    - distlib.scripts.ScriptMaker._write_script
    - e.startswith
    - distlib.scripts.ScriptMaker._build_shebang
    - zf.writestr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: filenames.extend
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: -1
    functionName: distlib.wheel
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached:
    - distlib.util.get_host_platform
    - distlib.wheel.compatible_tags
    - <builtin>.tuple
    - platform.libc_ver
    - <builtin>.set
    - rel_re.match
    - imp.get_suffixes
    - <builtin>.str
    - <builtin>.len
    - <builtin>.hasattr
    - suffix.startswith
    - <builtin>.range
    - distlib.util.get_platform
    - os.uname
    - suffix.split
    - distlib.wheel.compatible_tags._Version.__init__
    - s.isdigit
    - re.match
    - osname.lower
    - _osx_support.get_platform_osx
    - sys.platform.startswith
    - distlib.wheel._get_suffixes
    - abis.insert
    - arch.replace
    - _aix_support.aix_platform.replace
    - distutils.sysconfig.get_config_vars
    - result.append
    - ABI.startswith
    - re.compile
    - parts.append
    - logging.getLogger
    - <builtin>.enumerate
    - _aix_support.aix_platform
    - sys.platform.replace
    - sys.version.lower
    - add_abis.append
    - <builtin>.int
    - machine.replace
    - m.group
    - m.groups
    - matches.append
    - sysconfig.get_config_var
    - distlib.wheel.Mounter.__init__
    - ABI.replace
    - distlib.wheel._get_glibc_version
    - abis.sort
    - os.environ.get
    - sysconfig.get_config_vars
    - <builtin>.bool
    - distlib.wheel._derive_abi
    - abis.append
    - arches.append
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.platform.replace
    functionSourceFile: sys
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _aix_support.aix_platform.replace
    functionSourceFile: _aix_support
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ABI.startswith
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ABI.replace
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 12
    ICount: 4
    IfCount: 8
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 58
    functionName: distlib.wheel._derive_abi
    functionSourceFile: distlib.wheel
    functionUses: 1
    functionsReached:
    - sysconfig.get_config_var
    - parts.append
    - <builtin>.bool
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.bool
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.wheel.<lambda1>
    functionSourceFile: distlib.wheel
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.wheel.<lambda2>
    functionSourceFile: distlib.wheel
    functionUses: 3
    functionsReached:
    - o.replace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: o.replace
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 116
    functionName: distlib.wheel._get_suffixes
    functionSourceFile: distlib.wheel
    functionUses: 2
    functionsReached:
    - imp.get_suffixes
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: imp.get_suffixes
    functionSourceFile: imp
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - name
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 123
    functionName: distlib.wheel._load_dynamic
    functionSourceFile: distlib.wheel
    functionUses: 1
    functionsReached:
    - imp.load_dynamic
    - spec.loader.exec_module
    - importlib.util.spec_from_file_location
    - importlib.util.module_from_spec
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: imp.load_dynamic
    functionSourceFile: imp
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: importlib.util.spec_from_file_location
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: importlib.util.module_from_spec
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: spec.loader.exec_module
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 137
    functionName: distlib.wheel.Mounter.__init__
    functionSourceFile: distlib.wheel
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - pathname
    - extensions
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 141
    functionName: distlib.wheel.Mounter.add
    functionSourceFile: distlib.wheel
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - pathname
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 145
    functionName: distlib.wheel.Mounter.remove
    functionSourceFile: distlib.wheel
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d79033a0>
    argNames:
    - self
    - fullname
    - path
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 151
    functionName: distlib.wheel.Mounter.find_module
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 0
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - fullname
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 158
    functionName: distlib.wheel.Mounter.load_module
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached:
    - fullname.rsplit
    - importlib.util.module_from_spec
    - imp.load_dynamic
    - importlib.util.spec_from_file_location
    - distlib.wheel._load_dynamic
    - spec.loader.exec_module
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - ImportError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: fullname.rsplit
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7815d60>
    - <ast.Constant object at 0x7ff8d78155b0>
    - <ast.Constant object at 0x7ff8d7815e80>
    argNames:
    - self
    - filename
    - sign
    - verify
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 183
    functionName: distlib.wheel.Wheel.__init__
    functionSourceFile: distlib.wheel
    functionUses: 9
    functionsReached:
    - os.path.split
    - os.getcwd
    - FILENAME_RE.match
    - m.groupdict
    - os.path.abspath
    - NAME_VERSION_RE.match
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: FILENAME_RE.match
    functionSourceFile: <builtin>
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 225
    functionName: distlib.wheel.Wheel.filename
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 241
    functionName: distlib.wheel.Wheel.exists
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached:
    - os.path.join
    - os.path.isfile
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 246
    functionName: distlib.wheel.Wheel.tags
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.wheel.Wheel
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached:
    - distlib.util.cached_property
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 12
    functionLinenumber: 253
    functionName: distlib.wheel.Wheel.metadata
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.isEnabledFor
    - logger.debug
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - p.isdigit
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - StringIO.StringIO.read
    - io.StringIO
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - s.strip
    - <builtin>.dict
    - email.message_from_file.get_payload
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - <builtin>.any
    - distlib.version._pep_440_key
    - distlib.metadata.LegacyMetadata.update
    - distlib.version.is_semver
    - mapping.get
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - res.append
    - p.zfill
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - other.keys
    - zipfile.ZipFile
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - os.path.join
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - posixpath.join
    - StringIO.StringIO
    - <builtin>.tuple
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - distlib.metadata.LegacyMetadata.set
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - <builtin>.open
    - zf.open
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - codecs.getreader
    - v.split
    - s.lower
    - clist.append
    - data.decode
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - _LINE_PREFIX_1_2.sub
    - distlib.wheel.Wheel.get_wheel_metadata
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - zf
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 284
    functionName: distlib.wheel.Wheel.get_wheel_metadata
    functionSourceFile: distlib.wheel
    functionUses: 2
    functionsReached:
    - posixpath.join
    - codecs.getreader
    - email.message_from_file
    - zf.open
    - <builtin>.dict
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zf.open
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 294
    functionName: distlib.wheel.Wheel.info
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached:
    - os.path.join
    - posixpath.join
    - codecs.getreader
    - email.message_from_file
    - zipfile.ZipFile
    - <builtin>.dict
    - zf.open
    - distlib.wheel.Wheel.get_wheel_metadata
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 0
    IfCount: 5
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 300
    functionName: distlib.wheel.Wheel.process_shebang
    functionSourceFile: distlib.wheel
    functionUses: 1
    functionsReached:
    - SHEBANG_RE.match
    - SHEBANG_DETAIL_RE.match
    - m.groups
    - m.end
    - shebang.lower
    - data.find
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: SHEBANG_RE.match
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: shebang.lower
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: SHEBANG_DETAIL_RE.match
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: data.find
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d852c100>
    argNames:
    - self
    - data
    - hash_kind
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 330
    functionName: distlib.wheel.Wheel.get_hash
    functionSourceFile: distlib.wheel
    functionUses: 5
    functionsReached:
    - <builtin>.getattr
    - base64.urlsafe_b64encode
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - records
    - record_path
    - archive_record_path
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 341
    functionName: distlib.wheel.Wheel.write_record
    functionSourceFile: distlib.wheel
    functionUses: 3
    functionsReached:
    - csv.writer
    - <builtin>.list
    - records.append
    - writer.writerow
    - <builtin>.open
    - distlib.util._csv_open
    - distlib.util.CSVWriter.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: records.append
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - info
    - libdir
    - archive_paths
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 348
    functionName: distlib.wheel.Wheel.write_records
    functionSourceFile: distlib.wheel
    functionUses: 2
    functionsReached:
    - distlib.wheel.Wheel.write_record
    - os.path.join
    - <builtin>.list
    - records.append
    - csv.writer
    - os.path.getsize
    - archive_paths.append
    - distlib.wheel.<lambda1>
    - distlib.wheel.<lambda2>
    - writer.writerow
    - <builtin>.open
    - <builtin>.getattr
    - distlib.wheel.Wheel.get_hash
    - f.read
    - distlib.util.CSVWriter.__init__
    - distlib.util._csv_open
    - base64.urlsafe_b64encode
    - o.replace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: archive_paths.append
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - pathname
    - archive_paths
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 364
    functionName: distlib.wheel.Wheel.build_zip
    functionSourceFile: distlib.wheel
    functionUses: 2
    functionsReached:
    - zipfile.ZipFile
    - zf.write
    - logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 15
    ICount: 11
    IfCount: 10
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7bc0af0>
    - <ast.Constant object at 0x7ff8d7bc0130>
    argNames:
    - self
    - paths
    - tags
    - wheel_version
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 370
    functionName: distlib.wheel.Wheel.build
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached:
    - distlib.wheel.Wheel.write_record
    - distlib.wheel.Wheel.build_zip
    - os.fsdecode
    - archive_paths.append
    - distlib.wheel.<lambda2>
    - <builtin>.open
    - os.path.isdir
    - logger.debug
    - f.read
    - o.replace
    - distlib.util.CSVWriter.__init__
    - <builtin>.list
    - os.walk
    - SHEBANG_DETAIL_RE.match
    - os.path.normpath
    - os.path.getsize
    - zipfile.ZipFile
    - m.end
    - itertools.ifilter
    - writer.writerow
    - <builtin>.getattr
    - tags.get
    - distlib.wheel.Wheel.get_hash
    - shebang.lower
    - data.find
    - base64.urlsafe_b64encode
    - <builtin>.sorted
    - sys.executable.endswith
    - wheel_metadata.append
    - SHEBANG_RE.match
    - distlib.wheel.<lambda1>
    - <builtin>.enumerate
    - distlib.util._csv_open
    - distlib.wheel.Wheel.write_records
    - os.path.join
    - f.write
    - zf.write
    - distlib.wheel.Wheel.process_shebang
    - records.append
    - csv.writer
    - distlib.compat.filter
    - m.groups
    - os.path.relpath
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.wheel.Wheel.build.<lambda1>
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.compat.filter
    functionSourceFile: distlib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: itertools.ifilter
    functionSourceFile: itertools
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: tags.get
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.executable.endswith
    functionSourceFile: sys
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: wheel_metadata.append
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - t
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 473
    functionName: distlib.wheel.Wheel.build.sorter
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached:
    - ap.count
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ap.count
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - arcname
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 490
    functionName: distlib.wheel.Wheel.skip_entry
    functionSourceFile: distlib.wheel
    functionUses: 2
    functionsReached:
    - arcname.endswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: arcname.endswith
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 25
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 13
    EdgeCount: 36
    ICount: 21
    IfCount: 25
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - paths
    - maker
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 13
    functionLinenumber: 506
    functionName: distlib.wheel.Wheel.install
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - console_scripts.items
    - distlib.database.InstalledDistribution.write_installed_files
    - result.pop
    - path.startswith
    - StringIO.StringIO.close
    - cp.items
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - distlib.util.CSVWriter.__init__
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - contextlib.closing
    - os.path.getsize
    - io.StringIO.close
    - writer.writerow
    - hashlib.md5
    - outfiles.append
    - pathname.split
    - p.isdigit
    - distlib.util.FileOperator.newer
    - base64.urlsafe_b64encode
    - <builtin>.sorted
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - distlib.database.InstalledDistribution.get_distinfo_file
    - StringIO.StringIO.read
    - distlib.util.read_exports.read_stream
    - io.StringIO
    - io.StringIO.read
    - path.find
    - configparser.ConfigParser
    - py_compile.compile
    - distlib.util.FileOperator.ensure_dir
    - distlib.metadata.LegacyMetadata.read
    - path.endswith
    - <builtin>.dict
    - fp.read
    - os.rmdir
    - email.message_from_file.get_payload
    - s.strip
    - os.path.exists
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - u_arcname.endswith
    - distlib.version.VersionScheme.is_valid_matcher
    - p.startswith
    - fields.items
    - distlib.metadata.LegacyMetadata.update
    - distlib.version._pep_440_key
    - distlib.version.is_semver
    - mapping.get
    - os.path.basename
    - os.path.split
    - distlib.version.NormalizedVersion.parse
    - distlib.wheel.Wheel.skip_entry
    - v.strip
    - outfile.endswith
    - <builtin>.set
    - base.startswith
    - res.append
    - p.zfill
    - f.read
    - os.remove
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - logger.exception
    - path.count
    - zf.infolist
    - other.keys
    - zipfile.ZipFile
    - cp.sections
    - distlib.version._semantic_key.make_tuple
    - distlib.wheel.Wheel.get_hash
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - distlib.util.convert_path
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - distlib.database.BaseInstalledDistribution.get_hash
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - distlib.util.FileOperator.<lambda1>
    - os.path.join
    - kwargs.items
    - m.groups
    - part.isdigit
    - shutil.copyfileobj
    - <builtin>.isinstance
    - cp.readfp
    - distlib.util.ExportEntry.__init__
    - commands.get
    - paths.remove
    - posixpath.join
    - outfiles.extend
    - _finder_registry.get
    - flags.split
    - distlib.util.FileOperator.copy_stream
    - outstream.close
    - finder.find
    - StringIO.StringIO
    - f.strip
    - PEP440_VERSION_RE.match
    - u_arcname.split
    - importlib.util.cache_from_source
    - <builtin>.str
    - distlib.metadata._best_version._has_marker
    - distlib.metadata.LegacyMetadata.set
    - logger.warning
    - entries.items
    - distlib.util.CSVReader.__init__
    - textwrap.dedent
    - distlib.metadata.LegacyMetadata._default_value
    - record_path.startswith
    - <builtin>.getattr
    - os.path.abspath
    - io.StringIO.seek
    - os.stat
    - lines.append
    - kwargs.get
    - possible_versions.remove
    - local.split
    - r.as_stream
    - distlib.resources.finder_for_path
    - <builtin>.super
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - logger.info
    - data.splitlines
    - pkgutil.get_importer
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.database.InstalledDistribution.__init__
    - ENTRY_RE.search
    - distlib.util.FileOperator.rollback
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - f.write
    - distlib.metadata.LegacyMetadata.update._set
    - maker.make
    - distlib.version.VersionScheme.is_valid_constraint_list
    - distlib.util.FileOperator.set_mode
    - email.message_from_file.get_all
    - paths.get
    - <builtin>.type
    - arcname.decode
    - arcname.endswith
    - distlib.util.get_export_entry
    - distlib.util.FileOperator.__init__
    - os.chmod
    - distlib.util.FileOperator.record_as_written
    - m.groupdict
    - <builtin>.open
    - os.path.isdir
    - csv.reader
    - zf.open
    - distlib.database._Cache.add
    - _VERSION_REPLACE.get
    - <builtin>.list
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - gui_scripts.items
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - result.items
    - missing.append
    - distlib.version.Matcher.__init__
    - tempfile.mkdtemp
    - s.endswith
    - codecs.getreader
    - shutil.rmtree
    - v.split
    - os.listdir
    - cp.read_file
    - distlib.util.FileOperator._init_record
    - path.split
    - s.lower
    - distlib.util._csv_open
    - StringIO.StringIO.seek
    - clist.append
    - csv.writer
    - os.path.dirname
    - json.load
    - distlib.util.read_exports
    - distlib.database.InstalledDistribution.write_shared_locations
    - data.decode
    - distlib.util.FileOperator.byte_compile
    - os.path.relpath
    - sys.path_importer_cache.get
    - os.mkdir
    - u_arcname.startswith
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.metadata.Metadata.__init__
    - distlib.metadata._best_version
    - distlib.version.Version.parse
    - bf.read
    - <builtin>.tuple
    - <builtin>.any
    linkageType: pythonLinkage
    raised:
    - DistlibException
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zf.infolist
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: arcname.decode
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: bf.read
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: u_arcname.startswith
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: u_arcname.endswith
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: u_arcname.split
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: outfiles.append
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: outfile.endswith
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: maker.make
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: outfiles.extend
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: commands.get
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: console_scripts.items
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: gui_scripts.items
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 739
    functionName: distlib.wheel.Wheel._get_dylib_cache
    functionSourceFile: distlib.wheel
    functionUses: 2
    functionsReached:
    - distlib.util.Cache.__init__
    - os.path.join
    - distlib.util.get_cache_base
    - logger.warning
    - os.makedirs
    - os.path.normpath
    - os.path.isdir
    - os.path.abspath
    - os.stat
    - tempfile.mkdtemp
    - os.path.expanduser
    - os.path.expandvars
    - <builtin>.str
    - os.access
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 3
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 747
    functionName: distlib.wheel.Wheel._get_extensions
    functionSourceFile: distlib.wheel
    functionUses: 1
    functionsReached:
    - distlib.util.Cache.__init__
    - posixpath.join
    - os.makedirs
    - distlib.util.Cache.prefix_to_dir
    - os.path.isdir
    - datetime.datetime
    - <builtin>.str
    - zf.extract
    - zf.open
    - distlib.util.get_cache_base
    - logger.warning
    - d.replace
    - os.path.normpath
    - zipfile.ZipFile
    - os.path.abspath
    - os.stat
    - pathname.split
    - os.path.expanduser
    - p.replace
    - distlib.util.convert_path
    - tempfile.mkdtemp
    - codecs.getreader
    - distlib.util.path_to_cache_dir
    - result.append
    - os.path.splitdrive
    - zf.getinfo
    - os.path.expandvars
    - os.access
    - distlib.wheel.Wheel._get_dylib_cache
    - os.path.join
    - os.path.exists
    - json.load
    - extensions.items
    - datetime.datetime.fromtimestamp
    - paths.remove
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: extensions.items
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: datetime.datetime.fromtimestamp
    functionSourceFile: datetime
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zf.getinfo
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: datetime.datetime
    functionSourceFile: datetime
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zf.extract
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 781
    functionName: distlib.wheel.Wheel.is_compatible
    functionSourceFile: distlib.wheel
    functionUses: 1
    functionsReached:
    - distlib.wheel.Wheel.is_compatible
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 787
    functionName: distlib.wheel.Wheel.is_mountable
    functionSourceFile: distlib.wheel
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 5
    IfCount: 6
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7cde7c0>
    argNames:
    - self
    - append
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 793
    functionName: distlib.wheel.Wheel.mount
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached:
    - distlib.util.Cache.__init__
    - distlib.wheel.Wheel.is_mountable
    - posixpath.join
    - os.makedirs
    - distlib.wheel.Mounter.add
    - sys.meta_path.append
    - distlib.util.Cache.prefix_to_dir
    - os.path.isdir
    - datetime.datetime
    - logger.debug
    - <builtin>.str
    - zf.extract
    - zf.open
    - sys.path.append
    - distlib.util.get_cache_base
    - logger.warning
    - d.replace
    - os.path.normpath
    - zipfile.ZipFile
    - os.path.abspath
    - os.stat
    - pathname.split
    - os.path.expanduser
    - p.replace
    - distlib.util.convert_path
    - tempfile.mkdtemp
    - codecs.getreader
    - distlib.util.path_to_cache_dir
    - result.append
    - os.path.splitdrive
    - zf.getinfo
    - os.path.expandvars
    - sys.path.insert
    - os.access
    - distlib.wheel.Wheel._get_dylib_cache
    - os.path.join
    - os.path.exists
    - json.load
    - extensions.items
    - distlib.wheel.Wheel.is_compatible
    - datetime.datetime.fromtimestamp
    - distlib.wheel.Wheel._get_extensions
    - paths.remove
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.path.append
    functionSourceFile: sys
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.path.insert
    functionSourceFile: sys
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.meta_path.append
    functionSourceFile: sys
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 4
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 814
    functionName: distlib.wheel.Wheel.unmount
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached:
    - os.path.join
    - distlib.wheel.Mounter.remove
    - os.path.abspath
    - logger.debug
    - sys.path.remove
    - sys.meta_path.remove
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.path.remove
    functionSourceFile: sys
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.meta_path.remove
    functionSourceFile: sys
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 1
    IfCount: 6
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 826
    functionName: distlib.wheel.Wheel.verify
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached:
    - posixpath.join
    - distlib.wheel.Wheel.skip_entry
    - u_arcname.split
    - <builtin>.open
    - csv.reader
    - <builtin>.str
    - zf.open
    - zf.infolist
    - distlib.util.CSVReader.__init__
    - zipfile.ZipFile
    - <builtin>.getattr
    - distlib.wheel.Wheel.get_hash
    - base64.urlsafe_b64encode
    - codecs.getreader
    - email.message_from_file
    - distlib.util._csv_open
    - os.path.join
    - <builtin>.isinstance
    - bf.read
    - arcname.decode
    - arcname.endswith
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 12
    ICount: 7
    IfCount: 8
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d8531d90>
    argNames:
    - self
    - modifier
    - dest_dir
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 13
    functionLinenumber: 882
    functionName: distlib.wheel.Wheel.update
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - archive_paths.append
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - fp.close
    - pattern.match
    - json.loads
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - distlib.util.CSVWriter.__init__
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - os.path.getsize
    - writer.writerow
    - pathname.split
    - p.isdigit
    - base64.urlsafe_b64encode
    - <builtin>.sorted
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - distlib.wheel.<lambda1>
    - StringIO.StringIO.read
    - io.StringIO
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - path.endswith
    - s.strip
    - distlib.wheel.Wheel.write_records
    - email.message_from_file.get_payload
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.metadata.Metadata._to_legacy
    - distlib.version._legacy_key.get_parts
    - distlib.wheel.Wheel.update.update_version
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - distlib.metadata.Metadata._to_legacy.process_entries
    - fields.items
    - distlib.metadata.LegacyMetadata.update
    - distlib.version._pep_440_key
    - distlib.version.is_semver
    - mapping.get
    - distlib.metadata.LegacyMetadata.write
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - <builtin>.set
    - res.append
    - p.zfill
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.metadata.LegacyMetadata.todict
    - distlib.metadata.LegacyMetadata._write_field
    - zf.infolist
    - distlib.util.tempdir
    - other.keys
    - zipfile.ZipFile
    - distlib.version._semantic_key.make_tuple
    - distlib.wheel.Wheel.get_hash
    - mapping.items
    - distlib.version._semantic_key
    - reqts.add
    - _VERSION_PART.split
    - distlib.util.convert_path
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - path_map.items
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - os.path.join
    - kwargs.items
    - m.groups
    - distlib.wheel.Wheel.update.get_version
    - part.isdigit
    - distlib.metadata.Metadata._from_legacy
    - <builtin>.isinstance
    - paths.remove
    - distlib.wheel.Wheel.write_record
    - distlib.wheel.Wheel.build_zip
    - posixpath.join
    - StringIO.StringIO
    - PEP440_VERSION_RE.match
    - <builtin>.str
    - zf.extract
    - distlib.metadata._best_version._has_marker
    - o.replace
    - distlib.metadata.LegacyMetadata.set
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - <builtin>.getattr
    - possible_versions.remove
    - local.split
    - shutil.copyfile
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.version.SemanticVersion.parse
    - fileobj.write
    - <builtin>.int
    - zf.write
    - e.get
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - version.find
    - arcname.decode
    - distlib.metadata.LegacyMetadata.write_file
    - distlib.wheel.<lambda2>
    - <builtin>.open
    - os.path.isdir
    - lmd.get
    - _VERSION_REPLACE.get
    - <builtin>.list
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - values.replace
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - distlib.metadata._version2fieldlist
    - missing.append
    - distlib.version.Matcher.__init__
    - tempfile.mkdtemp
    - s.endswith
    - shutil.rmtree
    - v.split
    - os.close
    - s.lower
    - distlib.metadata.Metadata.write
    - distlib.util._csv_open
    - clist.append
    - csv.writer
    - records.append
    - data.decode
    - json.dump
    - tempfile.mkstemp
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata._best_version
    - distlib.metadata.Metadata.__init__
    - <builtin>.tuple
    - <builtin>.any
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - path_map
    - info_dir
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 12
    functionLinenumber: 899
    functionName: distlib.wheel.Wheel.update.get_version
    functionSourceFile: distlib.wheel
    functionUses: 1
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.isEnabledFor
    - logger.debug
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - p.isdigit
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - StringIO.StringIO.read
    - io.StringIO
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - email.message_from_file.get_payload
    - s.strip
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.metadata.LegacyMetadata.update
    - distlib.version._pep_440_key
    - distlib.version.is_semver
    - mapping.get
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - res.append
    - p.zfill
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - mapping.items
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - StringIO.StringIO
    - <builtin>.tuple
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - distlib.metadata.LegacyMetadata.set
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - <builtin>.open
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - s.lower
    - clist.append
    - data.decode
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - _LINE_PREFIX_1_2.sub
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - version
    - path
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 9
    functionLinenumber: 909
    functionName: distlib.wheel.Wheel.update.update_version
    functionSourceFile: distlib.wheel
    functionUses: 1
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - fp.close
    - pattern.match
    - json.loads
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - p.isdigit
    - <builtin>.sorted
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - StringIO.StringIO.read
    - io.StringIO
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - path.endswith
    - s.strip
    - email.message_from_file.get_payload
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.metadata.Metadata._to_legacy
    - distlib.version._legacy_key.get_parts
    - distlib.version.VersionScheme.is_valid_matcher
    - p.startswith
    - distlib.metadata.Metadata._to_legacy.process_entries
    - fields.items
    - distlib.metadata.LegacyMetadata.update
    - distlib.version._pep_440_key
    - distlib.version.is_semver
    - mapping.get
    - distlib.metadata.LegacyMetadata.write
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - <builtin>.set
    - res.append
    - p.zfill
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.metadata.LegacyMetadata.todict
    - distlib.metadata.LegacyMetadata._write_field
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - _VERSION_PART.split
    - distlib.version._semantic_key
    - mapping.items
    - reqts.add
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - kwargs.items
    - m.groups
    - part.isdigit
    - distlib.metadata.Metadata._from_legacy
    - <builtin>.isinstance
    - <builtin>.tuple
    - StringIO.StringIO
    - PEP440_VERSION_RE.match
    - <builtin>.str
    - distlib.metadata._best_version._has_marker
    - distlib.metadata.LegacyMetadata.set
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.version.SemanticVersion.parse
    - fileobj.write
    - <builtin>.int
    - e.get
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - version.find
    - distlib.metadata.LegacyMetadata.write_file
    - lmd.get
    - <builtin>.open
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - values.replace
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - distlib.metadata._version2fieldlist
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - s.lower
    - distlib.metadata.Metadata.write
    - clist.append
    - data.decode
    - json.dump
    - distlib.metadata._best_version
    - distlib.version.Version.parse
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.metadata.Metadata.__init__
    - _LINE_PREFIX_1_2.sub
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: version.find
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: tempfile.mkstemp
    functionSourceFile: tempfile
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.close
    functionSourceFile: os
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: path_map.items
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 980
    functionName: distlib.wheel._get_glibc_version
    functionSourceFile: distlib.wheel
    functionUses: 2
    functionsReached:
    - <builtin>.int
    - result.append
    - s.isdigit
    - platform.libc_ver
    - <builtin>.tuple
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: platform.libc_ver
    functionSourceFile: platform
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: s.isdigit
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 20
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 11
    EdgeCount: 29
    ICount: 21
    IfCount: 20
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 991
    functionName: distlib.wheel.compatible_tags
    functionSourceFile: distlib.wheel
    functionUses: 1
    functionsReached:
    - <builtin>.tuple
    - platform.libc_ver
    - <builtin>.set
    - imp.get_suffixes
    - <builtin>.str
    - <builtin>.len
    - suffix.startswith
    - <builtin>.range
    - suffix.split
    - distlib.wheel.compatible_tags._Version.__init__
    - s.isdigit
    - re.match
    - sys.platform.startswith
    - distlib.wheel._get_suffixes
    - abis.insert
    - arch.replace
    - result.append
    - <builtin>.enumerate
    - add_abis.append
    - <builtin>.int
    - m.groups
    - matches.append
    - distlib.wheel._get_glibc_version
    - abis.sort
    - abis.append
    - arches.append
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - major
    - minor
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 996
    functionName: distlib.wheel.compatible_tags._Version.__init__
    functionSourceFile: distlib.wheel
    functionUses: 2
    functionsReached:
    - <builtin>.str
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1001
    functionName: distlib.wheel.compatible_tags._Version.__str__
    functionSourceFile: distlib.wheel
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: suffix.startswith
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: suffix.split
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: abis.append
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: abis.sort
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: abis.insert
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: matches.append
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: arches.append
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: add_abis.append
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: arch.replace
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 0
    IfCount: 3
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d6a7a7f0>
    argNames:
    - wheel
    - tags
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1095
    functionName: distlib.wheel.is_compatible
    functionSourceFile: distlib.wheel
    functionUses: 8
    functionsReached:
    - os.path.split
    - os.getcwd
    - FILENAME_RE.match
    - m.groupdict
    - <builtin>.isinstance
    - os.path.abspath
    - NAME_VERSION_RE.match
    - distlib.wheel.Wheel.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.index
    functionSourceFile: distlib.index
    functionUses: 0
    functionsReached:
    - logging.getLogger
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7c3a280>
    argNames:
    - self
    - url
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 37
    functionName: distlib.index.PackageIndex.__init__
    functionSourceFile: distlib.index
    functionUses: 0
    functionsReached:
    - distlib.util.PyPIRCFile.read
    - config.sections
    - <builtin>.open
    - urllib.parse.urlparse
    - server.strip
    - config.get
    - subprocess.check_call
    - index_servers.split
    - os.path.expanduser
    - distlib.util.PyPIRCFile.__init__
    - configparser.RawConfigParser
    - os.path.join
    - distlib.index.PackageIndex.read_configuration
    - os.path.exists
    - cfg.get
    - config.read
    - config.has_option
    - distlib.util._load_pypirc
    - ConfigParser.RawConfigParser
    - urlparse.urlparse
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 74
    functionName: distlib.index.PackageIndex.read_configuration
    functionSourceFile: distlib.index
    functionUses: 1
    functionsReached:
    - server.strip
    - os.path.join
    - os.path.exists
    - distlib.util.PyPIRCFile.read
    - cfg.get
    - config.get
    - config.read
    - index_servers.split
    - config.sections
    - config.has_option
    - distlib.util._load_pypirc
    - ConfigParser.RawConfigParser
    - os.path.expanduser
    - distlib.util.PyPIRCFile.__init__
    - configparser.RawConfigParser
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: subprocess.check_call
    functionSourceFile: subprocess
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 66
    functionName: distlib.index.PackageIndex._get_pypirc_command
    functionSourceFile: distlib.index
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: cfg.get
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 87
    functionName: distlib.index.PackageIndex.save_configuration
    functionSourceFile: distlib.index
    functionUses: 0
    functionsReached:
    - config.add_section
    - <builtin>.open
    - urllib.parse.urlparse
    - config.set
    - config.write
    - urllib2.HTTPBasicAuthHandler
    - os.path.expanduser
    - distlib.util.PyPIRCFile.__init__
    - config.has_section
    - urllib.request.HTTPPasswordMgr
    - distlib.index.PackageIndex.check_credentials
    - distlib.util._store_pypirc
    - distlib.util.PyPIRCFile.update
    - configparser.RawConfigParser
    - os.path.join
    - urllib2.HTTPPasswordMgr.add_password
    - urllib.request.HTTPPasswordMgr.add_password
    - urllib.request.HTTPBasicAuthHandler
    - config.read
    - ConfigParser.RawConfigParser
    - urllib2.HTTPPasswordMgr
    - urlparse.urlparse
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 96
    functionName: distlib.index.PackageIndex.check_credentials
    functionSourceFile: distlib.index
    functionUses: 4
    functionsReached:
    - urllib.parse.urlparse
    - urllib2.HTTPPasswordMgr.add_password
    - urllib.request.HTTPPasswordMgr.add_password
    - urllib.request.HTTPBasicAuthHandler
    - urllib.request.HTTPPasswordMgr
    - urllib2.HTTPBasicAuthHandler
    - urllib2.HTTPPasswordMgr
    - urlparse.urlparse
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib2.HTTPPasswordMgr
    functionSourceFile: urllib2
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.request.HTTPPasswordMgr
    functionSourceFile: urllib
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib2.HTTPPasswordMgr.add_password
    functionSourceFile: urllib2
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.request.HTTPPasswordMgr.add_password
    functionSourceFile: urllib
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.request.HTTPBasicAuthHandler
    functionSourceFile: urllib
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib2.HTTPBasicAuthHandler
    functionSourceFile: urllib2
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 4
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - metadata
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 108
    functionName: distlib.index.PackageIndex.register
    functionSourceFile: distlib.index
    functionUses: 0
    functionsReached:
    - urllib.request.build_opener
    - v.encode
    - <builtin>.str
    - urllib2.build_opener
    - <builtin>.len
    - urllib.parse.urlparse
    - metadata.validate
    - urllib2.HTTPBasicAuthHandler
    - distlib.index.PackageIndex.send_request
    - metadata.todict
    - urllib.request.Request
    - distlib.index.PackageIndex.encode_request
    - urllib.request.HTTPPasswordMgr
    - distlib.index.PackageIndex.check_credentials
    - urllib2.Request
    - urllib2.HTTPPasswordMgr.add_password
    - urllib.request.HTTPPasswordMgr.add_password
    - handlers.append
    - urllib.request.HTTPBasicAuthHandler
    - urllib.request.build_opener.open
    - <builtin>.isinstance
    - parts.extend
    - urllib2.HTTPPasswordMgr
    - urlparse.urlparse
    - d.items
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: metadata.validate
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: metadata.todict
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: d.items
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 4
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - fields
    - files
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 458
    functionName: distlib.index.PackageIndex.encode_request
    functionSourceFile: distlib.index
    functionUses: 3
    functionsReached:
    - urllib2.Request
    - v.encode
    - <builtin>.len
    - <builtin>.isinstance
    - parts.extend
    - <builtin>.str
    - urllib.request.Request
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - req
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 442
    functionName: distlib.index.PackageIndex.send_request
    functionSourceFile: distlib.index
    functionUses: 4
    functionsReached:
    - urllib.request.build_opener
    - urllib2.build_opener
    - urllib.request.build_opener.open
    - handlers.append
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 4
    IfCount: 1
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - name
    - stream
    - outbuf
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 128
    functionName: distlib.index.PackageIndex._reader
    functionSourceFile: distlib.index
    functionUses: 0
    functionsReached:
    - s.decode
    - outbuf.append
    - stream.readline
    - stream.close
    - logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: outbuf.append
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 5
    IfCount: 3
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7df2fd0>
    argNames:
    - self
    - filename
    - signer
    - sign_password
    - keystore
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 146
    functionName: distlib.index.PackageIndex.get_sign_command
    functionSourceFile: distlib.index
    functionUses: 2
    functionsReached:
    - os.path.join
    - cmd.extend
    - logger.debug
    - tempfile.mkdtemp
    - os.path.basename
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: cmd.extend
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7ebc790>
    argNames:
    - self
    - cmd
    - input_data
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 174
    functionName: distlib.index.PackageIndex.run_command
    functionSourceFile: distlib.index
    functionUses: 3
    functionsReached:
    - dummy_threading.Thread.join
    - dummy_threading.Thread
    - threading.Thread
    - dummy_threading.Thread.start
    - subprocess.Popen
    - p.wait
    - p.stdin.close
    - p.stdin.write
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dummy_threading.Thread.start
    functionSourceFile: dummy_threading
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: p.stdin.write
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: p.stdin.close
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dummy_threading.Thread.join
    functionSourceFile: dummy_threading
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7d9b2e0>
    argNames:
    - self
    - filename
    - signer
    - sign_password
    - keystore
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 209
    functionName: distlib.index.PackageIndex.sign_file
    functionSourceFile: distlib.index
    functionUses: 1
    functionsReached:
    - os.path.join
    - dummy_threading.Thread.join
    - dummy_threading.Thread
    - distlib.index.PackageIndex.get_sign_command
    - threading.Thread
    - dummy_threading.Thread.start
    - sign_password.encode
    - subprocess.Popen
    - cmd.extend
    - os.path.basename
    - p.wait
    - logger.debug
    - distlib.index.PackageIndex.run_command
    - p.stdin.close
    - p.stdin.write
    - tempfile.mkdtemp
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sign_password.encode
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 7
    IfCount: 4
    argCount: 8
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d85233a0>
    - <ast.Constant object at 0x7ff8d8523be0>
    - <ast.Constant object at 0x7ff8d85235b0>
    - <ast.Constant object at 0x7ff8d8523d60>
    - <ast.Constant object at 0x7ff8d8523250>
    argNames:
    - self
    - metadata
    - filename
    - signer
    - sign_password
    - filetype
    - pyversion
    - keystore
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 232
    functionName: distlib.index.PackageIndex.upload_file
    functionSourceFile: distlib.index
    functionUses: 0
    functionsReached:
    - urllib.request.build_opener
    - files.append
    - v.encode
    - dummy_threading.Thread.join
    - d.update
    - subprocess.Popen
    - <builtin>.open
    - logger.debug
    - distlib.index.PackageIndex.sign_file
    - urllib2.build_opener
    - <builtin>.str
    - f.read
    - <builtin>.len
    - distlib.index.PackageIndex.get_sign_command
    - p.stdin.write
    - urllib.parse.urlparse
    - metadata.validate
    - logger.warning
    - dummy_threading.Thread
    - threading.Thread
    - urllib2.HTTPBasicAuthHandler
    - distlib.index.PackageIndex.send_request
    - hashlib.md5
    - cmd.extend
    - distlib.index.PackageIndex.run_command
    - p.stdin.close
    - urllib.request.Request
    - metadata.todict
    - tempfile.mkdtemp
    - shutil.rmtree
    - distlib.index.PackageIndex.encode_request
    - urllib.request.HTTPPasswordMgr
    - p.wait
    - distlib.index.PackageIndex.check_credentials
    - urllib2.Request
    - os.path.join
    - os.path.exists
    - os.path.dirname
    - urllib2.HTTPPasswordMgr.add_password
    - urllib.request.HTTPPasswordMgr.add_password
    - handlers.append
    - urllib.request.HTTPBasicAuthHandler
    - sign_password.encode
    - dummy_threading.Thread.start
    - urllib.request.build_opener.open
    - <builtin>.isinstance
    - hashlib.sha256
    - parts.extend
    - urllib2.HTTPPasswordMgr
    - urlparse.urlparse
    - d.items
    - os.path.basename
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: hashlib.sha256
    functionSourceFile: hashlib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: d.update
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: files.append
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    IfCount: 2
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - metadata
    - doc_dir
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 289
    functionName: distlib.index.PackageIndex.upload_documentation
    functionSourceFile: distlib.index
    functionUses: 0
    functionsReached:
    - urllib.request.build_opener
    - v.encode
    - os.path.isdir
    - io.BytesIO
    - distlib.util.zip_dir
    - urllib2.build_opener
    - <builtin>.str
    - <builtin>.len
    - urllib.parse.urlparse
    - metadata.validate
    - os.walk
    - urllib2.HTTPBasicAuthHandler
    - distlib.index.PackageIndex.send_request
    - zipfile.ZipFile
    - urllib.request.Request
    - distlib.index.PackageIndex.encode_request
    - urllib.request.HTTPPasswordMgr
    - distlib.index.PackageIndex.check_credentials
    - urllib2.Request
    - os.path.join
    - os.path.exists
    - urllib2.HTTPPasswordMgr.add_password
    - zf.write
    - urllib.request.HTTPPasswordMgr.add_password
    - handlers.append
    - urllib.request.HTTPBasicAuthHandler
    - urllib.request.build_opener.open
    - <builtin>.isinstance
    - parts.extend
    - urllib2.HTTPPasswordMgr
    - urlparse.urlparse
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    IfCount: 2
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d8531610>
    argNames:
    - self
    - signature_filename
    - data_filename
    - keystore
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 317
    functionName: distlib.index.PackageIndex.get_verify_command
    functionSourceFile: distlib.index
    functionUses: 1
    functionsReached:
    - cmd.extend
    - logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d837a550>
    argNames:
    - self
    - signature_filename
    - data_filename
    - keystore
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 341
    functionName: distlib.index.PackageIndex.verify_signature
    functionSourceFile: distlib.index
    functionUses: 0
    functionsReached:
    - dummy_threading.Thread.join
    - dummy_threading.Thread
    - threading.Thread
    - dummy_threading.Thread.start
    - subprocess.Popen
    - distlib.index.PackageIndex.get_verify_command
    - cmd.extend
    - p.wait
    - logger.debug
    - distlib.index.PackageIndex.run_command
    - p.stdin.close
    - p.stdin.write
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 15
    ICount: 9
    IfCount: 10
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d8530d30>
    - <ast.Constant object at 0x7ff8d8530490>
    argNames:
    - self
    - url
    - destfile
    - digest
    - reporthook
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 365
    functionName: distlib.index.PackageIndex.download_file
    functionSourceFile: distlib.index
    functionUses: 0
    functionsReached:
    - urllib.request.build_opener
    - dfp.write
    - <builtin>.open
    - logger.debug
    - urllib2.build_opener
    - <builtin>.len
    - distlib.index.PackageIndex.send_request
    - sfp.close
    - <builtin>.getattr
    - urllib.request.Request
    - sfp.read
    - digester.update
    - urllib2.Request
    - <builtin>.int
    - sfp.info
    - digester.hexdigest
    - handlers.append
    - urllib.request.build_opener.open
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib2.Request
    functionSourceFile: urllib2
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.request.Request
    functionSourceFile: urllib
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sfp.info
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sfp.read
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dfp.write
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: digester.update
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sfp.close
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: digester.hexdigest
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: handlers.append
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.request.build_opener
    functionSourceFile: urllib
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib2.build_opener
    functionSourceFile: urllib2
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.request.build_opener.open
    functionSourceFile: urllib
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: v.encode
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: parts.extend
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7e79790>
    argNames:
    - self
    - terms
    - operator
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 501
    functionName: distlib.index.PackageIndex.search
    functionSourceFile: distlib.index
    functionUses: 0
    functionsReached:
    - urllib.parse.urlparse
    - distlib.util.Transport.__init__
    - xmlrpclib.SafeTransport.__init__
    - xmlrpclib.Transport.__init__
    - kwargs.pop
    - xmlrpc.client.ServerProxy.__init__
    - <builtin>.isinstance
    - xmlrpc.client.SafeTransport.__init__
    - xmlrpc.client.Transport.__init__
    - xmlrpclib.ServerProxy.__init__
    - kwargs.get
    - xmlrpclib.ServerProxy.search
    - urlparse.urlparse
    - distlib.util.SafeTransport.__init__
    - distlib.util.ServerProxy.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: xmlrpclib.ServerProxy.search
    functionSourceFile: xmlrpclib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.manifest
    functionSourceFile: distlib.manifest
    functionUses: 0
    functionsReached:
    - re.compile
    - logging.getLogger
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7b192b0>
    argNames:
    - self
    - base
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 44
    functionName: distlib.manifest.Manifest.__init__
    functionSourceFile: distlib.manifest
    functionUses: 0
    functionsReached:
    - <builtin>.set
    - os.path.abspath
    - os.path.normpath
    - os.getcwd
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 59
    functionName: distlib.manifest.Manifest.findall
    functionSourceFile: distlib.manifest
    functionUses: 2
    functionsReached:
    - os.path.join
    - os.fsdecode
    - stat.S_ISDIR
    - os.listdir
    - allfiles.append
    - os.stat
    - stat.S_ISLNK
    - stat.S_ISREG
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: stat.S_ISREG
    functionSourceFile: stat
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: allfiles.append
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: stat.S_ISDIR
    functionSourceFile: stat
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: stat.S_ISLNK
    functionSourceFile: stat
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - item
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 86
    functionName: distlib.manifest.Manifest.add
    functionSourceFile: distlib.manifest
    functionUses: 1
    functionsReached:
    - os.path.join
    - os.path.normpath
    - item.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: item.startswith
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - items
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 96
    functionName: distlib.manifest.Manifest.add_many
    functionSourceFile: distlib.manifest
    functionUses: 0
    functionsReached:
    - distlib.manifest.Manifest.add
    - os.path.join
    - os.path.normpath
    - item.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d84d2c70>
    argNames:
    - self
    - wantdirs
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 105
    functionName: distlib.manifest.Manifest.sorted
    functionSourceFile: distlib.manifest
    functionUses: 0
    functionsReached:
    - os.path.split
    - os.path.join
    - os.path.dirname
    - distlib.manifest.Manifest.sorted
    - distlib.manifest.Manifest.sorted.add_dir
    - dirs.add
    - <builtin>.set
    - logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - dirs
    - d
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 110
    functionName: distlib.manifest.Manifest.sorted.add_dir
    functionSourceFile: distlib.manifest
    functionUses: 1
    functionsReached:
    - dirs.add
    - os.path.split
    - distlib.manifest.Manifest.sorted.add_dir
    - logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dirs.add
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 127
    functionName: distlib.manifest.Manifest.clear
    functionSourceFile: distlib.manifest
    functionUses: 0
    functionsReached:
    - <builtin>.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 19
    ICount: 9
    IfCount: 13
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - directive
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 132
    functionName: distlib.manifest.Manifest.process_directive
    functionSourceFile: distlib.manifest
    functionUses: 0
    functionsReached:
    - distlib.manifest.Manifest._glob_to_re
    - os.fsdecode
    - distlib.manifest.Manifest._exclude_pattern
    - distlib.manifest.Manifest._parse_directive
    - stat.S_ISDIR
    - allfiles.append
    - pattern_re.endswith
    - distlib.manifest.Manifest.findall
    - stat.S_ISLNK
    - directive.split
    - distlib.manifest.Manifest._translate_pattern
    - <builtin>.len
    - stat.S_ISREG
    - <builtin>.list
    - re.escape
    - logger.warning
    - os.stat
    - pathname.split
    - distlib.util.convert_path
    - pattern_re.search
    - words.insert
    - re.compile
    - os.listdir
    - distlib.manifest.Manifest._include_pattern
    - prefix_re.endswith
    - re.sub
    - os.path.join
    - prefix_re.startswith
    - pattern_re.startswith
    - <builtin>.isinstance
    - fnmatch.translate
    - os.sep.join
    - paths.remove
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 2
    IfCount: 7
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - directive
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 200
    functionName: distlib.manifest.Manifest._parse_directive
    functionSourceFile: distlib.manifest
    functionUses: 1
    functionsReached:
    - distlib.util.convert_path
    - os.path.join
    - words.insert
    - directive.split
    - pathname.split
    - <builtin>.len
    - paths.remove
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    IfCount: 2
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7b6a7f0>
    - <ast.Constant object at 0x7ff8d7b6ab50>
    - <ast.Constant object at 0x7ff8d7b6ac70>
    argNames:
    - self
    - pattern
    - anchor
    - prefix
    - is_regex
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 247
    functionName: distlib.manifest.Manifest._include_pattern
    functionSourceFile: distlib.manifest
    functionUses: 1
    functionsReached:
    - distlib.manifest.Manifest._glob_to_re
    - os.fsdecode
    - stat.S_ISDIR
    - allfiles.append
    - pattern_re.endswith
    - distlib.manifest.Manifest.findall
    - stat.S_ISLNK
    - distlib.manifest.Manifest._translate_pattern
    - <builtin>.len
    - stat.S_ISREG
    - re.escape
    - os.stat
    - pattern_re.search
    - re.compile
    - os.listdir
    - prefix_re.endswith
    - re.sub
    - os.path.join
    - prefix_re.startswith
    - pattern_re.startswith
    - <builtin>.isinstance
    - fnmatch.translate
    - os.sep.join
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7b7c610>
    - <ast.Constant object at 0x7ff8d7b7ceb0>
    - <ast.Constant object at 0x7ff8d7b7c5b0>
    argNames:
    - self
    - pattern
    - anchor
    - prefix
    - is_regex
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 288
    functionName: distlib.manifest.Manifest._exclude_pattern
    functionSourceFile: distlib.manifest
    functionUses: 1
    functionsReached:
    - os.path.join
    - <builtin>.list
    - re.escape
    - distlib.manifest.Manifest._glob_to_re
    - prefix_re.startswith
    - pattern_re.search
    - re.compile
    - pattern_re.startswith
    - pattern_re.endswith
    - <builtin>.isinstance
    - fnmatch.translate
    - os.sep.join
    - prefix_re.endswith
    - distlib.manifest.Manifest._translate_pattern
    - re.sub
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: directive.split
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: words.insert
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 16
    ICount: 1
    IfCount: 11
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7b7c5e0>
    - <ast.Constant object at 0x7ff8d7b7c490>
    - <ast.Constant object at 0x7ff8d7c2c670>
    argNames:
    - self
    - pattern
    - anchor
    - prefix
    - is_regex
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 308
    functionName: distlib.manifest.Manifest._translate_pattern
    functionSourceFile: distlib.manifest
    functionUses: 3
    functionsReached:
    - os.path.join
    - re.escape
    - prefix_re.startswith
    - distlib.manifest.Manifest._glob_to_re
    - re.compile
    - pattern_re.startswith
    - pattern_re.endswith
    - <builtin>.isinstance
    - fnmatch.translate
    - os.sep.join
    - prefix_re.endswith
    - re.sub
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pattern_re.search
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - pattern
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 363
    functionName: distlib.manifest.Manifest._glob_to_re
    functionSourceFile: distlib.manifest
    functionUses: 4
    functionsReached:
    - fnmatch.translate
    - re.sub
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pattern_re.startswith
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pattern_re.endswith
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: prefix_re.startswith
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: prefix_re.endswith
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.sep.join
    functionSourceFile: os
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: fnmatch.translate
    functionSourceFile: fnmatch
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: -1
    functionName: distlib.locators
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - urlparse.urljoin.endswith
    - <builtin>.super
    - threading.RLock
    - urllib.parse.urlunparse.endswith
    - distlib.util.ensure_slash
    - re.compile
    - logging.getLogger
    - kwargs.pop
    - distlib.locators.SimpleScrapingLocator.__init__
    - <builtin>.set
    - queue.Queue
    - dummy_threading.RLock
    - urllib.parse.urljoin.endswith
    - distlib.locators.AggregatingLocator.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d8728070>
    argNames:
    - url
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 39
    functionName: distlib.locators.get_all_distribution_names
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - urllib.parse.urlparse
    - distlib.util.Transport.__init__
    - xmlrpclib.SafeTransport.__init__
    - xmlrpclib.Transport.__init__
    - kwargs.pop
    - xmlrpc.client.ServerProxy.__init__
    - xmlrpc.client.SafeTransport.__init__
    - xmlrpc.client.Transport.__init__
    - xmlrpclib.ServerProxy.__init__
    - kwargs.get
    - xmlrpclib.ServerProxy.list_packages
    - urlparse.urlparse
    - distlib.util.SafeTransport.__init__
    - distlib.util.ServerProxy.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: xmlrpclib.ServerProxy.list_packages
    functionSourceFile: xmlrpclib
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 6
    argDefaultValues: []
    argNames:
    - self
    - req
    - fp
    - code
    - msg
    - headers
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 64
    functionName: distlib.locators.RedirectHandler.http_error_302
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - urllib.parse.urlparse
    - urllib.request.HTTPRedirectHandler.http_error_302
    - req.get_full_url
    - urllib.parse.urljoin
    - urlparse.urljoin
    - urllib2.HTTPRedirectHandler.http_error_302
    - headers.replace_header
    - urlparse.urlparse
    - <builtin>.hasattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: req.get_full_url
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: headers.replace_header
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.request.HTTPRedirectHandler.http_error_302
    functionSourceFile: urllib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib2.HTTPRedirectHandler.http_error_302
    functionSourceFile: urllib2
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7d18f70>
    argNames:
    - self
    - scheme
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 102
    functionName: distlib.locators.Locator.__init__
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - urllib.request.build_opener
    - urllib2.HTTPRedirectHandler.__init__
    - distlib.compat.HTTPRedirectHandler.__init__
    - queue.Queue
    - urllib.request.HTTPRedirectHandler.__init__
    - urllib2.build_opener
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.request.HTTPRedirectHandler.__init__
    functionSourceFile: ''
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib2.HTTPRedirectHandler.__init__
    functionSourceFile: ''
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.compat.HTTPRedirectHandler.__init__
    functionSourceFile: ''
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: queue.Queue
    functionSourceFile: queue
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 121
    functionName: distlib.locators.Locator.get_errors
    functionSourceFile: distlib.locators
    functionUses: 3
    functionsReached:
    - result.append
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 135
    functionName: distlib.locators.Locator.clear_errors
    functionSourceFile: distlib.locators
    functionUses: 2
    functionsReached:
    - result.append
    - distlib.locators.Locator.get_errors
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 142
    functionName: distlib.locators.Locator.clear_cache
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 145
    functionName: distlib.locators.Locator._get_scheme
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - value
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 148
    functionName: distlib.locators.Locator._set_scheme
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.locators.Locator
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - <builtin>.property
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 153
    functionName: distlib.locators.Locator._get_project
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - NotImplementedError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 165
    functionName: distlib.locators.Locator.get_distribution_names
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - NotImplementedError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 171
    functionName: distlib.locators.Locator.get_project
    functionSourceFile: distlib.locators
    functionUses: 1
    functionsReached:
    - distlib.locators.AggregatingLocator._get_project
    - distlib.version.Version.__init__
    - distlib.locators.Locator.get_errors
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - dd.update
    - result.update
    - urlparse.urljoin
    - PEP440_VERSION_RE.match
    - urllib.parse.quote
    - t.start
    - p.zfill
    - logger.debug
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - <builtin>.range
    - urllib.parse.urljoin
    - dummy_threading.Thread
    - threading.Thread
    - distlib.locators.Locator.clear_errors
    - <builtin>.getattr
    - distlib.version._semantic_key.make_tuple
    - result.get
    - files.items
    - p.isdigit
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - local.split
    - _SEMVER_RE.match
    - distlib.locators.SimpleScrapingLocator._wait_threads
    - result.append
    - distlib.locators.SimpleScrapingLocator._get_project
    - parts.append
    - distlib.locators.SimpleScrapingLocator._prepare_threads
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - t.join
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version.Matcher.match
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 12
    ICount: 2
    IfCount: 8
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 998
    functionName: distlib.locators.AggregatingLocator._get_project
    functionSourceFile: distlib.locators
    functionUses: 2
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - dd.update
    - result.update
    - PEP440_VERSION_RE.match
    - p.zfill
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - <builtin>.getattr
    - distlib.version._semantic_key.make_tuple
    - files.items
    - result.get
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - result.append
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version.Matcher.match
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 7
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 650
    functionName: distlib.locators.SimpleScrapingLocator._get_project
    functionSourceFile: distlib.locators
    functionUses: 2
    functionsReached:
    - t.join
    - distlib.locators.SimpleScrapingLocator._wait_threads
    - <builtin>.range
    - urllib.parse.urljoin
    - urlparse.urljoin
    - dummy_threading.Thread
    - threading.Thread
    - urllib.parse.quote
    - t.start
    - distlib.locators.SimpleScrapingLocator._prepare_threads
    - logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - url
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 188
    functionName: distlib.locators.Locator.score_url
    functionSourceFile: distlib.locators
    functionUses: 5
    functionsReached:
    - urllib.parse.urlparse
    - distlib.wheel.is_compatible
    - os.path.split
    - os.getcwd
    - distlib.wheel.Wheel.__init__
    - FILENAME_RE.match
    - posixpath.basename
    - m.groupdict
    - <builtin>.isinstance
    - os.path.abspath
    - NAME_VERSION_RE.match
    - basename.endswith
    - urlparse.urlparse
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: posixpath.basename
    functionSourceFile: posixpath
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: basename.endswith
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 3
    IfCount: 3
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - url1
    - url2
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 202
    functionName: distlib.locators.Locator.prefer_url
    functionSourceFile: distlib.locators
    functionUses: 4
    functionsReached:
    - urllib.parse.urlparse
    - distlib.wheel.is_compatible
    - os.path.split
    - distlib.locators.Locator.score_url
    - os.getcwd
    - distlib.wheel.Wheel.__init__
    - FILENAME_RE.match
    - posixpath.basename
    - m.groupdict
    - <builtin>.isinstance
    - os.path.abspath
    - logger.debug
    - NAME_VERSION_RE.match
    - basename.endswith
    - urlparse.urlparse
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - filename
    - project_name
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 224
    functionName: distlib.locators.Locator.split_filename
    functionSourceFile: distlib.locators
    functionUses: 5
    functionsReached:
    - distlib.locators.Locator.split_filename
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 19
    ICount: 6
    IfCount: 13
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - url
    - project_name
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 230
    functionName: distlib.locators.Locator.convert_url_to_download_info
    functionSourceFile: distlib.locators
    functionUses: 4
    functionsReached:
    - os.path.split
    - distlib.locators.Locator.split_filename
    - HASHER_HASH.match
    - m.groupdict
    - urlparse.urlunparse
    - logger.debug
    - NAME_VERSION_RE.match
    - <builtin>.len
    - urllib.parse.urlparse
    - distlib.wheel.is_compatible
    - distlib.util.normalize_name
    - <builtin>.list
    - frag.lower
    - logger.warning
    - os.getcwd
    - FILENAME_RE.match
    - os.path.abspath
    - urllib.parse.urlunparse
    - distlib.locators.Locator.convert_url_to_download_info.same_project
    - posixpath.basename
    - re.sub
    - path.endswith
    - m.groups
    - <builtin>.isinstance
    - distlib.wheel.Wheel.__init__
    - urlparse.urlparse
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - name1
    - name2
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 239
    functionName: distlib.locators.Locator.convert_url_to_download_info.same_project
    functionSourceFile: distlib.locators
    functionUses: 5
    functionsReached:
    - distlib.util.normalize_name
    - re.sub
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: frag.lower
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: HASHER_HASH.match
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.parse.urlunparse
    functionSourceFile: urllib
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urlparse.urlunparse
    functionSourceFile: urlparse
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - info
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 300
    functionName: distlib.locators.Locator._get_digest
    functionSourceFile: distlib.locators
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - result
    - info
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 13
    functionLinenumber: 323
    functionName: distlib.locators.Locator._update_version_data
    functionSourceFile: distlib.locators
    functionUses: 3
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - kwargs.pop
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - p.isdigit
    - _SEMVER_RE.match
    - email.message_from_file
    - distlib.locators.Locator.prefer_url
    - parts.append
    - distlib.wheel.Wheel.__init__
    - StringIO.StringIO.read
    - io.StringIO
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - s.strip
    - email.message_from_file.get_payload
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.version._pep_440_key
    - basename.endswith
    - distlib.version.is_semver
    - distlib.metadata.LegacyMetadata.update
    - mapping.get
    - os.path.split
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - <builtin>.set
    - res.append
    - p.zfill
    - NAME_VERSION_RE.match
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.wheel.is_compatible
    - os.getcwd
    - FILENAME_RE.match
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - info.pop
    - StringIO.StringIO
    - <builtin>.tuple
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - urllib.parse.urlparse
    - distlib.metadata.LegacyMetadata.set
    - distlib.locators.Locator._get_digest
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - os.path.abspath
    - possible_versions.remove
    - local.split
    - distlib.locators.Locator.score_url
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - distlib.database.Distribution.__init__
    - m.groupdict
    - <builtin>.open
    - _VERSION_REPLACE.get
    - distlib.database.make_dist
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - posixpath.basename
    - s.lower
    - clist.append
    - data.decode
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - _LINE_PREFIX_1_2.sub
    - urlparse.urlparse
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: info.pop
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 15
    ICount: 5
    IfCount: 10
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7d5ae80>
    argNames:
    - self
    - requirement
    - prereleases
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 346
    functionName: distlib.locators.Locator.locate
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - distlib.locators.AggregatingLocator._get_project
    - result.pop
    - dd.update
    - NON_SPACE.match
    - result.update
    - logger.debug
    - urllib.parse.urljoin
    - slist.append
    - m.end
    - VERSION_IDENTIFIER.match
    - result.get
    - p.isdigit
    - <builtin>.sorted
    - _SEMVER_RE.match
    - distlib.locators.SimpleScrapingLocator._wait_threads
    - versions.get
    - parts.append
    - extras.append
    - STRING_CHUNK.match
    - distlib.locators.SimpleScrapingLocator._prepare_threads
    - s.strip
    - t.join
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.Matcher.match
    - distlib.version._pep_440_key
    - distlib.version.is_semver
    - types.SimpleNamespace
    - distlib.version.NormalizedVersion.parse
    - distlib.util.parse_marker.marker
    - <builtin>.set
    - urllib.parse.quote
    - distlib.util.parse_requirement
    - p.zfill
    - <builtin>.len
    - <builtin>.range
    - distlib.util.parse_marker
    - distlib.version._semantic_key.make_tuple
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - versions.append
    - IDENTIFIER.match
    - distlib.util.parse_requirement.get_versions
    - remaining.startswith
    - distlib.version.Matcher.parse_requirement
    - distlib.util.parse_marker.marker_var
    - OR.match
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - distlib.util.parse_marker.marker_expr
    - distlib.locators.Locator.get_errors
    - PEP440_VERSION_RE.match
    - urllib.parse.urlparse
    - logger.warning
    - distlib.locators.Locator.clear_errors
    - distlib.locators.Locator.get_project
    - <builtin>.getattr
    - local.split
    - result.append
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - <builtin>.type
    - remaining.find
    - urlparse.urljoin
    - t.start
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - dummy_threading.Thread
    - distlib.version.get_scheme
    - threading.Thread
    - AND.match
    - files.items
    - distlib.version.Matcher.__init__
    - s.endswith
    - distlib.locators.SimpleScrapingLocator._get_project
    - MARKER_OP.match
    - req.strip
    - s.lower
    - clist.append
    - distlib.version.Version.parse
    - COMPARE_OP.match
    - distlib.util.parse_marker.marker_and
    - <builtin>.tuple
    - urlparse.urlparse
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: slist.append
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: versions.get
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - url
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 409
    functionName: distlib.locators.PyPIRPCLocator.__init__
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - urllib.parse.urlparse
    - <builtin>.super
    - distlib.util.Transport.__init__
    - xmlrpclib.SafeTransport.__init__
    - xmlrpclib.Transport.__init__
    - kwargs.pop
    - xmlrpc.client.ServerProxy.__init__
    - xmlrpc.client.SafeTransport.__init__
    - xmlrpc.client.Transport.__init__
    - xmlrpclib.ServerProxy.__init__
    - kwargs.get
    - urlparse.urlparse
    - distlib.util.SafeTransport.__init__
    - distlib.util.ServerProxy.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 420
    functionName: distlib.locators.PyPIRPCLocator.get_distribution_names
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - <builtin>.set
    - xmlrpclib.ServerProxy.list_packages
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 12
    functionLinenumber: 426
    functionName: distlib.locators.PyPIRPCLocator._get_project
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.isEnabledFor
    - logger.debug
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - p.isdigit
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - StringIO.StringIO.read
    - io.StringIO
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - s.strip
    - email.message_from_file.get_payload
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.version._pep_440_key
    - distlib.metadata.LegacyMetadata.update
    - distlib.version.is_semver
    - mapping.get
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - <builtin>.set
    - res.append
    - p.zfill
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - codecs.open
    - xmlrpclib.ServerProxy.package_releases
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - StringIO.StringIO
    - <builtin>.tuple
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - distlib.metadata.LegacyMetadata.set
    - distlib.locators.Locator._get_digest
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - xmlrpclib.ServerProxy.release_urls
    - possible_versions.remove
    - local.split
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - xmlrpclib.ServerProxy.release_data
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - distlib.database.Distribution.__init__
    - <builtin>.open
    - data.get
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - s.lower
    - clist.append
    - data.decode
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - _LINE_PREFIX_1_2.sub
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: xmlrpclib.ServerProxy.package_releases
    functionSourceFile: xmlrpclib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: xmlrpclib.ServerProxy.release_urls
    functionSourceFile: xmlrpclib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: xmlrpclib.ServerProxy.release_data
    functionSourceFile: xmlrpclib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: data.get
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - url
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 459
    functionName: distlib.locators.PyPIJSONLocator.__init__
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - urlparse.urljoin.endswith
    - <builtin>.super
    - urllib.parse.urlunparse.endswith
    - distlib.util.ensure_slash
    - urllib.parse.urljoin.endswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 463
    functionName: distlib.locators.PyPIJSONLocator.get_distribution_names
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - NotImplementedError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 6
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 12
    functionLinenumber: 469
    functionName: distlib.locators.PyPIJSONLocator._get_project
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.isEnabledFor
    - logger.debug
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - urllib.parse.urljoin
    - p.isdigit
    - _SEMVER_RE.match
    - email.message_from_file
    - parts.append
    - StringIO.StringIO.read
    - io.StringIO
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - email.message_from_file.get_payload
    - s.strip
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.metadata.LegacyMetadata.update
    - distlib.version._pep_440_key
    - distlib.version.is_semver
    - mapping.get
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - <builtin>.set
    - urllib.parse.quote
    - res.append
    - p.zfill
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - logger.exception
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - dist.download_urls.add
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - mapping.items
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - StringIO.StringIO
    - <builtin>.tuple
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - distlib.metadata.LegacyMetadata.set
    - distlib.locators.Locator._get_digest
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - distlib.database.Distribution.__init__
    - urlparse.urljoin
    - <builtin>.open
    - data.get
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - resp.read
    - s.lower
    - distlib.locators.PyPIJSONLocator.opener.open
    - clist.append
    - data.decode
    - odist.download_urls.add
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - _LINE_PREFIX_1_2.sub
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.parse.quote
    functionSourceFile: urllib
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.locators.PyPIJSONLocator.opener.open
    functionSourceFile: distlib
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: resp.read
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dist.download_urls.add
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: odist.download_urls.add
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.locators.Page
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - re.compile
    - distlib.util.cached_property
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - data
    - url
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 542
    functionName: distlib.locators.Page.__init__
    functionSourceFile: distlib.locators
    functionUses: 3
    functionsReached:
    - m.group
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 556
    functionName: distlib.locators.Page.links
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - <builtin>.sorted
    - match.groupdict
    - urllib.parse.urljoin
    - urlparse.urljoin
    - result.add
    - html.unescape
    - <builtin>.set
    - HTMLParser.HTMLParser.unescape
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - url
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 563
    functionName: distlib.locators.Page.links.clean
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - urllib.parse.urlparse
    - urllib.parse.quote
    - urlparse.urlunparse
    - urlparse.urlparse
    - urllib.parse.urlunparse
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: match.groupdict
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: html.unescape
    functionSourceFile: html
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: HTMLParser.HTMLParser.unescape
    functionSourceFile: HTMLParser
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.locators.Page.links.<lambda1>
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - m.group
    - <builtin>.ord
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.ord
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.locators.Page.links.<lambda2>
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.locators.SimpleScrapingLocator.<dict1>.<lambda1>
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.locators.SimpleScrapingLocator.<lambda1>
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - io.BytesIO
    - gzip.GzipFile
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: gzip.GzipFile
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.locators.SimpleScrapingLocator.<dict1>.<lambda2>
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7b0de80>
    - <ast.Constant object at 0x7ff8d7b0da30>
    argNames:
    - self
    - url
    - timeout
    - num_workers
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 597
    functionName: distlib.locators.SimpleScrapingLocator.__init__
    functionSourceFile: distlib.locators
    functionUses: 1
    functionsReached:
    - urlparse.urljoin.endswith
    - <builtin>.super
    - threading.RLock
    - urllib.parse.urlunparse.endswith
    - distlib.util.ensure_slash
    - <builtin>.set
    - dummy_threading.RLock
    - queue.Queue
    - urllib.parse.urljoin.endswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: threading.RLock
    functionSourceFile: threading
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dummy_threading.RLock
    functionSourceFile: dummy_threading
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 624
    functionName: distlib.locators.SimpleScrapingLocator._prepare_threads
    functionSourceFile: distlib.locators
    functionUses: 3
    functionsReached:
    - dummy_threading.Thread
    - t.start
    - threading.Thread
    - <builtin>.range
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: t.start
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 637
    functionName: distlib.locators.SimpleScrapingLocator._wait_threads
    functionSourceFile: distlib.locators
    functionUses: 3
    functionsReached:
    - t.join
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: t.join
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.locators.SimpleScrapingLocator
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - re.compile
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - url
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 671
    functionName: distlib.locators.SimpleScrapingLocator._is_platform_dependent
    functionSourceFile: distlib.locators
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - url
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 14
    functionLinenumber: 677
    functionName: distlib.locators.SimpleScrapingLocator._process_download
    functionSourceFile: distlib.locators
    functionUses: 1
    functionsReached:
    - distlib.version.Version.__init__
    - HASHER_HASH.match
    - result.pop
    - kwargs.pop
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - distlib.locators.SimpleScrapingLocator._is_platform_dependent
    - p.isdigit
    - _SEMVER_RE.match
    - email.message_from_file
    - distlib.locators.Locator.prefer_url
    - distlib.wheel.Wheel.__init__
    - parts.append
    - StringIO.StringIO.read
    - io.StringIO
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - path.endswith
    - s.strip
    - email.message_from_file.get_payload
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.version._pep_440_key
    - distlib.metadata.LegacyMetadata.update
    - basename.endswith
    - distlib.version.is_semver
    - mapping.get
    - os.path.split
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - <builtin>.set
    - res.append
    - p.zfill
    - NAME_VERSION_RE.match
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.util.normalize_name
    - distlib.wheel.is_compatible
    - frag.lower
    - os.getcwd
    - FILENAME_RE.match
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - distlib.locators.Locator.convert_url_to_download_info
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - info.pop
    - StringIO.StringIO
    - PEP440_VERSION_RE.match
    - urlparse.urlunparse
    - distlib.metadata._best_version._has_marker
    - urllib.parse.urlparse
    - distlib.metadata.LegacyMetadata.set
    - distlib.locators.Locator._get_digest
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - os.path.abspath
    - possible_versions.remove
    - local.split
    - urllib.parse.urlunparse
    - distlib.locators.Locator.score_url
    - result.append
    - distlib.locators.Locator.convert_url_to_download_info.same_project
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - distlib.database.Distribution.__init__
    - distlib.locators.Locator.split_filename
    - m.groupdict
    - <builtin>.open
    - _VERSION_REPLACE.get
    - distlib.database.make_dist
    - <builtin>.list
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - posixpath.basename
    - distlib.locators.Locator._update_version_data
    - s.lower
    - re.sub
    - clist.append
    - data.decode
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - <builtin>.tuple
    - urlparse.urlparse
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 2
    IfCount: 7
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - link
    - referrer
    - rel
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 697
    functionName: distlib.locators.SimpleScrapingLocator._should_queue
    functionSourceFile: distlib.locators
    functionUses: 1
    functionsReached:
    - urllib.parse.urlparse
    - urllib.parse.urljoin.startswith
    - referrer.startswith
    - distlib.locators.SimpleScrapingLocator._is_platform_dependent
    - netloc.split
    - urllib.parse.urlunparse.startswith
    - urlparse.urljoin.startswith
    - urlparse.urlparse
    - logger.debug
    - host.lower
    - path.endswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.parse.urlunparse.startswith
    functionSourceFile: urllib
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urlparse.urljoin.startswith
    functionSourceFile: urlparse
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.parse.urljoin.startswith
    functionSourceFile: urllib
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: referrer.startswith
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: netloc.split
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: host.lower
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 6
    IfCount: 5
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 15
    functionLinenumber: 724
    functionName: distlib.locators.SimpleScrapingLocator._fetch
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - urllib.parse.urljoin.startswith
    - HASHER_HASH.match
    - result.pop
    - kwargs.pop
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - distlib.locators.SimpleScrapingLocator._is_platform_dependent
    - urllib.parse.urljoin
    - distlib.locators.Page.__init__
    - distlib.locators.SimpleScrapingLocator._should_queue
    - resp.geturl
    - p.isdigit
    - _SEMVER_RE.match
    - distlib.locators.SimpleScrapingLocator.get_page
    - email.message_from_file
    - distlib.locators.Locator.prefer_url
    - parts.append
    - StringIO.StringIO.read
    - io.StringIO
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - path.endswith
    - s.strip
    - email.message_from_file.get_payload
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - urllib.request.url2pathname
    - distlib.metadata.LegacyMetadata.update
    - basename.endswith
    - distlib.version._pep_440_key
    - mapping.get
    - distlib.version.is_semver
    - os.path.split
    - urllib.parse.urlunparse.endswith
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - <builtin>.set
    - res.append
    - p.zfill
    - NAME_VERSION_RE.match
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.util.normalize_name
    - distlib.wheel.is_compatible
    - distlib.locators.SimpleScrapingLocator._process_download
    - logger.exception
    - frag.lower
    - os.getcwd
    - FILENAME_RE.match
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - distlib.locators.Locator.convert_url_to_download_info
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - info.pop
    - distlib.locators.SimpleScrapingLocator.opener.open
    - StringIO.StringIO
    - <builtin>.tuple
    - PEP440_VERSION_RE.match
    - urlparse.urlunparse
    - CHARSET.search
    - host.lower
    - distlib.metadata._best_version._has_marker
    - urllib.parse.urlparse
    - distlib.metadata.LegacyMetadata.set
    - distlib.locators.Locator._get_digest
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - HTML_CONTENT_TYPE.match
    - urllib.parse.urlunparse.startswith
    - os.path.abspath
    - possible_versions.remove
    - local.split
    - headers.get
    - urllib.parse.urlunparse
    - urllib.request.Request
    - distlib.locators.Locator.score_url
    - urllib.url2pathname
    - result.append
    - distlib.locators.Locator.convert_url_to_download_info.same_project
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - distlib.metadata.LegacyMetadata.__init__
    - urllib.parse.urljoin.endswith
    - distlib.version.SemanticVersion.parse
    - urllib2.Request
    - resp.info
    - m.group
    - <builtin>.int
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - urlparse.urljoin.startswith
    - email.message_from_file.get_all
    - distlib.database.Distribution.__init__
    - urlparse.urljoin.endswith
    - distlib.locators.Locator.split_filename
    - urlparse.urljoin
    - m.groupdict
    - <builtin>.open
    - os.path.isdir
    - _VERSION_REPLACE.get
    - referrer.startswith
    - distlib.database.make_dist
    - <builtin>.list
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - distlib.util.ensure_slash
    - v.split
    - posixpath.basename
    - distlib.locators.Locator._update_version_data
    - resp.read
    - s.lower
    - re.sub
    - clist.append
    - netloc.split
    - data.decode
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - distlib.wheel.Wheel.__init__
    - urlparse.urlparse
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 9
    IfCount: 7
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - url
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 756
    functionName: distlib.locators.SimpleScrapingLocator.get_page
    functionSourceFile: distlib.locators
    functionUses: 2
    functionsReached:
    - urlparse.urljoin.endswith
    - urllib.parse.urlunparse.endswith
    - distlib.locators.SimpleScrapingLocator.opener.open
    - urlparse.urljoin
    - os.path.isdir
    - logger.debug
    - CHARSET.search
    - urllib.parse.urlparse
    - logger.exception
    - urllib.parse.urljoin
    - distlib.locators.Page.__init__
    - HTML_CONTENT_TYPE.match
    - resp.geturl
    - headers.get
    - urllib.request.Request
    - distlib.util.ensure_slash
    - urllib.url2pathname
    - resp.read
    - urllib.parse.urljoin.endswith
    - urllib2.Request
    - resp.info
    - m.group
    - netloc.split
    - data.decode
    - urllib.request.url2pathname
    - urlparse.urlparse
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.request.url2pathname
    functionSourceFile: urllib
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.url2pathname
    functionSourceFile: urllib
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: distlib.locators.SimpleScrapingLocator.opener.open
    functionSourceFile: distlib
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: resp.info
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: HTML_CONTENT_TYPE.match
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: resp.geturl
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: CHARSET.search
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 817
    functionName: distlib.locators.SimpleScrapingLocator.get_distribution_names
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - urlparse.urljoin.endswith
    - urllib.parse.urlunparse.endswith
    - distlib.locators.SimpleScrapingLocator.opener.open
    - urlparse.urljoin
    - result.add
    - <builtin>.set
    - os.path.isdir
    - logger.debug
    - CHARSET.search
    - urllib.parse.urlparse
    - logger.exception
    - urllib.parse.urljoin
    - distlib.locators.Page.__init__
    - HTML_CONTENT_TYPE.match
    - resp.geturl
    - headers.get
    - urllib.request.Request
    - distlib.locators.SimpleScrapingLocator.get_page
    - distlib.util.ensure_slash
    - urllib.url2pathname
    - resp.read
    - urllib.parse.urljoin.endswith
    - match.group
    - urllib2.Request
    - resp.info
    - m.group
    - netloc.split
    - data.decode
    - urllib.request.url2pathname
    - urlparse.urlparse
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - path
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 835
    functionName: distlib.locators.DirectoryLocator.__init__
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - <builtin>.super
    - os.path.isdir
    - os.path.abspath
    - kwargs.pop
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - filename
    - parent
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 852
    functionName: distlib.locators.DirectoryLocator.should_include
    functionSourceFile: distlib.locators
    functionUses: 2
    functionsReached:
    - filename.endswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: filename.endswith
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 14
    functionLinenumber: 860
    functionName: distlib.locators.DirectoryLocator._get_project
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - HASHER_HASH.match
    - result.pop
    - kwargs.pop
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - p.isdigit
    - _SEMVER_RE.match
    - email.message_from_file
    - distlib.locators.Locator.prefer_url
    - parts.append
    - StringIO.StringIO.read
    - io.StringIO
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - path.endswith
    - s.strip
    - email.message_from_file.get_payload
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - distlib.locators.DirectoryLocator.should_include
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - distlib.version._pep_440_key
    - distlib.metadata.LegacyMetadata.update
    - basename.endswith
    - mapping.get
    - distlib.version.is_semver
    - os.path.split
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - <builtin>.set
    - res.append
    - p.zfill
    - NAME_VERSION_RE.match
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.util.normalize_name
    - distlib.wheel.is_compatible
    - frag.lower
    - os.getcwd
    - FILENAME_RE.match
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - distlib.locators.Locator.convert_url_to_download_info
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - os.path.join
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - info.pop
    - StringIO.StringIO
    - <builtin>.tuple
    - PEP440_VERSION_RE.match
    - urlparse.urlunparse
    - distlib.metadata._best_version._has_marker
    - urllib.parse.urlparse
    - os.walk
    - distlib.metadata.LegacyMetadata.set
    - distlib.locators.Locator._get_digest
    - logger.warning
    - distlib.metadata.LegacyMetadata._default_value
    - os.path.abspath
    - possible_versions.remove
    - local.split
    - urllib.parse.urlunparse
    - distlib.locators.Locator.score_url
    - result.append
    - distlib.locators.Locator.convert_url_to_download_info.same_project
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.version.SemanticVersion.parse
    - urllib.pathname2url
    - <builtin>.int
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - distlib.database.Distribution.__init__
    - distlib.locators.Locator.split_filename
    - m.groupdict
    - <builtin>.open
    - _VERSION_REPLACE.get
    - distlib.database.make_dist
    - <builtin>.list
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - filename.endswith
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - v.split
    - urllib.request.pathname2url
    - posixpath.basename
    - distlib.locators.Locator._update_version_data
    - s.lower
    - re.sub
    - clist.append
    - data.decode
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - distlib.wheel.Wheel.__init__
    - urlparse.urlparse
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.request.pathname2url
    functionSourceFile: urllib
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.pathname2url
    functionSourceFile: urllib
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 2
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 874
    functionName: distlib.locators.DirectoryLocator.get_distribution_names
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - os.path.split
    - distlib.locators.Locator.split_filename
    - HASHER_HASH.match
    - result.add
    - m.groupdict
    - <builtin>.set
    - urlparse.urlunparse
    - logger.debug
    - NAME_VERSION_RE.match
    - <builtin>.len
    - urllib.parse.urlparse
    - distlib.util.normalize_name
    - distlib.wheel.is_compatible
    - os.walk
    - <builtin>.list
    - frag.lower
    - logger.warning
    - os.getcwd
    - FILENAME_RE.match
    - filename.endswith
    - urlparse.urlparse
    - os.path.abspath
    - urllib.parse.urlunparse
    - urllib.request.pathname2url
    - distlib.locators.Locator.convert_url_to_download_info.same_project
    - distlib.locators.Locator.convert_url_to_download_info
    - posixpath.basename
    - re.sub
    - path.endswith
    - os.path.join
    - distlib.locators.DirectoryLocator.should_include
    - m.groups
    - <builtin>.isinstance
    - distlib.wheel.Wheel.__init__
    - urllib.pathname2url
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 900
    functionName: distlib.locators.JSONLocator.get_distribution_names
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - NotImplementedError
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 13
    functionLinenumber: 906
    functionName: distlib.locators.JSONLocator._get_project
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - kwargs.pop
    - distlib.version.VersionScheme.is_valid_version
    - distlib.metadata.LegacyMetadata.check
    - json.loads
    - fp.close
    - pattern.match
    - distlib.metadata.LegacyMetadata._convert_name
    - logger.debug
    - logger.isEnabledFor
    - distlib.metadata.Metadata.validate
    - <builtin>.hasattr
    - _ATTR2FIELD.get
    - urllib.parse.urljoin
    - p.isdigit
    - _SEMVER_RE.match
    - email.message_from_file
    - distlib.util._get_external_data
    - parts.append
    - StringIO.StringIO.read
    - io.StringIO
    - info.get
    - io.StringIO.read
    - distlib.metadata.LegacyMetadata.read
    - s.strip
    - email.message_from_file.get_payload
    - name.replace
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - p.startswith
    - distlib.version.VersionScheme.is_valid_matcher
    - fields.items
    - ct.startswith
    - distlib.version._pep_440_key
    - distlib.metadata.LegacyMetadata.update
    - distlib.version.is_semver
    - mapping.get
    - distlib.version.NormalizedVersion.parse
    - v.strip
    - <builtin>.set
    - res.append
    - p.zfill
    - f.read
    - distlib.metadata.Metadata._validate_mapping
    - <builtin>.len
    - distlib.util.get_project_data
    - logger.exception
    - other.keys
    - distlib.version._semantic_key.make_tuple
    - mapping.items
    - distlib.version._semantic_key
    - _VERSION_PART.split
    - distlib.version.Matcher.parse_requirement
    - distlib.metadata.Metadata._validate_value
    - codecs.open
    - warnings.append
    - distlib.metadata.LegacyMetadata._remove_line_prefix
    - _LINE_PREFIX_1_2.sub
    - kwargs.items
    - m.groups
    - part.isdigit
    - <builtin>.isinstance
    - StringIO.StringIO
    - PEP440_VERSION_RE.match
    - distlib.metadata._best_version._has_marker
    - distlib.metadata.LegacyMetadata.set
    - logger.warning
    - urllib.request.urlopen
    - distlib.metadata.LegacyMetadata._default_value
    - possible_versions.remove
    - local.split
    - headers.get
    - result.append
    - distlib.metadata.LegacyMetadata.set_metadata_version
    - urllib2.urlopen.info
    - distlib.metadata.LegacyMetadata.__init__
    - distlib.version.SemanticVersion.parse
    - <builtin>.int
    - distlib.metadata.LegacyMetadata.update._set
    - distlib.version.VersionScheme.is_valid_constraint_list
    - email.message_from_file.get_all
    - distlib.database.Distribution.__init__
    - urlparse.urljoin
    - <builtin>.open
    - data.get
    - _VERSION_REPLACE.get
    - distlib.database.make_dist
    - distlib.version._legacy_key
    - distlib.version.get_scheme
    - value.split
    - distlib.metadata.LegacyMetadata.get
    - distlib.metadata.LegacyMetadata.read_file
    - missing.append
    - distlib.version.Matcher.__init__
    - s.endswith
    - codecs.getreader
    - v.split
    - urllib2.urlopen
    - s.lower
    - clist.append
    - json.load
    - data.decode
    - distlib.metadata._best_version
    - _LINE_PREFIX_PRE_1_2.sub
    - distlib.version.Version.parse
    - distlib.metadata.Metadata.__init__
    - <builtin>.tuple
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: info.get
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - distpath
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 938
    functionName: distlib.locators.DistPathLocator.__init__
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - <builtin>.super
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 948
    functionName: distlib.locators.DistPathLocator._get_project
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - <builtin>.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - locators
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 970
    functionName: distlib.locators.AggregatingLocator.__init__
    functionSourceFile: distlib.locators
    functionUses: 1
    functionsReached:
    - <builtin>.super
    - kwargs.pop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 986
    functionName: distlib.locators.AggregatingLocator.clear_cache
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - value
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 991
    functionName: distlib.locators.AggregatingLocator._set_scheme
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: distlib.locators.AggregatingLocator
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - <builtin>.property
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: result.get
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: result.update
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: files.items
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dd.update
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1042
    functionName: distlib.locators.AggregatingLocator.get_distribution_names
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - <builtin>.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7cdea00>
    argNames:
    - self
    - locator
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1070
    functionName: distlib.locators.DependencyFinder.__init__
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - distlib.version.get_scheme
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 4
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - dist
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1078
    functionName: distlib.locators.DependencyFinder.add_distribution
    functionSourceFile: distlib.locators
    functionUses: 2
    functionsReached:
    - distlib.util.parse_name_and_version
    - m.groupdict
    - <builtin>.set
    - logger.debug
    - NAME_VERSION_RE.match
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 4
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - dist
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1093
    functionName: distlib.locators.DependencyFinder.remove_distribution
    functionSourceFile: distlib.locators
    functionUses: 2
    functionsReached:
    - distlib.util.parse_name_and_version
    - m.groupdict
    - s.remove
    - logger.debug
    - NAME_VERSION_RE.match
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: s.remove
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - reqt
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 1111
    functionName: distlib.locators.DependencyFinder.get_matcher
    functionSourceFile: distlib.locators
    functionUses: 3
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - p.zfill
    - reqt.split
    - _VERSION_REPLACE.get
    - <builtin>.len
    - distlib.version._legacy_key
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version.Matcher.__init__
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - s.endswith
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - clist.append
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: reqt.split
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - reqt
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 1127
    functionName: distlib.locators.DependencyFinder.find_providers
    functionSourceFile: distlib.locators
    functionUses: 1
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - result.add
    - PEP440_VERSION_RE.match
    - <builtin>.set
    - p.zfill
    - reqt.split
    - _VERSION_REPLACE.get
    - <builtin>.len
    - distlib.version._legacy_key
    - <builtin>.getattr
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - _VERSION_PART.split
    - local.split
    - distlib.version.Matcher.__init__
    - distlib.version._semantic_key
    - _SEMVER_RE.match
    - s.endswith
    - distlib.locators.DependencyFinder.get_matcher
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - clist.append
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - distlib.version.Matcher.match
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    IfCount: 2
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - provider
    - other
    - problems
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 1151
    functionName: distlib.locators.DependencyFinder.try_to_replace
    functionSourceFile: distlib.locators
    functionUses: 1
    functionsReached:
    - distlib.version.Version.__init__
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - PEP440_VERSION_RE.match
    - m.groupdict
    - <builtin>.set
    - p.zfill
    - logger.debug
    - NAME_VERSION_RE.match
    - reqt.split
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.locators.DependencyFinder.add_distribution
    - <builtin>.getattr
    - distlib.version._semantic_key.make_tuple
    - p.isdigit
    - distlib.version._semantic_key
    - local.split
    - distlib.version.Matcher.__init__
    - distlib.locators.DependencyFinder.remove_distribution
    - problems.add
    - _VERSION_PART.split
    - _SEMVER_RE.match
    - s.endswith
    - distlib.locators.DependencyFinder.get_matcher
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - s.lower
    - s.strip
    - <builtin>.frozenset
    - distlib.util.parse_name_and_version
    - clist.append
    - <builtin>.int
    - distlib.version.SemanticVersion.parse
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - s.remove
    - distlib.version.Matcher.match
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    - unmatched.add
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: unmatched.add
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.frozenset
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: problems.add
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 15
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 22
    ICount: 17
    IfCount: 15
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7ff8d7498580>
    - <ast.Constant object at 0x7ff8d7498550>
    argNames:
    - self
    - requirement
    - meta_extras
    - prereleases
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 8
    functionLinenumber: 1190
    functionName: distlib.locators.DependencyFinder.find
    functionSourceFile: distlib.locators
    functionUses: 0
    functionsReached:
    - distlib.version.Version.__init__
    - distlib.locators.DependencyFinder.try_to_replace
    - result.pop
    - distlib.version.NormalizedVersion.parse
    - result.add
    - PEP440_VERSION_RE.match
    - m.groupdict
    - <builtin>.set
    - logger.debug
    - p.zfill
    - NAME_VERSION_RE.match
    - reqt.split
    - <builtin>.len
    - _VERSION_REPLACE.get
    - distlib.version._legacy_key
    - distlib.locators.DependencyFinder.find_providers
    - distlib.locators.DependencyFinder.add_distribution
    - <builtin>.getattr
    - distlib.version._semantic_key.make_tuple
    - todo.add
    - p.isdigit
    - distlib.version._semantic_key
    - distlib.locators.DependencyFinder.remove_distribution
    - distlib.version.Matcher.__init__
    - _VERSION_PART.split
    - problems.add
    - local.split
    - _SEMVER_RE.match
    - s.endswith
    - distlib.locators.DependencyFinder.get_matcher
    - result.append
    - distlib.version.Matcher.parse_requirement
    - parts.append
    - todo.pop
    - install_dists.add
    - providers.add
    - s.lower
    - s.strip
    - distlib.version.SemanticVersion.parse
    - <builtin>.frozenset
    - clist.append
    - distlib.util.parse_name_and_version
    - <builtin>.int
    - distlib.version.LegacyVersion.parse
    - distlib.version._legacy_key.get_parts
    - m.groups
    - p.startswith
    - part.isdigit
    - <builtin>.isinstance
    - distlib.version.Version.parse
    - s.remove
    - distlib.version.Matcher.match
    - meta_extras.remove
    - distlib.version._pep_440_key
    - <builtin>.tuple
    - distlib.version.is_semver
    - unmatched.add
    linkageType: pythonLinkage
    raised:
    - DistlibException
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: meta_extras.remove
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: todo.add
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: providers.add
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: install_dists.add
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  Function list name: All functions
Function coverage:
  '...fuzz_marker':
  - 35
  - 36
  '...fuzz_marker.TestOneInput':
  - 24
  - 22
  '...fuzz_marker.main':
  - 32
  - 30
  - 31
  distlib:
  - 32
  - 33
  distlib.compat:
  - 480
  - 481
  - 39
  - 76
  - 272
  - 369
  - 913
  - 339
  - 19
  - 340
  distlib.compat.BaseConfigurator:
  - 1005
  - 1009
  - 1011
  - 1012
  - 1013
  - 1014
  - 1022
  distlib.compat.BaseConfigurator.__init__:
  - 1025
  distlib.compat.BaseConfigurator.as_tuple:
  - 1136
  - 1134
  - 1135
  distlib.compat.BaseConfigurator.cfg_convert:
  - 1056
  - 1058
  - 1059
  - 1062
  - 1063
  - 1065
  - 1066
  - 1067
  - 1069
  - 1070
  - 1071
  - 1072
  - 1076
  - 1082
  - 1083
  distlib.compat.BaseConfigurator.configure_custom:
  - 1120
  - 1121
  - 1122
  - 1123
  - 1124
  - 1126
  - 1127
  - 1128
  - 1129
  - 1130
  distlib.compat.BaseConfigurator.convert:
  - 1091
  - 1096
  - 1098
  - 1100
  - 1102
  - 1104
  - 1105
  - 1107
  - 1108
  - 1109
  - 1110
  - 1112
  - 1113
  - 1115
  - 1116
  distlib.compat.BaseConfigurator.ext_convert:
  - 1052
  - 1053
  distlib.compat.BaseConfigurator.resolve:
  - 1029
  - 1033
  - 1034
  - 1036
  - 1037
  - 1040
  - 1042
  - 1043
  - 1046
  - 1047
  distlib.compat.ChainMap:
  - 573
  - 525
  distlib.compat.ChainMap.__bool__:
  - 571
  distlib.compat.ChainMap.__contains__:
  - 568
  distlib.compat.ChainMap.__getitem__:
  - 554
  - 548
  distlib.compat.ChainMap.__init__:
  - 538
  - 542
  distlib.compat.ChainMap.__iter__:
  - 565
  distlib.compat.ChainMap.__len__:
  - 561
  distlib.compat.ChainMap.__repr__:
  - 576
  - 575
  distlib.compat.ChainMap.clear:
  - 624
  - 625
  distlib.compat.ChainMap.copy:
  - 584
  - 585
  distlib.compat.ChainMap.fromkeys:
  - 580
  - 581
  distlib.compat.ChainMap.new_child:
  - 590
  - 591
  distlib.compat.ChainMap.parents:
  - 595
  - 596
  distlib.compat.ChainMap.pop:
  - 616
  - 618
  distlib.compat.ChainMap.popitem:
  - 609
  - 611
  distlib.compat.Container:
  - 193
  distlib.compat.Container.__init__:
  - 198
  distlib.compat.ConvertingDict:
  - 931
  distlib.compat.ConvertingDict.__getitem__:
  - 937
  - 939
  - 934
  - 935
  distlib.compat.ConvertingDict.get:
  - 946
  - 947
  - 949
  - 951
  distlib.compat.ConvertingList:
  - 968
  distlib.compat.ConvertingList.__getitem__:
  - 976
  - 971
  - 972
  - 974
  distlib.compat.ConvertingList.pop:
  - 984
  - 985
  - 986
  - 983
  distlib.compat.ConvertingTuple:
  - 992
  distlib.compat.ConvertingTuple.__getitem__:
  - 995
  - 996
  - 997
  - 998
  distlib.compat.OrderedDict:
  - 660
  - 820
  distlib.compat.OrderedDict.__delitem__:
  - 704
  - 700
  - 703
  distlib.compat.OrderedDict.__eq__:
  - 883
  - 887
  - 888
  - 889
  - 890
  distlib.compat.OrderedDict.__init__:
  - 673
  - 682
  - 678
  - 687
  distlib.compat.OrderedDict.__iter__:
  - 713
  - 709
  distlib.compat.OrderedDict.__reduce__:
  - 858
  - 860
  - 861
  - 862
  - 863
  distlib.compat.OrderedDict.__repr__:
  - 843
  - 844
  - 846
  - 847
  - 851
  - 853
  distlib.compat.OrderedDict.__reversed__:
  - 721
  - 717
  distlib.compat.OrderedDict.__setitem__:
  - 697
  - 690
  - 693
  distlib.compat.OrderedDict.clear:
  - 731
  - 725
  - 734
  - 727
  distlib.compat.OrderedDict.copy:
  - 868
  - 869
  distlib.compat.OrderedDict.fromkeys:
  - 873
  - 877
  - 878
  distlib.compat.OrderedDict.items:
  - 770
  distlib.compat.OrderedDict.iteritems:
  - 784
  - 785
  - 783
  distlib.compat.OrderedDict.iterkeys:
  - 774
  - 775
  distlib.compat.OrderedDict.itervalues:
  - 778
  - 779
  - 780
  distlib.compat.OrderedDict.keys:
  - 762
  - 763
  distlib.compat.OrderedDict.pop:
  - 827
  - 831
  - 823
  distlib.compat.OrderedDict.popitem:
  - 744
  - 737
  - 756
  - 741
  distlib.compat.OrderedDict.setdefault:
  - 836
  - 837
  distlib.compat.OrderedDict.update:
  - 804
  - 806
  - 807
  - 809
  - 810
  - 813
  - 815
  - 788
  - 796
  - 799
  distlib.compat.OrderedDict.values:
  - 766
  distlib.compat.OrderedDict.viewitems:
  - 906
  - 907
  distlib.compat.OrderedDict.viewkeys:
  - 898
  - 899
  distlib.compat.OrderedDict.viewvalues:
  - 902
  - 903
  distlib.compat.ZipExtFile.__exit__:
  - 286
  distlib.compat.ZipExtFile.__init__:
  - 280
  distlib.compat.ZipFile.__exit__:
  - 295
  distlib.compat.ZipFile.open:
  - 299
  - 300
  distlib.compat._dnsname_match:
  - 128
  - 97
  - 133
  - 102
  - 136
  - 105
  - 139
  - 108
  - 109
  - 140
  - 142
  - 143
  - 118
  - 119
  - 124
  - 127
  distlib.compat._get_normal_name:
  - 372
  - 374
  - 375
  - 377
  - 378
  distlib.compat._recursive_repr:
  - 495
  distlib.compat._recursive_repr.decorating_function:
  - 515
  - 516
  - 517
  - 518
  - 501
  distlib.compat._recursive_repr.decorating_function.wrapper:
  - 504
  - 505
  - 507
  - 509
  - 511
  distlib.compat.cache_from_source:
  - 633
  - 634
  - 636
  distlib.compat.callable:
  - 326
  distlib.compat.detect_encoding:
  - 452
  - 453
  - 457
  - 460
  - 461
  - 464
  - 465
  - 468
  - 469
  - 383
  distlib.compat.detect_encoding.find_cookie:
  - 418
  - 421
  - 422
  - 425
  - 426
  - 428
  - 430
  - 433
  - 436
  - 440
  - 441
  - 443
  - 446
  distlib.compat.detect_encoding.read_or_stop:
  - 409
  distlib.compat.fsdecode:
  - 355
  - 357
  - 358
  distlib.compat.fsencode:
  - 346
  - 348
  - 349
  distlib.compat.match_hostname:
  - 160
  - 161
  - 163
  - 164
  - 167
  - 168
  - 171
  - 172
  - 174
  - 175
  - 146
  - 179
  - 153
  - 158
  - 159
  distlib.compat.pop:
  - 960
  - 961
  - 958
  - 959
  distlib.compat.python_implementation:
  - 313
  - 308
  - 309
  - 311
  distlib.compat.quote:
  - 32
  - 33
  - 31
  distlib.compat.valid_ident:
  - 916
  - 917
  distlib.compat.which:
  - 256
  - 257
  - 258
  - 259
  - 260
  - 261
  - 262
  - 263
  - 206
  - 225
  - 226
  - 230
  - 231
  - 232
  - 234
  - 236
  - 238
  - 239
  - 242
  - 247
  distlib.compat.which._access_check:
  - 220
  distlib.database:
  - 6
  - 31
  distlib.database.BaseInstalledDistribution:
  - 469
  distlib.database.BaseInstalledDistribution.__init__:
  - 477
  - 487
  distlib.database.BaseInstalledDistribution.get_hash:
  - 512
  - 516
  - 518
  - 519
  - 492
  - 510
  distlib.database.DependencyGraph:
  - 1072
  distlib.database.DependencyGraph.__repr__:
  - 1208
  - 1209
  - 1210
  - 1206
  distlib.database.DependencyGraph.add_distribution:
  - 1093
  distlib.database.DependencyGraph.add_edge:
  - 1112
  - 1114
  - 1115
  - 1103
  distlib.database.DependencyGraph.add_missing:
  - 1126
  - 1125
  - 1118
  distlib.database.DependencyGraph.repr_node:
  - 1132
  - 1133
  - 1134
  - 1135
  - 1136
  - 1138
  - 1139
  - 1140
  - 1141
  - 1142
  distlib.database.DependencyGraph.to_dot:
  - 1155
  - 1156
  - 1157
  - 1158
  - 1159
  - 1160
  - 1161
  - 1163
  - 1164
  - 1165
  - 1166
  - 1167
  - 1169
  - 1170
  - 1171
  - 1172
  - 1173
  - 1145
  distlib.database.DependencyGraph.topological_sort:
  - 1186
  - 1191
  - 1192
  - 1193
  - 1195
  - 1199
  - 1201
  - 1202
  - 1203
  - 1176
  distlib.database.Distribution:
  - 329
  - 323
  - 316
  distlib.database.Distribution.__eq__:
  - 448
  - 455
  distlib.database.Distribution.__hash__:
  - 465
  - 462
  distlib.database.Distribution.__init__:
  - 347
  - 341
  - 334
  distlib.database.Distribution.__repr__:
  - 441
  - 438
  distlib.database.Distribution._get_requirements:
  - 380
  - 381
  - 382
  distlib.database.Distribution.build_requires:
  - 394
  distlib.database.Distribution.dev_requires:
  - 402
  distlib.database.Distribution.matches_requirement:
  - 416
  - 419
  - 420
  - 421
  - 426
  - 427
  - 428
  - 431
  - 405
  - 413
  - 414
  distlib.database.Distribution.meta_requires:
  - 390
  distlib.database.Distribution.name_and_version:
  - 361
  distlib.database.Distribution.provides:
  - 368
  - 374
  - 375
  distlib.database.Distribution.run_requires:
  - 386
  distlib.database.Distribution.source_url:
  - 352
  distlib.database.Distribution.test_requires:
  - 398
  distlib.database.DistributionPath:
  - 73
  - 103
  distlib.database.DistributionPath.__init__:
  - 78
  - 86
  - 92
  - 93
  - 95
  distlib.database.DistributionPath._generate_cache:
  - 165
  - 166
  - 167
  - 168
  - 170
  - 172
  - 174
  - 159
  distlib.database.DistributionPath._yield_distributions:
  - 128
  - 129
  - 130
  - 133
  - 135
  - 136
  - 137
  - 138
  - 143
  - 144
  - 145
  - 146
  - 147
  - 148
  - 149
  - 150
  - 151
  - 154
  - 156
  - 113
  - 119
  - 120
  - 121
  - 122
  - 124
  - 125
  - 127
  distlib.database.DistributionPath.clear_cache:
  - 106
  - 109
  - 110
  distlib.database.DistributionPath.distinfo_dirname:
  - 179
  - 196
  - 197
  distlib.database.DistributionPath.get_distribution:
  - 232
  - 233
  - 234
  - 235
  - 239
  - 241
  - 243
  - 222
  distlib.database.DistributionPath.get_distributions:
  - 200
  - 208
  - 209
  - 210
  - 212
  - 214
  - 215
  - 217
  - 218
  - 219
  distlib.database.DistributionPath.get_exported_entries:
  - 297
  - 303
  - 305
  - 307
  - 308
  - 309
  - 311
  - 312
  distlib.database.DistributionPath.get_file_path:
  - 288
  - 291
  - 292
  - 294
  distlib.database.DistributionPath.provides_distribution:
  - 280
  - 262
  - 264
  - 268
  - 271
  - 272
  - 276
  - 277
  - 278
  - 279
  - 248
  - 283
  - 284
  distlib.database.EggInfoDistribution:
  - 847
  distlib.database.EggInfoDistribution.__eq__:
  - 1061
  distlib.database.EggInfoDistribution.__init__:
  - 864
  - 866
  - 868
  - 871
  - 873
  - 874
  - 875
  distlib.database.EggInfoDistribution.__init__.set_name_and_version:
  - 859
  distlib.database.EggInfoDistribution._get_metadata:
  - 924
  - 925
  - 926
  - 927
  - 928
  - 929
  - 930
  - 931
  - 934
  - 935
  - 936
  - 938
  - 939
  - 940
  - 943
  - 944
  - 945
  - 946
  - 947
  - 948
  - 949
  - 954
  - 955
  - 957
  - 958
  - 959
  - 960
  - 961
  - 964
  distlib.database.EggInfoDistribution._get_metadata.parse_requires_data:
  - 896
  - 897
  - 899
  - 900
  - 902
  - 903
  - 905
  - 906
  - 881
  - 886
  - 887
  - 888
  - 890
  - 892
  - 893
  - 895
  distlib.database.EggInfoDistribution._get_metadata.parse_requires_path:
  - 918
  - 917
  - 910
  distlib.database.EggInfoDistribution.check_installed_files:
  - 975
  - 984
  - 985
  - 986
  - 987
  - 989
  - 990
  distlib.database.EggInfoDistribution.list_distinfo_files:
  - 1056
  - 1058
  - 1032
  - 1043
  - 1044
  - 1046
  - 1047
  - 1048
  - 1049
  - 1052
  - 1053
  - 1054
  - 1055
  distlib.database.EggInfoDistribution.list_installed_files:
  - 994
  - 1026
  - 1027
  - 1028
  - 1012
  - 1014
  - 1015
  - 1016
  - 1017
  - 1018
  - 1021
  - 1022
  - 1023
  distlib.database.EggInfoDistribution.list_installed_files._md5:
  - 1002
  - 1004
  - 1006
  - 1007
  distlib.database.EggInfoDistribution.list_installed_files._size:
  - 1010
  distlib.database.InstalledDistribution:
  - 524
  distlib.database.InstalledDistribution.__eq__:
  - 840
  distlib.database.InstalledDistribution.__init__:
  - 535
  - 536
  - 538
  - 540
  - 541
  - 543
  - 544
  - 546
  - 547
  - 548
  - 550
  - 551
  - 553
  - 555
  - 556
  - 558
  - 560
  - 561
  - 562
  - 563
  - 564
  distlib.database.InstalledDistribution._get_records:
  - 580
  - 581
  - 582
  - 586
  - 587
  - 592
  - 573
  distlib.database.InstalledDistribution.check_installed_files:
  - 700
  - 709
  - 710
  - 711
  - 712
  - 713
  - 714
  - 716
  - 717
  - 718
  - 719
  - 720
  - 721
  - 722
  - 723
  - 724
  - 728
  - 729
  - 730
  - 731
  distlib.database.InstalledDistribution.exports:
  - 605
  - 604
  - 597
  - 606
  distlib.database.InstalledDistribution.get_distinfo_file:
  - 809
  - 811
  - 812
  - 817
  - 821
  - 796
  distlib.database.InstalledDistribution.get_distinfo_resource:
  - 793
  - 787
  - 790
  - 791
  distlib.database.InstalledDistribution.get_resource_path:
  - 646
  - 647
  - 648
  - 649
  - 650
  - 636
  distlib.database.InstalledDistribution.list_distinfo_files:
  - 832
  - 834
  - 835
  - 836
  - 837
  - 824
  - 831
  distlib.database.InstalledDistribution.list_installed_files:
  - 656
  - 662
  - 663
  distlib.database.InstalledDistribution.read_exports:
  - 610
  - 618
  - 619
  - 620
  - 621
  distlib.database.InstalledDistribution.shared_locations:
  - 736
  - 749
  - 750
  - 751
  - 752
  - 753
  - 754
  - 755
  - 756
  distlib.database.InstalledDistribution.write_exports:
  - 632
  - 625
  - 633
  - 631
  distlib.database.InstalledDistribution.write_installed_files:
  - 666
  - 672
  - 673
  - 674
  - 675
  - 676
  - 677
  - 678
  - 680
  - 681
  - 682
  - 686
  - 687
  - 688
  - 689
  - 690
  - 691
  - 694
  - 695
  - 696
  distlib.database.InstalledDistribution.write_shared_locations:
  - 770
  - 771
  - 772
  - 775
  - 777
  - 778
  - 779
  - 780
  - 782
  - 783
  - 762
  distlib.database._Cache:
  - 42
  distlib.database._Cache.__init__:
  - 47
  distlib.database._Cache.add:
  - 67
  - 69
  - 63
  distlib.database._Cache.clear:
  - 58
  - 59
  - 55
  distlib.database.get_dependent_dists:
  - 1281
  - 1282
  - 1283
  - 1284
  - 1285
  - 1287
  - 1266
  - 1272
  - 1275
  distlib.database.get_required_dists:
  - 1312
  - 1314
  - 1315
  - 1316
  - 1292
  - 1299
  - 1302
  - 1304
  - 1306
  - 1309
  - 1310
  distlib.database.make_dist:
  - 1321
  - 1324
  - 1325
  - 1329
  distlib.database.make_graph:
  - 1214
  - 1221
  - 1222
  - 1226
  - 1227
  - 1229
  - 1230
  - 1231
  - 1232
  - 1235
  - 1237
  - 1239
  - 1242
  - 1243
  - 1244
  - 1249
  - 1250
  - 1252
  - 1256
  - 1257
  - 1260
  - 1261
  distlib.index:
  - 23
  distlib.index.PackageIndex:
  - 30
  distlib.index.PackageIndex.__init__:
  - 38
  - 45
  - 46
  - 47
  - 53
  - 56
  - 58
  - 60
  distlib.index.PackageIndex._get_pypirc_command:
  - 72
  - 67
  distlib.index.PackageIndex._reader:
  - 129
  - 138
  - 139
  - 141
  - 142
  - 143
  - 144
  distlib.index.PackageIndex.check_credentials:
  - 97
  - 101
  - 103
  - 104
  - 105
  - 106
  distlib.index.PackageIndex.download_file:
  - 387
  - 389
  - 391
  - 395
  - 396
  - 400
  - 403
  - 405
  - 410
  - 411
  - 412
  - 413
  - 415
  - 416
  - 418
  - 419
  - 420
  - 421
  - 423
  - 424
  - 426
  - 429
  - 434
  - 435
  - 436
  - 440
  - 366
  distlib.index.PackageIndex.encode_request:
  - 482
  - 483
  - 484
  - 486
  - 459
  - 491
  - 493
  - 497
  - 499
  - 472
  - 473
  - 476
  - 477
  - 479
  distlib.index.PackageIndex.get_sign_command:
  - 161
  - 163
  - 164
  - 165
  - 166
  - 167
  - 168
  - 169
  - 171
  - 147
  distlib.index.PackageIndex.get_verify_command:
  - 333
  - 335
  - 336
  - 337
  - 338
  - 319
  distlib.index.PackageIndex.read_configuration:
  - 75
  - 81
  - 82
  - 83
  - 84
  - 85
  distlib.index.PackageIndex.register:
  - 109
  - 118
  - 119
  - 120
  - 122
  - 123
  - 125
  - 126
  distlib.index.PackageIndex.run_command:
  - 193
  - 196
  - 197
  - 198
  - 199
  - 200
  - 201
  - 202
  - 204
  - 205
  - 206
  - 175
  - 189
  distlib.index.PackageIndex.save_configuration:
  - 88
  - 92
  - 94
  distlib.index.PackageIndex.search:
  - 504
  - 506
  - 508
  - 502
  distlib.index.PackageIndex.send_request:
  - 451
  - 452
  - 453
  - 454
  - 455
  - 456
  - 443
  distlib.index.PackageIndex.sign_file:
  - 225
  - 226
  - 227
  - 210
  - 223
  distlib.index.PackageIndex.upload_documentation:
  - 290
  - 302
  - 303
  - 305
  - 306
  - 308
  - 310
  - 314
  - 315
  distlib.index.PackageIndex.upload_file:
  - 256
  - 258
  - 259
  - 261
  - 262
  - 263
  - 265
  - 267
  - 268
  - 269
  - 270
  - 271
  - 279
  - 280
  - 281
  - 282
  - 283
  - 285
  - 286
  - 287
  - 234
  - 255
  distlib.index.PackageIndex.verify_signature:
  - 355
  - 358
  - 360
  - 361
  - 343
  distlib.locators:
  - 33
  - 34
  - 35
  - 1057
  - 1059
  - 31
  distlib.locators.AggregatingLocator:
  - 996
  - 966
  distlib.locators.AggregatingLocator.__init__:
  - 984
  - 971
  - 982
  distlib.locators.AggregatingLocator._get_project:
  - 1029
  - 1000
  - 1001
  - 1002
  - 1003
  - 1004
  - 1005
  - 1033
  - 1007
  - 1008
  - 1009
  - 1010
  - 1011
  - 1034
  - 1037
  - 1015
  - 1016
  - 1017
  distlib.locators.AggregatingLocator._set_scheme:
  - 993
  distlib.locators.AggregatingLocator.clear_cache:
  - 987
  - 988
  - 989
  distlib.locators.AggregatingLocator.get_distribution_names:
  - 1049
  - 1043
  - 1046
  - 1047
  distlib.locators.DependencyFinder:
  - 1066
  distlib.locators.DependencyFinder.__init__:
  - 1076
  - 1071
  distlib.locators.DependencyFinder.add_distribution:
  - 1088
  - 1089
  - 1090
  - 1091
  - 1079
  - 1084
  distlib.locators.DependencyFinder.find:
  - 1281
  - 1282
  - 1285
  - 1287
  - 1289
  - 1290
  - 1292
  - 1293
  - 1294
  - 1191
  - 1221
  - 1222
  - 1223
  - 1225
  - 1227
  - 1229
  - 1231
  - 1232
  - 1234
  - 1236
  - 1237
  - 1238
  - 1240
  - 1242
  - 1243
  - 1247
  - 1248
  - 1252
  - 1253
  - 1254
  - 1256
  - 1257
  - 1259
  - 1260
  - 1261
  - 1262
  - 1263
  - 1266
  - 1267
  - 1268
  - 1269
  - 1270
  - 1273
  - 1274
  - 1275
  - 1276
  - 1277
  - 1278
  - 1279
  distlib.locators.DependencyFinder.find_providers:
  - 1128
  - 1135
  - 1137
  - 1139
  - 1140
  - 1142
  - 1146
  - 1147
  distlib.locators.DependencyFinder.get_matcher:
  - 1112
  - 1124
  - 1123
  - 1120
  distlib.locators.DependencyFinder.remove_distribution:
  - 1094
  - 1099
  - 1103
  - 1104
  - 1105
  - 1107
  - 1108
  distlib.locators.DependencyFinder.try_to_replace:
  - 1152
  - 1184
  - 1185
  - 1186
  - 1171
  - 1172
  - 1173
  - 1174
  - 1175
  - 1176
  - 1178
  - 1182
  distlib.locators.DirectoryLocator:
  - 831
  distlib.locators.DirectoryLocator.__init__:
  - 836
  - 845
  - 846
  - 847
  - 848
  distlib.locators.DirectoryLocator._get_project:
  - 864
  - 865
  - 866
  - 867
  - 868
  - 869
  - 870
  - 862
  - 863
  distlib.locators.DirectoryLocator.get_distribution_names:
  - 875
  - 878
  - 879
  - 880
  - 881
  - 882
  - 883
  - 884
  - 885
  - 886
  - 887
  distlib.locators.DirectoryLocator.should_include:
  - 858
  - 853
  distlib.locators.DistPathLocator:
  - 933
  distlib.locators.DistPathLocator.__init__:
  - 944
  - 945
  - 939
  distlib.locators.DistPathLocator._get_project:
  - 956
  - 949
  - 950
  - 959
  distlib.locators.JSONLocator:
  - 893
  distlib.locators.JSONLocator._get_project:
  - 928
  - 908
  - 909
  - 910
  - 911
  - 916
  - 918
  - 923
  - 925
  - 926
  distlib.locators.JSONLocator.get_distribution_names:
  - 901
  distlib.locators.Locator:
  - 151
  - 87
  distlib.locators.Locator.__init__:
  - 114
  - 119
  - 103
  distlib.locators.Locator._get_digest:
  - 301
  - 309
  - 311
  - 312
  - 315
  - 316
  - 318
  distlib.locators.Locator._get_project:
  - 154
  distlib.locators.Locator._update_version_data:
  - 324
  - 329
  - 330
  - 331
  - 335
  - 337
  - 340
  - 341
  - 342
  distlib.locators.Locator.clear_cache:
  - 143
  distlib.locators.Locator.clear_errors:
  - 136
  - 140
  distlib.locators.Locator.convert_url_to_download_info:
  - 256
  - 257
  - 258
  - 260
  - 263
  - 264
  - 269
  - 270
  - 273
  - 274
  - 275
  - 277
  - 278
  - 279
  - 280
  - 281
  - 282
  - 283
  - 286
  - 291
  - 293
  - 296
  - 231
  - 243
  - 244
  - 245
  - 246
  - 247
  - 248
  - 252
  - 254
  distlib.locators.Locator.convert_url_to_download_info.same_project:
  - 240
  distlib.locators.Locator.get_distribution_names:
  - 166
  distlib.locators.Locator.get_errors:
  - 128
  - 129
  - 132
  - 122
  - 126
  distlib.locators.Locator.get_project:
  - 172
  - 178
  - 179
  - 180
  - 183
  - 184
  distlib.locators.Locator.locate:
  - 384
  - 385
  - 386
  - 389
  - 390
  - 392
  - 394
  - 395
  - 396
  - 347
  - 360
  - 361
  - 363
  - 364
  - 365
  - 366
  - 367
  - 371
  - 372
  - 375
  - 378
  - 379
  - 381
  - 383
  distlib.locators.Locator.prefer_url:
  - 203
  - 213
  - 214
  - 215
  - 216
  - 218
  - 219
  - 221
  distlib.locators.Locator.score_url:
  - 193
  - 194
  - 196
  - 197
  - 198
  - 199
  - 189
  distlib.locators.Locator.split_filename:
  - 225
  - 228
  distlib.locators.Page:
  - 553
  - 540
  - 526
  - 534
  distlib.locators.Page.__init__:
  - 551
  - 549
  - 550
  - 543
  distlib.locators.Page.links:
  - 576
  - 579
  - 557
  - 568
  - 569
  - 570
  - 573
  - 574
  - 575
  distlib.locators.Page.links.<lambda1>:
  - 575
  distlib.locators.Page.links.clean:
  - 564
  - 565
  - 566
  distlib.locators.PyPIJSONLocator:
  - 454
  distlib.locators.PyPIJSONLocator.__init__:
  - 460
  - 461
  distlib.locators.PyPIJSONLocator._get_project:
  - 520
  - 521
  - 471
  - 473
  - 474
  - 475
  - 476
  - 480
  - 481
  - 482
  - 483
  - 487
  - 489
  - 490
  - 491
  - 492
  - 494
  - 495
  - 497
  - 500
  - 503
  - 505
  - 506
  - 507
  - 508
  distlib.locators.PyPIJSONLocator.get_distribution_names:
  - 464
  distlib.locators.PyPIRPCLocator:
  - 404
  distlib.locators.PyPIRPCLocator.__init__:
  - 416
  - 418
  - 410
  distlib.locators.PyPIRPCLocator._get_project:
  - 448
  - 428
  - 429
  - 430
  - 431
  - 432
  - 435
  - 436
  - 437
  - 438
  - 439
  - 442
  - 445
  - 447
  distlib.locators.PyPIRPCLocator.get_distribution_names:
  - 424
  - 421
  distlib.locators.RedirectHandler:
  - 55
  distlib.locators.RedirectHandler.http_error_302:
  - 68
  - 69
  - 72
  - 74
  - 75
  - 76
  - 77
  - 78
  - 81
  distlib.locators.SimpleScrapingLocator:
  - 584
  - 815
  - 593
  - 594
  - 668
  distlib.locators.SimpleScrapingLocator.<lambda1>:
  - 593
  distlib.locators.SimpleScrapingLocator.__init__:
  - 608
  - 611
  - 612
  - 613
  - 616
  - 621
  - 598
  - 607
  distlib.locators.SimpleScrapingLocator._fetch:
  - 736
  - 738
  - 739
  - 741
  - 742
  - 743
  - 744
  - 748
  - 751
  - 752
  - 725
  - 732
  - 734
  - 735
  distlib.locators.SimpleScrapingLocator._get_project:
  - 655
  - 656
  - 657
  - 658
  - 660
  - 661
  - 662
  - 664
  distlib.locators.SimpleScrapingLocator._is_platform_dependent:
  - 672
  - 675
  distlib.locators.SimpleScrapingLocator._prepare_threads:
  - 625
  - 631
  - 632
  - 634
  - 635
  distlib.locators.SimpleScrapingLocator._process_download:
  - 678
  - 687
  - 690
  - 691
  - 692
  - 694
  distlib.locators.SimpleScrapingLocator._should_queue:
  - 705
  - 707
  - 709
  - 711
  - 713
  - 716
  - 717
  - 721
  - 698
  - 702
  - 703
  distlib.locators.SimpleScrapingLocator._wait_threads:
  - 644
  - 645
  - 646
  - 647
  - 638
  distlib.locators.SimpleScrapingLocator.get_distribution_names:
  - 818
  - 821
  - 822
  - 823
  - 825
  - 826
  distlib.locators.SimpleScrapingLocator.get_page:
  - 769
  - 771
  - 773
  - 775
  - 776
  - 778
  - 780
  - 781
  - 782
  - 783
  - 784
  - 785
  - 786
  - 787
  - 788
  - 789
  - 791
  - 793
  - 794
  - 795
  - 797
  - 799
  - 800
  - 803
  - 804
  - 806
  - 808
  - 810
  - 757
  - 765
  - 766
  - 767
  distlib.locators.get_all_distribution_names:
  - 40
  - 45
  - 47
  - 49
  - 51
  distlib.manifest:
  - 24
  - 27
  - 28
  - 6
  distlib.manifest.Manifest:
  - 39
  distlib.manifest.Manifest.__init__:
  - 50
  - 53
  - 45
  distlib.manifest.Manifest._exclude_pattern:
  - 290
  - 301
  - 302
  - 303
  - 304
  distlib.manifest.Manifest._glob_to_re:
  - 370
  - 364
  - 378
  - 383
  distlib.manifest.Manifest._include_pattern:
  - 276
  - 279
  - 280
  - 249
  - 282
  - 283
  - 284
  distlib.manifest.Manifest._parse_directive:
  - 225
  - 227
  - 228
  - 232
  - 201
  - 233
  - 235
  - 236
  - 206
  - 207
  - 240
  - 214
  - 219
  - 221
  distlib.manifest.Manifest._translate_pattern:
  - 310
  - 317
  - 318
  - 319
  - 323
  - 325
  - 327
  - 328
  - 329
  - 330
  - 334
  - 335
  - 337
  - 338
  - 339
  - 341
  - 342
  - 343
  - 345
  - 347
  - 348
  - 351
  - 355
  - 356
  - 359
  - 361
  distlib.manifest.Manifest.add:
  - 92
  - 93
  - 94
  - 87
  distlib.manifest.Manifest.add_many:
  - 97
  - 102
  - 103
  distlib.manifest.Manifest.clear:
  - 128
  - 129
  distlib.manifest.Manifest.findall:
  - 72
  - 73
  - 75
  - 76
  - 79
  - 81
  - 82
  - 83
  - 84
  - 60
  distlib.manifest.Manifest.process_directive:
  - 133
  - 147
  - 152
  - 153
  - 154
  - 155
  - 157
  - 158
  - 159
  - 161
  - 162
  - 163
  - 164
  - 167
  - 168
  - 169
  - 171
  - 172
  - 173
  - 174
  - 177
  - 178
  - 179
  - 181
  - 182
  - 183
  - 186
  - 187
  - 188
  distlib.manifest.Manifest.sorted:
  - 106
  - 118
  - 119
  - 120
  - 121
  - 122
  - 124
  - 125
  distlib.manifest.Manifest.sorted.add_dir:
  - 111
  - 112
  - 113
  - 114
  - 116
  distlib.markers:
  - 99
  - 7
  - 138
  - 141
  - 26
  distlib.markers.Evaluator:
  - 45
  - 50
  - 51
  - 52
  - 53
  - 54
  - 55
  - 56
  - 57
  - 58
  - 59
  - 60
  - 61
  distlib.markers.Evaluator.evaluate:
  - 65
  - 69
  - 70
  - 73
  - 77
  - 79
  - 83
  - 86
  - 87
  - 88
  - 90
  - 91
  - 92
  - 93
  - 94
  - 95
  distlib.markers._get_versions:
  - 41
  distlib.markers._is_literal:
  - 35
  distlib.markers._is_version_marker:
  - 31
  distlib.markers.default_context:
  - 128
  - 129
  - 130
  - 111
  - 112
  - 118
  - 119
  - 120
  - 125
  - 126
  - 127
  distlib.markers.default_context.format_full_version:
  - 107
  - 108
  distlib.markers.interpret:
  - 162
  - 164
  - 150
  - 159
  distlib.markers.interpret_parsed:
  - 144
  - 145
  - 146
  - 147
  distlib.metadata:
  - 96
  - 97
  - 98
  - 195
  - 100
  - 196
  - 6
  - 210
  - 212
  - 53
  - 54
  - 24
  - 92
  - 93
  - 94
  - 95
  distlib.metadata.LegacyMetadata:
  - 229
  distlib.metadata.LegacyMetadata.__contains__:
  - 276
  distlib.metadata.LegacyMetadata.__delitem__:
  - 269
  distlib.metadata.LegacyMetadata.__getattr__:
  - 296
  distlib.metadata.LegacyMetadata.__getitem__:
  - 263
  distlib.metadata.LegacyMetadata.__init__:
  - 242
  - 248
  - 249
  - 250
  - 251
  - 252
  - 253
  - 254
  distlib.metadata.LegacyMetadata.__iter__:
  - 566
  - 567
  distlib.metadata.LegacyMetadata.__setitem__:
  - 266
  distlib.metadata.LegacyMetadata._convert_name:
  - 281
  - 282
  - 279
  distlib.metadata.LegacyMetadata._default_value:
  - 285
  distlib.metadata.LegacyMetadata._remove_line_prefix:
  - 290
  - 291
  - 293
  distlib.metadata.LegacyMetadata._write_field:
  - 260
  distlib.metadata.LegacyMetadata.add_requirements:
  - 552
  - 554
  - 555
  distlib.metadata.LegacyMetadata.check:
  - 518
  - 487
  - 489
  - 521
  - 522
  - 523
  - 524
  - 494
  - 495
  - 496
  - 498
  - 499
  - 502
  - 503
  - 504
  - 507
  - 510
  distlib.metadata.LegacyMetadata.check.are_valid_constraints:
  - 513
  - 514
  distlib.metadata.LegacyMetadata.get:
  - 480
  - 482
  - 483
  - 458
  - 459
  - 460
  - 461
  - 462
  - 464
  - 467
  - 469
  - 472
  - 473
  - 474
  - 477
  distlib.metadata.LegacyMetadata.get_fullname:
  - 305
  - 310
  distlib.metadata.LegacyMetadata.is_field:
  - 313
  - 314
  distlib.metadata.LegacyMetadata.is_multi_field:
  - 318
  distlib.metadata.LegacyMetadata.items:
  - 573
  distlib.metadata.LegacyMetadata.keys:
  - 563
  distlib.metadata.LegacyMetadata.read:
  - 322
  - 323
  - 325
  - 327
  distlib.metadata.LegacyMetadata.read_file:
  - 352
  - 330
  - 331
  - 335
  - 336
  - 338
  - 340
  - 341
  - 342
  - 343
  - 347
  - 348
  distlib.metadata.LegacyMetadata.set:
  - 420
  - 421
  - 423
  - 424
  - 425
  - 428
  - 429
  - 434
  - 437
  - 438
  - 439
  - 441
  - 442
  - 444
  - 445
  - 446
  - 447
  - 448
  - 449
  - 451
  - 452
  - 453
  distlib.metadata.LegacyMetadata.set_metadata_version:
  - 257
  distlib.metadata.LegacyMetadata.todict:
  - 544
  - 547
  - 529
  - 535
  - 537
  - 541
  - 542
  distlib.metadata.LegacyMetadata.update:
  - 416
  - 417
  - 391
  - 405
  - 408
  - 409
  - 410
  - 412
  - 413
  - 415
  distlib.metadata.LegacyMetadata.update._set:
  - 402
  - 403
  distlib.metadata.LegacyMetadata.values:
  - 570
  distlib.metadata.LegacyMetadata.write:
  - 361
  - 363
  - 358
  - 359
  distlib.metadata.LegacyMetadata.write_file:
  - 384
  - 385
  - 387
  - 388
  - 366
  - 367
  - 369
  - 370
  - 371
  - 373
  - 374
  - 376
  - 377
  - 378
  - 379
  - 381
  distlib.metadata.Metadata:
  - 672
  - 585
  - 591
  - 593
  - 595
  - 599
  distlib.metadata.Metadata.__getattribute__:
  - 696
  - 697
  - 698
  - 700
  - 701
  - 702
  - 704
  - 706
  - 707
  - 708
  - 711
  - 713
  - 714
  - 715
  - 716
  - 717
  - 718
  - 719
  - 720
  - 722
  - 723
  - 724
  - 725
  - 726
  - 727
  - 729
  - 730
  - 731
  - 732
  - 734
  distlib.metadata.Metadata.__init__:
  - 641
  - 642
  - 645
  - 646
  - 647
  - 648
  - 649
  - 650
  - 670
  - 657
  - 658
  - 660
  - 661
  - 630
  - 636
  - 669
  - 638
  distlib.metadata.Metadata.__setattr__:
  - 769
  - 770
  - 772
  - 773
  - 774
  - 775
  - 776
  - 779
  - 747
  - 748
  - 749
  - 750
  - 752
  - 753
  - 756
  - 760
  - 761
  - 763
  - 764
  - 767
  distlib.metadata.Metadata._from_legacy:
  - 902
  - 903
  - 904
  - 905
  - 910
  - 911
  - 915
  - 916
  distlib.metadata.Metadata._to_legacy:
  - 960
  - 963
  - 964
  - 965
  - 970
  - 976
  - 978
  - 979
  - 980
  - 981
  - 982
  - 983
  distlib.metadata.Metadata._to_legacy.process_entries:
  - 939
  - 940
  - 941
  - 942
  - 944
  - 945
  - 946
  - 949
  - 951
  - 952
  - 956
  distlib.metadata.Metadata._validate_mapping:
  - 868
  - 871
  - 872
  - 873
  - 874
  - 875
  - 876
  - 878
  - 879
  distlib.metadata.Metadata._validate_value:
  - 738
  - 740
  - 741
  - 742
  distlib.metadata.Metadata.add_requirements:
  - 1025
  - 1026
  - 1012
  - 1013
  - 1015
  - 1017
  - 1018
  - 1021
  - 1023
  distlib.metadata.Metadata.dependencies:
  - 865
  - 858
  - 862
  - 855
  distlib.metadata.Metadata.dictionary:
  - 849
  - 850
  distlib.metadata.Metadata.get_requirements:
  - 832
  - 833
  - 834
  - 835
  - 836
  - 837
  - 807
  - 839
  - 840
  - 843
  - 844
  - 815
  - 819
  - 820
  - 821
  - 825
  - 829
  - 830
  distlib.metadata.Metadata.name_and_version:
  - 786
  distlib.metadata.Metadata.provides:
  - 801
  - 790
  - 793
  - 795
  - 796
  distlib.metadata.Metadata.todict:
  - 890
  - 891
  - 893
  distlib.metadata.Metadata.validate:
  - 882
  - 883
  - 884
  - 885
  - 887
  distlib.metadata.Metadata.write:
  - 992
  - 995
  - 996
  - 997
  - 999
  - 1001
  - 1002
  - 1005
  - 1006
  - 1008
  - 1009
  - 988
  - 990
  - 991
  distlib.metadata.MetadataConflictError:
  - 32
  distlib.metadata.MetadataInvalidError:
  - 40
  distlib.metadata.MetadataMissingError:
  - 28
  distlib.metadata.MetadataUnrecognizedVersionError:
  - 36
  distlib.metadata._best_version:
  - 131
  - 132
  - 133
  - 134
  - 135
  - 136
  - 137
  - 138
  - 139
  - 140
  - 141
  - 142
  - 143
  - 144
  - 145
  - 146
  - 147
  - 148
  - 149
  - 150
  - 156
  - 158
  - 159
  - 163
  - 164
  - 165
  - 167
  - 168
  - 177
  - 179
  - 181
  - 183
  - 185
  - 122
  - 127
  distlib.metadata._best_version._has_marker:
  - 125
  distlib.metadata._get_name_and_version:
  - 216
  - 224
  - 219
  - 223
  distlib.metadata._version2fieldlist:
  - 104
  - 106
  - 108
  - 110
  - 112
  - 113
  - 116
  distlib.resources:
  - 338
  - 21
  - 287
  distlib.resources.Resource:
  - 78
  distlib.resources.Resource.as_stream:
  - 92
  - 86
  distlib.resources.Resource.bytes:
  - 103
  distlib.resources.Resource.file_path:
  - 97
  - 98
  - 99
  distlib.resources.Resource.size:
  - 107
  distlib.resources.ResourceCache.__init__:
  - 32
  - 29
  - 31
  distlib.resources.ResourceCache.get:
  - 64
  - 66
  - 67
  - 46
  - 52
  - 53
  - 56
  - 57
  - 58
  - 59
  - 60
  - 63
  distlib.resources.ResourceCache.is_stale:
  - 35
  distlib.resources.ResourceContainer.resources:
  - 115
  distlib.resources.ResourceFinder:
  - 185
  - 123
  - 119
  distlib.resources.ResourceFinder.__init__:
  - 130
  - 131
  distlib.resources.ResourceFinder._adjust_path:
  - 134
  distlib.resources.ResourceFinder._find:
  - 149
  distlib.resources.ResourceFinder._make_path:
  - 139
  - 143
  - 144
  - 145
  - 146
  distlib.resources.ResourceFinder.find:
  - 160
  - 162
  - 155
  - 156
  - 159
  distlib.resources.ResourceFinder.get_bytes:
  - 170
  - 171
  distlib.resources.ResourceFinder.get_resources:
  - 180
  distlib.resources.ResourceFinder.get_resources.allowed:
  - 179
  distlib.resources.ResourceFinder.get_size:
  - 174
  distlib.resources.ResourceFinder.get_stream:
  - 167
  distlib.resources.ResourceFinder.is_container:
  - 183
  distlib.resources.ResourceFinder.iterator:
  - 192
  - 193
  - 194
  - 196
  - 197
  - 200
  - 201
  - 202
  - 203
  - 205
  - 188
  - 189
  distlib.resources.ZipResourceFinder:
  - 209
  distlib.resources.ZipResourceFinder.__init__:
  - 221
  - 217
  - 213
  - 215
  distlib.resources.ZipResourceFinder._find:
  - 228
  - 231
  - 233
  - 235
  - 238
  - 239
  - 241
  distlib.resources.ZipResourceFinder._is_directory:
  - 280
  - 276
  - 278
  distlib.resources.ZipResourceFinder.get_bytes:
  - 250
  distlib.resources.ZipResourceFinder.get_cache_info:
  - 246
  distlib.resources.ZipResourceFinder.get_resources:
  - 261
  - 263
  - 264
  - 265
  - 266
  - 267
  - 270
  distlib.resources.ZipResourceFinder.get_stream:
  - 253
  distlib.resources.finder:
  - 322
  - 323
  - 325
  - 326
  - 329
  - 330
  - 331
  - 333
  - 314
  - 319
  distlib.resources.finder_for_path:
  - 352
  - 353
  - 355
  - 357
  - 342
  - 350
  - 351
  distlib.resources.register_finder:
  - 307
  distlib.scripts:
  - 66
  - 67
  - 41
  - 20
  - 22
  - 59
  - 62
  distlib.scripts.ScriptMaker:
  - 400
  - 121
  - 92
  distlib.scripts.ScriptMaker.__init__:
  - 108
  - 109
  distlib.scripts.ScriptMaker._build_shebang:
  - 160
  - 168
  - 169
  - 175
  - 148
  - 158
  distlib.scripts.ScriptMaker._copy_script:
  - 387
  - 388
  - 389
  - 390
  - 344
  - 345
  - 346
  - 347
  - 354
  - 356
  - 360
  - 361
  - 362
  - 365
  - 366
  - 368
  - 370
  - 371
  - 372
  - 373
  - 374
  - 375
  - 376
  - 378
  - 379
  - 380
  - 381
  - 382
  - 383
  distlib.scripts.ScriptMaker._fix_jython_executable:
  - 136
  - 140
  - 142
  distlib.scripts.ScriptMaker._get_alternate_executable:
  - 115
  - 116
  - 117
  - 118
  distlib.scripts.ScriptMaker._get_launcher:
  - 409
  - 411
  - 405
  distlib.scripts.ScriptMaker._get_script_text:
  - 250
  - 251
  distlib.scripts.ScriptMaker._get_shebang:
  - 185
  - 188
  - 189
  - 190
  - 191
  - 193
  - 196
  - 197
  - 199
  - 200
  - 201
  - 202
  - 203
  - 205
  - 206
  - 219
  - 220
  - 223
  - 225
  - 228
  - 235
  - 241
  - 243
  distlib.scripts.ScriptMaker._is_shell:
  - 129
  - 130
  - 124
  - 132
  distlib.scripts.ScriptMaker._make_script:
  - 328
  - 329
  - 330
  - 331
  - 332
  - 333
  - 334
  - 335
  - 336
  - 340
  distlib.scripts.ScriptMaker._write_script:
  - 261
  - 264
  - 265
  - 267
  - 268
  - 269
  - 270
  - 271
  - 272
  - 273
  - 274
  - 276
  - 277
  - 279
  - 280
  - 281
  - 282
  - 283
  - 287
  - 290
  - 293
  - 294
  - 295
  - 296
  - 297
  - 300
  - 304
  - 306
  - 307
  - 309
  - 310
  - 311
  - 312
  distlib.scripts.ScriptMaker.get_manifest:
  - 256
  distlib.scripts.ScriptMaker.get_script_filenames:
  - 320
  - 321
  - 322
  - 323
  - 317
  - 318
  - 319
  distlib.scripts.ScriptMaker.make:
  - 420
  - 431
  - 432
  - 433
  - 435
  distlib.scripts.ScriptMaker.make_multiple:
  - 445
  - 446
  - 439
  distlib.scripts.enquote_executable:
  - 72
  - 77
  - 78
  - 79
  - 82
  distlib.util:
  - 1408
  - 1409
  - 38
  - 713
  - 1451
  - 44
  - 45
  - 46
  - 47
  - 48
  - 49
  - 50
  - 51
  - 847
  - 849
  - 878
  - 1557
  - 1407
  distlib.util.CSVBase:
  - 1616
  - 1614
  - 1615
  distlib.util.CSVBase.__exit__:
  - 1623
  distlib.util.CSVReader.__init__:
  - 1633
  - 1636
  - 1637
  - 1629
  - 1631
  distlib.util.CSVReader.next:
  - 1643
  - 1644
  - 1645
  - 1646
  - 1647
  distlib.util.CSVWriter.__init__:
  - 1656
  - 1657
  distlib.util.CSVWriter.writerow:
  - 1664
  - 1665
  - 1667
  - 1660
  - 1662
  - 1663
  distlib.util.Cache:
  - 964
  distlib.util.Cache.__init__:
  - 971
  - 978
  - 979
  - 980
  - 981
  - 982
  distlib.util.Cache.clear:
  - 995
  - 996
  - 998
  - 999
  - 1000
  - 1001
  - 1003
  - 991
  distlib.util.Cache.prefix_to_dir:
  - 985
  - 988
  distlib.util.Configurator:
  - 1677
  distlib.util.Configurator.__getitem__:
  - 1718
  - 1719
  distlib.util.Configurator.__init__:
  - 1681
  - 1682
  distlib.util.Configurator.configure_custom:
  - 1700
  - 1701
  - 1702
  - 1703
  - 1705
  - 1706
  - 1707
  - 1708
  - 1709
  - 1710
  - 1711
  - 1712
  - 1713
  distlib.util.Configurator.configure_custom.convert:
  - 1697
  - 1687
  - 1688
  - 1689
  - 1690
  - 1691
  - 1694
  - 1695
  distlib.util.Configurator.inc_convert:
  - 1723
  - 1724
  - 1725
  - 1726
  - 1727
  distlib.util.EventMixin:
  - 1008
  distlib.util.EventMixin.add:
  - 1026
  - 1027
  - 1030
  - 1031
  - 1033
  - 1016
  distlib.util.EventMixin.get_subscribers:
  - 1048
  - 1052
  distlib.util.EventMixin.publish:
  - 1066
  - 1068
  - 1070
  - 1072
  - 1073
  - 1055
  distlib.util.EventMixin.remove:
  - 1043
  - 1036
  - 1045
  distlib.util.ExportEntry.__eq__:
  - 703
  distlib.util.ExportEntry.value:
  - 697
  distlib.util.FileOperator:
  - 577
  distlib.util.FileOperator.<lambda1>:
  - 577
  distlib.util.FileOperator.__init__:
  - 490
  - 491
  distlib.util.FileOperator._init_record:
  - 496
  - 495
  distlib.util.FileOperator.byte_compile:
  - 592
  - 593
  - 594
  - 595
  - 596
  - 599
  - 600
  - 602
  - 603
  - 606
  - 607
  distlib.util.FileOperator.commit:
  - 650
  - 644
  distlib.util.FileOperator.copy_file:
  - 522
  - 524
  - 525
  - 526
  - 528
  - 529
  - 531
  - 533
  - 535
  - 536
  distlib.util.FileOperator.copy_stream:
  - 544
  - 546
  - 548
  - 550
  - 551
  - 539
  - 540
  - 541
  - 542
  - 543
  distlib.util.FileOperator.ensure_dir:
  - 580
  - 581
  - 582
  - 583
  - 584
  - 585
  - 586
  - 587
  - 588
  - 589
  distlib.util.FileOperator.ensure_removed:
  - 611
  - 612
  - 613
  - 614
  - 615
  - 616
  - 617
  - 618
  - 620
  - 624
  - 625
  - 626
  - 627
  - 628
  - 629
  distlib.util.FileOperator.is_writable:
  - 634
  - 635
  - 637
  - 638
  distlib.util.FileOperator.newer:
  - 514
  - 516
  - 519
  - 503
  distlib.util.FileOperator.record_as_written:
  - 499
  - 500
  distlib.util.FileOperator.rollback:
  - 654
  - 655
  - 656
  - 657
  - 661
  - 662
  - 663
  - 664
  - 666
  - 667
  - 668
  - 669
  distlib.util.FileOperator.set_mode:
  - 566
  - 569
  - 570
  - 571
  - 573
  - 574
  - 575
  distlib.util.FileOperator.write_binary_file:
  - 554
  - 555
  - 556
  - 557
  - 558
  - 559
  - 560
  distlib.util.FileOperator.write_text_file:
  - 563
  distlib.util.HTTPSConnection.connect:
  - 1472
  - 1473
  - 1475
  - 1477
  - 1478
  - 1481
  - 1482
  - 1484
  - 1485
  - 1487
  - 1488
  - 1464
  - 1465
  - 1467
  - 1469
  - 1470
  distlib.util.HTTPSHandler.__init__:
  - 1494
  distlib.util.HTTPSHandler._conn_maker:
  - 1499
  - 1508
  - 1509
  distlib.util.HTTPSHandler.https_open:
  - 1516
  - 1518
  distlib.util.Progress.ETA:
  - 1379
  - 1381
  - 1385
  - 1388
  - 1373
  distlib.util.Progress.format_duration:
  - 1368
  - 1363
  distlib.util.Progress.increment:
  - 1336
  distlib.util.Progress.percentage:
  - 1353
  - 1355
  distlib.util.Progress.speed:
  - 1392
  - 1396
  - 1397
  distlib.util.Progress.start:
  - 1339
  distlib.util.Progress.stop:
  - 1344
  - 1343
  distlib.util.Progress.update:
  - 1328
  - 1329
  distlib.util.PyPIRCFile.__init__:
  - 1800
  - 1801
  distlib.util.PyPIRCFile.read:
  - 1808
  - 1811
  - 1812
  - 1813
  - 1814
  - 1816
  - 1817
  - 1818
  - 1820
  - 1823
  - 1825
  - 1828
  - 1830
  - 1831
  - 1838
  - 1840
  - 1842
  - 1845
  - 1846
  - 1850
  - 1851
  distlib.util.PyPIRCFile.update:
  - 1860
  - 1862
  - 1863
  - 1864
  - 1865
  - 1866
  - 1867
  - 1868
  distlib.util.SafeTransport.__init__:
  - 1563
  distlib.util.SafeTransport.make_connection:
  - 1570
  - 1572
  - 1566
  - 1567
  distlib.util.Sequencer.__init__:
  - 1085
  distlib.util.Sequencer.add:
  - 1108
  - 1109
  distlib.util.Sequencer.add_node:
  - 1088
  distlib.util.Sequencer.dot:
  - 1207
  - 1209
  - 1210
  - 1211
  - 1212
  - 1213
  - 1214
  distlib.util.Sequencer.get_steps:
  - 1128
  - 1132
  - 1133
  - 1135
  - 1136
  - 1142
  - 1143
  - 1144
  - 1146
  - 1147
  - 1148
  - 1149
  - 1150
  distlib.util.Sequencer.remove:
  - 1120
  - 1119
  distlib.util.Sequencer.remove_node:
  - 1091
  - 1092
  - 1093
  - 1094
  - 1095
  - 1096
  - 1097
  - 1099
  - 1100
  - 1102
  - 1103
  distlib.util.Sequencer.strong_connections:
  - 1200
  - 1198
  - 1199
  distlib.util.Sequencer.strong_connections.strongconnect:
  - 1186
  - 1190
  - 1191
  - 1192
  - 1194
  - 1196
  - 1168
  - 1175
  - 1176
  - 1178
  - 1179
  - 1180
  - 1183
  distlib.util.ServerProxy.__init__:
  - 1579
  - 1582
  - 1584
  - 1585
  - 1586
  - 1590
  - 1592
  distlib.util.SubprocessMixin:
  - 1732
  distlib.util.SubprocessMixin.reader:
  - 1741
  - 1748
  - 1749
  - 1751
  - 1752
  - 1754
  - 1755
  - 1757
  - 1758
  - 1759
  distlib.util.SubprocessMixin.run_command:
  - 1762
  - 1763
  - 1764
  - 1765
  - 1766
  - 1767
  - 1768
  - 1769
  - 1770
  - 1771
  - 1772
  - 1773
  distlib.util.Transport.__init__:
  - 1547
  distlib.util.Transport.make_connection:
  - 1553
  - 1550
  - 1551
  distlib.util._csv_open:
  - 1609
  - 1602
  distlib.util._get_external_data:
  - 932
  - 933
  - 934
  - 935
  - 936
  - 938
  - 941
  - 943
  distlib.util._iglob:
  - 1443
  - 1444
  - 1445
  - 1446
  - 1447
  - 1448
  - 1424
  - 1425
  - 1426
  - 1428
  - 1429
  - 1430
  - 1432
  - 1433
  - 1434
  - 1436
  - 1437
  - 1439
  distlib.util._load_pypirc:
  - 1872
  - 1875
  distlib.util._store_pypirc:
  - 1879
  distlib.util.cached_property.__get__:
  - 451
  - 453
  - 454
  distlib.util.chdir:
  - 425
  - 427
  - 428
  - 430
  distlib.util.convert_path:
  - 480
  - 481
  - 483
  - 460
  - 469
  - 471
  - 473
  - 475
  - 478
  distlib.util.ensure_slash:
  - 810
  distlib.util.extract_by_key:
  - 339
  - 340
  - 342
  - 343
  distlib.util.get_cache_base:
  - 768
  - 769
  - 772
  - 775
  - 776
  - 777
  - 778
  - 781
  - 752
  - 784
  - 786
  - 787
  - 788
  - 789
  - 766
  distlib.util.get_executable:
  - 317
  - 318
  distlib.util.get_export_entry:
  - 738
  - 740
  - 741
  - 746
  - 747
  - 721
  - 722
  - 724
  - 728
  - 731
  - 732
  - 735
  distlib.util.get_extras:
  - 899
  - 900
  - 901
  - 902
  - 903
  - 905
  - 906
  - 907
  - 908
  - 910
  - 911
  - 912
  - 913
  - 915
  - 916
  - 917
  distlib.util.get_host_platform:
  - 1921
  - 1928
  - 1932
  - 1933
  - 1935
  - 1941
  - 1942
  - 1944
  - 1951
  - 1953
  - 1954
  - 1956
  - 1957
  - 1958
  - 1959
  - 1960
  - 1966
  - 1889
  - 1908
  - 1909
  - 1911
  - 1913
  - 1918
  distlib.util.get_package_data:
  - 960
  - 958
  - 959
  distlib.util.get_platform:
  - 1979
  - 1980
  - 1981
  - 1982
  - 1983
  distlib.util.get_process_umask:
  - 832
  - 831
  distlib.util.get_project_data:
  - 952
  - 953
  - 951
  distlib.util.get_resources_dests:
  - 288
  - 289
  - 269
  - 279
  - 280
  - 281
  - 282
  - 283
  - 284
  - 285
  - 286
  distlib.util.get_resources_dests.get_rel_path:
  - 273
  - 274
  - 275
  - 276
  distlib.util.iglob:
  - 1417
  - 1420
  - 1413
  - 1414
  distlib.util.in_venv:
  - 300
  - 295
  distlib.util.is_string_sequence:
  - 840
  - 839
  distlib.util.normalize_name:
  - 1778
  - 1780
  distlib.util.parse_credentials:
  - 817
  - 818
  - 819
  - 822
  - 823
  - 824
  - 825
  - 826
  distlib.util.parse_marker:
  - 141
  - 55
  distlib.util.parse_marker.marker:
  - 131
  - 133
  - 134
  - 136
  - 137
  distlib.util.parse_marker.marker_and:
  - 120
  - 122
  - 123
  - 125
  - 126
  distlib.util.parse_marker.marker_expr:
  - 101
  - 102
  - 103
  - 105
  - 107
  - 109
  - 110
  - 112
  - 113
  - 114
  distlib.util.parse_marker.marker_var:
  - 96
  - 97
  - 66
  - 67
  - 68
  - 69
  - 70
  - 74
  - 76
  - 81
  - 83
  - 84
  - 87
  - 88
  - 90
  - 91
  - 93
  - 95
  distlib.util.parse_name_and_version:
  - 883
  - 891
  - 892
  - 894
  - 895
  distlib.util.parse_requirement:
  - 256
  - 258
  - 261
  - 264
  - 265
  - 145
  - 149
  - 150
  - 152
  - 153
  - 155
  - 156
  - 158
  - 159
  - 160
  - 163
  - 166
  - 167
  - 169
  - 170
  - 171
  - 173
  - 175
  - 176
  - 178
  - 179
  - 181
  - 182
  - 183
  - 185
  - 186
  - 191
  - 193
  - 228
  - 229
  - 231
  - 232
  - 235
  - 239
  - 240
  - 242
  - 243
  - 245
  - 246
  - 247
  - 251
  - 252
  - 254
  distlib.util.parse_requirement.get_versions:
  - 224
  - 197
  - 201
  - 203
  - 206
  - 207
  - 208
  - 209
  - 211
  - 212
  - 213
  - 214
  - 216
  - 219
  - 221
  - 222
  distlib.util.path_to_cache_dir:
  - 802
  - 803
  - 804
  - 805
  - 793
  distlib.util.proceed:
  - 325
  - 327
  - 329
  - 330
  - 331
  - 333
  distlib.util.read_exports:
  - 384
  - 353
  - 354
  - 386
  - 356
  - 388
  - 358
  - 359
  - 361
  - 366
  - 381
  - 374
  - 376
  - 378
  - 379
  - 380
  - 349
  - 351
  distlib.util.read_exports.read_stream:
  - 369
  - 370
  - 372
  distlib.util.resolve:
  - 673
  - 676
  - 677
  - 680
  - 681
  - 682
  - 683
  distlib.util.socket_timeout:
  - 440
  - 435
  - 437
  - 438
  distlib.util.split_filename:
  - 864
  - 865
  - 866
  - 867
  - 868
  - 870
  - 871
  - 872
  - 873
  - 853
  - 860
  - 861
  - 862
  - 863
  distlib.util.tempdir:
  - 416
  - 418
  - 420
  distlib.util.unarchive:
  - 1285
  - 1288
  - 1289
  - 1233
  - 1234
  - 1236
  - 1237
  - 1239
  - 1242
  - 1245
  - 1251
  - 1252
  - 1253
  - 1254
  - 1255
  - 1256
  - 1258
  - 1259
  - 1260
  - 1261
  - 1262
  - 1263
  - 1268
  - 1269
  - 1270
  distlib.util.unarchive.check_path:
  - 1227
  - 1228
  - 1229
  - 1230
  distlib.util.unarchive.extraction_filter:
  - 1276
  - 1279
  distlib.util.write_exports:
  - 396
  - 398
  - 399
  - 400
  - 402
  - 403
  - 404
  - 408
  - 409
  - 410
  - 411
  distlib.util.zip_dir:
  - 1293
  - 1294
  - 1295
  - 1296
  - 1297
  - 1298
  - 1299
  - 1301
  - 1302
  distlib.version:
  - 6
  - 391
  - 392
  - 393
  - 394
  - 395
  - 396
  - 397
  - 398
  - 399
  - 654
  - 401
  - 405
  - 22
  - 407
  - 406
  - 408
  - 409
  - 412
  - 179
  - 576
  - 737
  - 739
  - 740
  distlib.version.LegacyMatcher:
  - 634
  - 631
  distlib.version.LegacyMatcher._match_compatible:
  - 640
  - 641
  - 644
  - 645
  - 646
  - 647
  - 637
  - 639
  distlib.version.LegacyVersion.is_prerelease:
  - 621
  - 622
  distlib.version.LegacyVersion.parse:
  - 616
  distlib.version.Matcher:
  - 84
  - 85
  - 86
  - 87
  - 88
  - 89
  - 91
  - 92
  distlib.version.Matcher.__eq__:
  - 162
  distlib.version.Matcher.__hash__:
  - 170
  distlib.version.Matcher.__init__:
  - 101
  - 103
  - 104
  - 105
  - 108
  - 110
  - 112
  - 113
  - 114
  - 121
  - 125
  - 126
  - 127
  distlib.version.Matcher.__ne__:
  - 166
  distlib.version.Matcher._check_compatible:
  - 158
  distlib.version.Matcher.exact_version:
  - 153
  distlib.version.Matcher.match:
  - 130
  - 136
  - 137
  - 138
  - 139
  - 140
  - 141
  - 142
  - 146
  distlib.version.Matcher.parse_requirement:
  - 98
  distlib.version.NormalizedMatcher._adjust_local:
  - 328
  - 329
  - 327
  - 319
  distlib.version.NormalizedMatcher._match_arbitrary:
  - 365
  distlib.version.NormalizedMatcher._match_compatible:
  - 384
  - 386
  - 387
  - 376
  - 377
  - 379
  distlib.version.NormalizedMatcher._match_eq:
  - 361
  - 357
  - 358
  distlib.version.NormalizedMatcher._match_ge:
  - 353
  distlib.version.NormalizedMatcher._match_gt:
  - 345
  - 346
  - 341
  - 342
  distlib.version.NormalizedMatcher._match_le:
  - 349
  distlib.version.NormalizedMatcher._match_lt:
  - 337
  - 338
  - 333
  - 334
  distlib.version.NormalizedMatcher._match_ne:
  - 368
  - 369
  - 372
  distlib.version.NormalizedVersion:
  - 257
  - 285
  distlib.version.NormalizedVersion.is_prerelease:
  - 289
  distlib.version.NormalizedVersion.parse:
  - 280
  - 281
  - 282
  - 275
  distlib.version.SemanticVersion.parse:
  - 686
  distlib.version.UnsupportedVersionError:
  - 26
  distlib.version.Version.__eq__:
  - 45
  distlib.version.Version.__ge__:
  - 62
  distlib.version.Version.__gt__:
  - 56
  distlib.version.Version.__hash__:
  - 66
  distlib.version.Version.__init__:
  - 32
  - 33
  - 34
  - 35
  distlib.version.Version.__le__:
  - 59
  distlib.version.Version.__lt__:
  - 52
  distlib.version.Version.__ne__:
  - 49
  distlib.version.Version._check_compatible:
  - 41
  distlib.version.VersionScheme.is_valid_constraint_list:
  - 720
  - 724
  - 726
  distlib.version.VersionScheme.is_valid_matcher:
  - 713
  distlib.version.VersionScheme.is_valid_version:
  - 705
  distlib.version.VersionScheme.suggest:
  - 729
  - 732
  distlib.version._legacy_key:
  - 609
  - 610
  - 611
  - 603
  - 604
  - 605
  - 607
  distlib.version._legacy_key.get_parts:
  - 591
  - 592
  - 593
  - 594
  - 595
  - 598
  - 599
  distlib.version._match_prefix:
  - 293
  - 294
  - 295
  - 297
  - 299
  distlib.version._pep_440_key:
  - 185
  - 186
  - 187
  - 189
  - 190
  - 191
  - 194
  - 197
  - 202
  - 205
  - 208
  - 209
  - 212
  - 215
  - 216
  - 219
  - 222
  - 223
  - 227
  - 231
  - 232
  - 235
  - 236
  - 237
  - 239
  - 245
  - 247
  distlib.version._semantic_key:
  - 674
  - 675
  - 677
  - 678
  - 680
  distlib.version._semantic_key.make_tuple:
  - 665
  - 668
  - 671
  distlib.version._suggest_normalized_version:
  - 512
  - 518
  - 523
  - 526
  - 529
  - 532
  - 535
  - 538
  - 544
  - 553
  - 560
  - 563
  - 566
  - 462
  - 479
  - 484
  - 487
  - 493
  - 496
  - 497
  - 502
  - 506
  - 509
  distlib.version._suggest_semantic_version:
  - 416
  - 420
  - 421
  - 422
  - 423
  - 429
  - 430
  - 434
  - 435
  - 436
  - 437
  - 438
  - 439
  - 441
  - 443
  - 444
  - 445
  - 448
  - 449
  - 451
  - 456
  distlib.version.get_scheme:
  - 748
  distlib.version.is_semver:
  - 660
  distlib.wheel:
  - 32
  - 36
  - 38
  - 40
  - 172
  - 45
  - 46
  - 51
  - 53
  - 54
  - 55
  - 1090
  - 78
  - 81
  - 92
  - 98
  - 99
  - 103
  - 104
  - 106
  - 108
  distlib.wheel.<lambda2>:
  - 106
  distlib.wheel.Mounter.add:
  - 143
  distlib.wheel.Mounter.find_module:
  - 152
  distlib.wheel.Mounter.load_module:
  - 162
  - 164
  - 166
  - 167
  - 159
  distlib.wheel.Mounter.remove:
  - 146
  - 147
  - 148
  distlib.wheel.Wheel:
  - 176
  distlib.wheel.Wheel.__init__:
  - 193
  - 194
  - 199
  - 200
  - 201
  - 204
  - 208
  - 209
  - 210
  - 213
  - 214
  - 184
  - 220
  - 221
  - 222
  - 216
  distlib.wheel.Wheel._get_dylib_cache:
  - 744
  - 741
  - 743
  distlib.wheel.Wheel._get_extensions:
  - 769
  - 770
  - 771
  - 772
  - 774
  - 775
  - 776
  - 748
  - 751
  - 752
  - 754
  - 756
  - 757
  - 758
  - 759
  - 760
  - 761
  - 762
  - 763
  - 764
  - 765
  - 766
  distlib.wheel.Wheel.build:
  - 390
  - 391
  - 392
  - 403
  - 404
  - 407
  - 408
  - 409
  - 410
  - 411
  - 412
  - 413
  - 414
  - 415
  - 416
  - 417
  - 418
  - 419
  - 425
  - 426
  - 429
  - 430
  - 431
  - 432
  - 437
  - 439
  - 441
  - 442
  - 443
  - 446
  - 447
  - 448
  - 449
  - 450
  - 451
  - 452
  - 459
  - 460
  - 461
  - 462
  - 463
  - 464
  - 465
  - 466
  - 467
  - 480
  - 484
  - 486
  - 487
  - 371
  - 375
  - 378
  - 379
  distlib.wheel.Wheel.build.sorter:
  - 475
  - 476
  distlib.wheel.Wheel.build_zip:
  - 368
  - 365
  - 366
  - 367
  distlib.wheel.Wheel.exists:
  - 242
  - 243
  distlib.wheel.Wheel.filename:
  - 226
  - 229
  - 233
  - 234
  - 235
  - 237
  distlib.wheel.Wheel.get_hash:
  - 337
  - 338
  - 331
  - 334
  distlib.wheel.Wheel.get_wheel_metadata:
  - 288
  - 289
  - 290
  - 291
  - 287
  distlib.wheel.Wheel.info:
  - 296
  - 297
  - 295
  distlib.wheel.Wheel.install:
  - 524
  - 525
  - 526
  - 528
  - 533
  - 534
  - 535
  - 537
  - 539
  - 540
  - 541
  - 542
  - 543
  - 544
  - 545
  - 546
  - 548
  - 554
  - 555
  - 556
  - 560
  - 561
  - 562
  - 566
  - 574
  - 581
  - 583
  - 586
  - 587
  - 590
  - 593
  - 594
  - 595
  - 596
  - 597
  - 598
  - 602
  - 603
  - 605
  - 607
  - 608
  - 609
  - 612
  - 614
  - 615
  - 616
  - 617
  - 622
  - 624
  - 625
  - 627
  - 628
  - 629
  - 630
  - 631
  - 635
  - 637
  - 638
  - 642
  - 644
  - 645
  - 646
  - 647
  - 649
  - 651
  - 652
  - 653
  - 655
  - 656
  - 666
  - 668
  - 670
  - 671
  - 673
  - 675
  - 677
  - 679
  - 680
  - 683
  - 688
  - 689
  - 690
  - 691
  - 692
  - 694
  - 696
  - 697
  - 698
  - 699
  - 700
  - 701
  - 705
  - 707
  - 708
  - 710
  - 712
  - 714
  - 715
  - 717
  - 718
  - 721
  - 725
  - 726
  - 727
  - 730
  - 733
  - 734
  - 737
  - 507
  distlib.wheel.Wheel.is_compatible:
  - 785
  - 782
  distlib.wheel.Wheel.is_mountable:
  - 788
  distlib.wheel.Wheel.metadata:
  - 257
  - 258
  - 259
  - 269
  - 271
  - 272
  - 273
  - 274
  - 275
  - 279
  - 254
  distlib.wheel.Wheel.mount:
  - 801
  - 802
  - 804
  - 805
  - 807
  - 808
  - 809
  - 810
  - 811
  - 812
  - 794
  - 795
  - 798
  distlib.wheel.Wheel.process_shebang:
  - 320
  - 323
  - 301
  - 302
  - 303
  - 306
  - 310
  - 311
  - 312
  - 318
  - 319
  distlib.wheel.Wheel.skip_entry:
  - 504
  - 491
  distlib.wheel.Wheel.tags:
  - 248
  - 249
  - 250
  - 247
  distlib.wheel.Wheel.unmount:
  - 815
  - 816
  - 817
  - 819
  - 820
  - 821
  - 822
  - 823
  - 824
  distlib.wheel.Wheel.update:
  - 930
  - 933
  - 934
  - 935
  - 937
  - 939
  - 942
  - 943
  - 945
  - 948
  - 949
  - 953
  - 955
  - 956
  - 958
  - 959
  - 961
  - 963
  - 964
  - 965
  - 967
  - 969
  - 970
  - 971
  - 973
  - 974
  - 975
  - 976
  - 883
  distlib.wheel.Wheel.update.get_version:
  - 904
  - 906
  - 902
  distlib.wheel.Wheel.update.update_version:
  - 928
  - 912
  - 913
  - 914
  - 917
  - 919
  - 921
  - 923
  - 924
  - 926
  - 927
  distlib.wheel.Wheel.verify:
  - 827
  - 833
  - 834
  - 836
  - 838
  - 839
  - 840
  - 841
  - 847
  - 848
  - 849
  - 853
  - 855
  - 858
  - 862
  - 863
  - 867
  - 870
  - 873
  - 874
  - 875
  - 876
  - 877
  - 878
  distlib.wheel.Wheel.write_record:
  - 342
  - 343
  - 344
  - 345
  - 346
  distlib.wheel.Wheel.write_records:
  - 352
  - 353
  - 354
  - 355
  - 356
  - 357
  - 359
  - 360
  - 361
  - 362
  distlib.wheel._derive_abi:
  - 64
  - 65
  - 66
  - 68
  - 69
  - 70
  - 71
  - 72
  - 73
  - 74
  - 75
  - 76
  - 60
  - 61
  - 62
  distlib.wheel._get_glibc_version:
  - 982
  - 984
  - 985
  - 986
  - 987
  distlib.wheel._get_suffixes:
  - 117
  - 118
  distlib.wheel._load_dynamic:
  - 128
  - 129
  - 131
  - 125
  - 126
  distlib.wheel.compatible_tags:
  - 1024
  - 1026
  - 1027
  - 1028
  - 1029
  - 1030
  - 1031
  - 1032
  - 1033
  - 1034
  - 1035
  - 1037
  - 1039
  - 1040
  - 1044
  - 1045
  - 1048
  - 1051
  - 1052
  - 1053
  - 1054
  - 1056
  - 1057
  - 1058
  - 1060
  - 1061
  - 1062
  - 1063
  - 1064
  - 1065
  - 1066
  - 1067
  - 1068
  - 1069
  - 1070
  - 1074
  - 1075
  - 1076
  - 1077
  - 1078
  - 1081
  - 1082
  - 1083
  - 1084
  - 1085
  - 1087
  - 992
  - 1006
  - 1007
  - 1010
  - 1011
  - 1012
  - 1013
  - 1014
  - 1015
  - 1016
  - 1020
  - 1021
  - 1022
  - 1023
  distlib.wheel.compatible_tags._Version.__init__:
  - 999
  distlib.wheel.is_compatible:
  - 1096
  - 1097
  - 1099
  - 1101
  - 1102
Fuzzer filename: /src/fuzz_marker.py
Inheritance:
  distlib.DistlibException:
  - Exception
  distlib.NullHandler: []
  distlib.compat.BaseConfigurator:
  - object
  distlib.compat.CertificateError:
  - ValueError
  distlib.compat.ChainMap:
  - MutableMapping
  distlib.compat.Container:
  - object
  distlib.compat.ConvertingDict:
  - dict
  distlib.compat.ConvertingList:
  - list
  distlib.compat.ConvertingTuple:
  - tuple
  distlib.compat.OrderedDict:
  - dict
  distlib.compat.ZipExtFile:
  - BaseZipExtFile
  distlib.compat.ZipFile:
  - BaseZipFile
  distlib.database.BaseInstalledDistribution:
  - Distribution
  distlib.database.DependencyGraph:
  - object
  distlib.database.Distribution:
  - object
  distlib.database.DistributionPath:
  - object
  distlib.database.EggInfoDistribution:
  - BaseInstalledDistribution
  distlib.database.InstalledDistribution:
  - BaseInstalledDistribution
  distlib.database._Cache:
  - object
  distlib.index.PackageIndex:
  - object
  distlib.locators.AggregatingLocator:
  - Locator
  distlib.locators.DependencyFinder:
  - object
  distlib.locators.DirectoryLocator:
  - Locator
  distlib.locators.DistPathLocator:
  - Locator
  distlib.locators.JSONLocator:
  - Locator
  distlib.locators.Locator:
  - object
  distlib.locators.Page:
  - object
  distlib.locators.PyPIJSONLocator:
  - Locator
  distlib.locators.PyPIRPCLocator:
  - Locator
  distlib.locators.RedirectHandler:
  - BaseRedirectHandler
  distlib.locators.SimpleScrapingLocator:
  - Locator
  distlib.manifest.Manifest:
  - object
  distlib.markers.Evaluator:
  - object
  distlib.metadata.LegacyMetadata:
  - object
  distlib.metadata.Metadata:
  - object
  distlib.metadata.MetadataConflictError:
  - DistlibException
  distlib.metadata.MetadataInvalidError:
  - DistlibException
  distlib.metadata.MetadataMissingError:
  - DistlibException
  distlib.metadata.MetadataUnrecognizedVersionError:
  - DistlibException
  distlib.resources.Resource:
  - ResourceBase
  distlib.resources.ResourceBase:
  - object
  distlib.resources.ResourceCache:
  - Cache
  distlib.resources.ResourceContainer:
  - ResourceBase
  distlib.resources.ResourceFinder:
  - object
  distlib.resources.ZipResourceFinder:
  - ResourceFinder
  distlib.scripts.ScriptMaker:
  - object
  distlib.util.CSVBase:
  - object
  distlib.util.CSVReader:
  - CSVBase
  distlib.util.CSVWriter:
  - CSVBase
  distlib.util.Cache:
  - object
  distlib.util.Configurator:
  - BaseConfigurator
  distlib.util.EventMixin:
  - object
  distlib.util.ExportEntry:
  - object
  distlib.util.FileOperator:
  - object
  distlib.util.HTTPSConnection: []
  distlib.util.HTTPSHandler:
  - BaseHTTPSHandler
  distlib.util.HTTPSOnlyHandler:
  - HTTPSHandler
  - HTTPHandler
  distlib.util.Progress:
  - object
  distlib.util.PyPIRCFile:
  - object
  distlib.util.SafeTransport: []
  distlib.util.Sequencer:
  - object
  distlib.util.ServerProxy: []
  distlib.util.SubprocessMixin:
  - object
  distlib.util.Transport: []
  distlib.util.cached_property:
  - object
  distlib.version.LegacyMatcher:
  - Matcher
  distlib.version.LegacyVersion:
  - Version
  distlib.version.Matcher:
  - object
  distlib.version.NormalizedMatcher:
  - Matcher
  distlib.version.NormalizedVersion:
  - Version
  distlib.version.SemanticMatcher:
  - Matcher
  distlib.version.SemanticVersion:
  - Version
  distlib.version.UnsupportedVersionError:
  - ValueError
  distlib.version.Version:
  - object
  distlib.version.VersionScheme:
  - object
  distlib.wheel.Mounter:
  - object
  distlib.wheel.Wheel:
  - object
  distlib.wheel.compatible_tags._Version: []
ep:
  func_name: TestOneInput
  module: '...fuzz_marker'
