pkgcheck.checks.metadata module

class pkgcheck.checks.metadata.BadDefaultUseFlags(flags, **kwargs)[source]

Bases: _UseFlagsResult, Error

Package IUSE contains bad default USE flags.

flag_type = 'bad default'
name = 'BadDefaultUseFlags'
class pkgcheck.checks.metadata.BadDependency(depset, atom, msg, **kwargs)[source]

Bases: VersionResult, Error

Package dependency is bad for some reason.

property desc

Result description.

name = 'BadDependency'
class pkgcheck.checks.metadata.BadDescription(msg, pkg_desc=None, **kwargs)[source]

Bases: VersionResult, Style

Package’s description is bad for some reason.

property desc

Result description.

name = 'BadDescription'
class pkgcheck.checks.metadata.BadFilename(filenames, **kwargs)[source]

Bases: VersionResult, Warning

URI uses unspecific or poor filename(s).

Archive filenames should be disambiguated using -> to rename them.

property desc

Result description.

name = 'BadFilename'
class pkgcheck.checks.metadata.BadHomepage(msg, **kwargs)[source]

Bases: VersionResult, Warning

A package’s HOMEPAGE is bad for some reason.

See the HOMEPAGE ebuild variable entry in the devmanual [1] for more information.

property desc

Result description.

name = 'BadHomepage'
class pkgcheck.checks.metadata.BadKeywords(pkg, **kwargs)[source]

Bases: VersionResult, Warning

Packages using -* should use package.mask instead.

desc = 'use package.mask or undefined keywords instead of KEYWORDS="-*"'
name = 'BadKeywords'
class pkgcheck.checks.metadata.BadProtocol(protocol, uris, **kwargs)[source]

Bases: VersionResult, Error

URI uses an unsupported protocol.

Valid protocols are currently: http, https, and ftp

property desc

Result description.

name = 'BadProtocol'
class pkgcheck.checks.metadata.BannedEapi(eapi, **kwargs)[source]

Bases: _EapiResult, Error

Package’s EAPI is banned according to repo metadata.

name = 'BannedEapi'
class pkgcheck.checks.metadata.DependencyCheck(*args, use_addon)[source]

Bases: Check

Verify dependency attributes (e.g. RDEPEND).

feed(pkg)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.addons.UnstatedIuse'>, <class 'pkgcheck.checks.metadata.BadDependency'>, <class 'pkgcheck.checks.metadata.DeprecatedDep'>, <class 'pkgcheck.checks.metadata.InvalidBdepend'>, <class 'pkgcheck.checks.metadata.InvalidDepend'>, <class 'pkgcheck.checks.metadata.InvalidIdepend'>, <class 'pkgcheck.checks.metadata.InvalidPdepend'>, <class 'pkgcheck.checks.metadata.InvalidRdepend'>, <class 'pkgcheck.checks.metadata.MisplacedWeakBlocker'>, <class 'pkgcheck.checks.metadata.MissingPackageRevision'>, <class 'pkgcheck.checks.metadata.MissingUseDepDefault'>})
required_addons = (<class 'pkgcheck.addons.UseAddon'>,)
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
class pkgcheck.checks.metadata.DeprecatedDep(attr, atoms, **kwargs)[source]

Bases: VersionResult, Warning

Package dependencies matching deprecated packages flagged in profiles/package.deprecated.

property desc

Result description.

name = 'DeprecatedDep'
class pkgcheck.checks.metadata.DeprecatedEapi(eapi, **kwargs)[source]

Bases: _EapiResult, Warning

Package’s EAPI is deprecated according to repo metadata.

name = 'DeprecatedEapi'
class pkgcheck.checks.metadata.DeprecatedLicense(licenses, **kwargs)[source]

Bases: _LicenseResult, Warning

Deprecated license usage.

license_type = 'deprecated'
name = 'DeprecatedLicense'
class pkgcheck.checks.metadata.DescriptionCheck(options, **kwargs)[source]

Bases: Check

DESCRIPTION checks.

Check on length (<=80), too short (<10), or generic (lifted from eclass or just using the package’s name).

feed(pkg)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.checks.metadata.BadDescription'>})
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
class pkgcheck.checks.metadata.DuplicateKeywords(keywords, **kwargs)[source]

Bases: VersionResult, Style

Packages having duplicate KEYWORDS.

property desc

Result description.

name = 'DuplicateKeywords'
class pkgcheck.checks.metadata.EapiCheck(*args, eclass_addon)[source]

Bases: Check

Scan for packages with banned or deprecated EAPIs.

feed(pkg)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.checks.metadata.BannedEapi'>, <class 'pkgcheck.checks.metadata.DeprecatedEapi'>, <class 'pkgcheck.checks.metadata.StableKeywordsOnTestingEapi'>, <class 'pkgcheck.checks.metadata.UnsupportedEclassEapi'>})
required_addons = (<class 'pkgcheck.addons.eclass.EclassAddon'>,)
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
class pkgcheck.checks.metadata.HomepageCheck(options, **kwargs)[source]

Bases: Check

HOMEPAGE checks.

feed(pkg)[source]

Handle functionality against the passed in item.

generic_sites = frozenset({'https://gentoo.org', 'https://www.gentoo.org'})
known_results = frozenset({<class 'pkgcheck.checks.metadata.BadHomepage'>})
missing_categories = frozenset({'acct-group', 'acct-user', 'virtual'})
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
class pkgcheck.checks.metadata.InvalidBdepend(attr, msg, **kwargs)[source]

Bases: MetadataError, VersionResult

Package has invalid BDEPEND.

attr = 'bdepend'
name = 'InvalidBdepend'
class pkgcheck.checks.metadata.InvalidDepend(attr, msg, **kwargs)[source]

Bases: MetadataError, VersionResult

Package has invalid DEPEND.

attr = 'depend'
name = 'InvalidDepend'
class pkgcheck.checks.metadata.InvalidEapi(attr, msg, **kwargs)[source]

Bases: MetadataError, VersionResult

Package’s EAPI is invalid.

attr = 'eapi'
name = 'InvalidEapi'
class pkgcheck.checks.metadata.InvalidIdepend(attr, msg, **kwargs)[source]

Bases: MetadataError, VersionResult

Package has invalid IDEPEND.

attr = 'idepend'
name = 'InvalidIdepend'
class pkgcheck.checks.metadata.InvalidLicense(attr, msg, **kwargs)[source]

Bases: MetadataError, VersionResult

Package’s LICENSE is invalid.

attr = 'license'
name = 'InvalidLicense'
class pkgcheck.checks.metadata.InvalidPdepend(attr, msg, **kwargs)[source]

Bases: MetadataError, VersionResult

Package has invalid PDEPEND.

attr = 'pdepend'
name = 'InvalidPdepend'
class pkgcheck.checks.metadata.InvalidProperties(attr, msg, **kwargs)[source]

Bases: MetadataError, VersionResult

Package’s PROPERTIES is invalid.

attr = 'properties'
name = 'InvalidProperties'
class pkgcheck.checks.metadata.InvalidRdepend(attr, msg, **kwargs)[source]

Bases: MetadataError, VersionResult

Package has invalid RDEPEND.

attr = 'rdepend'
name = 'InvalidRdepend'
class pkgcheck.checks.metadata.InvalidRequiredUse(attr, msg, **kwargs)[source]

Bases: MetadataError, VersionResult

Package’s REQUIRED_USE is invalid.

attr = 'required_use'
name = 'InvalidRequiredUse'
class pkgcheck.checks.metadata.InvalidRestrict(attr, msg, **kwargs)[source]

Bases: MetadataError, VersionResult

Package’s RESTRICT is invalid.

attr = 'restrict'
name = 'InvalidRestrict'
class pkgcheck.checks.metadata.InvalidSlot(attr, msg, **kwargs)[source]

Bases: MetadataError, VersionResult

Package’s SLOT is invalid.

attr = 'slot'
name = 'InvalidSlot'
class pkgcheck.checks.metadata.InvalidSrcUri(attr, msg, **kwargs)[source]

Bases: MetadataError, VersionResult

Package’s SRC_URI is invalid.

attr = 'fetchables'
name = 'InvalidSrcUri'
class pkgcheck.checks.metadata.InvalidUseFlags(flags, **kwargs)[source]

Bases: _UseFlagsResult, Error

Package IUSE contains invalid USE flags.

flag_type = 'invalid'
name = 'InvalidUseFlags'
class pkgcheck.checks.metadata.IuseCheck(*args, use_addon)[source]

Bases: Check

IUSE validity checks.

feed(pkg)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.checks.metadata.BadDefaultUseFlags'>, <class 'pkgcheck.checks.metadata.InvalidUseFlags'>, <class 'pkgcheck.checks.metadata.UnknownUseFlags'>})
required_addons = (<class 'pkgcheck.addons.UseAddon'>,)
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
use_expand_groups = ('cpu_flags',)
class pkgcheck.checks.metadata.KeywordsCheck(*args, use_addon, keywords_addon)[source]

Bases: Check

Check package keywords for sanity; empty keywords, and -* are flagged.

feed(pkg)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.checks.metadata.BadKeywords'>, <class 'pkgcheck.checks.metadata.DuplicateKeywords'>, <class 'pkgcheck.checks.metadata.OverlappingKeywords'>, <class 'pkgcheck.checks.metadata.UnknownKeywords'>, <class 'pkgcheck.checks.metadata.UnsortedKeywords'>, <class 'pkgcheck.checks.metadata.VirtualKeywordsUpdate'>})
required_addons = (<class 'pkgcheck.addons.UseAddon'>, <class 'pkgcheck.addons.KeywordsAddon'>)
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
class pkgcheck.checks.metadata.LicenseCheck(*args, use_addon)[source]

Bases: Check

LICENSE validity checks.

feed(pkg)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.addons.UnstatedIuse'>, <class 'pkgcheck.checks.metadata.DeprecatedLicense'>, <class 'pkgcheck.checks.metadata.InvalidLicense'>, <class 'pkgcheck.checks.metadata.MissingLicense'>, <class 'pkgcheck.checks.metadata.MissingLicenseRestricts'>, <class 'pkgcheck.checks.metadata.UnknownLicense'>, <class 'pkgcheck.checks.metadata.UnnecessaryLicense'>})
required_addons = (<class 'pkgcheck.addons.UseAddon'>,)
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
unlicensed_categories = frozenset({'acct-group', 'acct-user', 'virtual'})
class pkgcheck.checks.metadata.LocalUseCheck(*args, use_addon)[source]

Bases: Check

Check local USE flags in metadata.xml for various issues.

feed(pkgs)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.addons.UnstatedIuse'>, <class 'pkgcheck.checks.metadata.MatchingGlobalUse'>, <class 'pkgcheck.checks.metadata.MissingLocalUseDesc'>, <class 'pkgcheck.checks.metadata.ProbableGlobalUse'>, <class 'pkgcheck.checks.metadata.ProbableUseExpand'>, <class 'pkgcheck.checks.metadata.UnderscoreInUseFlag'>, <class 'pkgcheck.checks.metadata.UnusedLocalUse'>})
required_addons = (<class 'pkgcheck.addons.UseAddon'>,)
scope = <PackageScope desc='package' @0x7f4ee7e994d0>
class pkgcheck.checks.metadata.MatchingGlobalUse(flag, **kwargs)[source]

Bases: PackageResult, Warning

Local USE flag description matches a global USE flag.

property desc

Result description.

name = 'MatchingGlobalUse'
class pkgcheck.checks.metadata.MisplacedWeakBlocker(attr, atom, **kwargs)[source]

Bases: Warning, VersionResult

Weak blocker is within a misplaced dependency class.

Weak blockers control whether we ignore file collisions at the point of merge, so being (exclusively) defined in DEPEND or BDEPEND is wrong.

Note that in cases where the weak blocker is also defined in RDEPEND, this warning won’t be triggered, to give leeway given this is a common ebuild pattern.

property desc

Result description.

name = 'MisplacedWeakBlocker'
class pkgcheck.checks.metadata.MissingLicense(pkg, **kwargs)[source]

Bases: VersionResult, Error

Package has no LICENSE defined.

desc = 'no license defined'
name = 'MissingLicense'
class pkgcheck.checks.metadata.MissingLicenseRestricts(license_group, license, restrictions, **kwargs)[source]

Bases: VersionResult, Warning

Restrictive license used without matching RESTRICT.

property desc

Result description.

name = 'MissingLicenseRestricts'
class pkgcheck.checks.metadata.MissingLocalUseDesc(flags, **kwargs)[source]

Bases: PackageResult, Warning

Local USE flag(s) missing descriptions.

property desc

Result description.

name = 'MissingLocalUseDesc'
class pkgcheck.checks.metadata.MissingPackageRevision(dep, atom, **kwargs)[source]

Bases: VersionResult, Warning

Missing package revision in =cat/pkg dependencies.

The dependency string uses the = operator without specifying a revision. This means that only -r0 of the dependency will be matched, and newer revisions of the same ebuild will not be accepted.

If any revision of the package is acceptable, the ~ operator should be used instead of =. If only the initial revision of the dependency is allowed, -r0 should be appended in order to make the intent explicit.

property desc

Result description.

name = 'MissingPackageRevision'
class pkgcheck.checks.metadata.MissingSlotDep(dep, dep_slots, **kwargs)[source]

Bases: VersionResult, Warning

Missing slot value in dependencies.

The package dependency does not specify a slot but the target package has multiple slots. The behavior for satisfying this kind of dependency is not strictly defined, and may result in either any or the newest package slot being accepted.

Please verify whether the package works with all the dependency slots. If only one slot is actually acceptable, specify it explicitly. If multiple slots are acceptable, please use either := or explicit :* slot operator. The operators are described in detail in the devmanual [2].

property desc

Result description.

name = 'MissingSlotDep'
class pkgcheck.checks.metadata.MissingSlotDepCheck(*args, use_addon)[source]

Bases: Check

Check for missing slot dependencies.

feed(pkg)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.checks.metadata.MissingSlotDep'>})
required_addons = (<class 'pkgcheck.addons.UseAddon'>,)
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
class pkgcheck.checks.metadata.MissingTestRestrict(pkg, **kwargs)[source]

Bases: VersionResult, Warning

Missing RESTRICT="!test? ( test )".

Traditionally, it was assumed that IUSE=test is a special flag that is implicitly enabled when running src_test() is enabled. However, this is not standarized and packages need to explicitly specify RESTRICT="!test? ( test )" in order to guarantee that test phase will be skipped when the flag is disabled and therefore test dependencies may not be installed.

property desc

Result description.

name = 'MissingTestRestrict'
class pkgcheck.checks.metadata.MissingUnpackerDep(eapi, filenames, unpackers, **kwargs)[source]

Bases: VersionResult, Warning

Missing dependency on a required unpacker package.

Package uses an archive format for which an unpacker is not provided by the system set, and lacks an explicit dependency on the unpacker package.

property desc

Result description.

name = 'MissingUnpackerDep'
class pkgcheck.checks.metadata.MissingUnpackerDepCheck(*args, use_addon)[source]

Bases: Check

Check whether package is missing unpacker dependencies.

feed(pkg)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.checks.metadata.MissingUnpackerDep'>})
non_system_unpackers = {'.zip': frozenset({'app-arch/unzip'}), '.7z': frozenset({'app-arch/p7zip'}), '.rar': frozenset({'app-arch/unrar', 'app-arch/rar'}), '.lha': frozenset({'app-arch/lha'}), '.lzh': frozenset({'app-arch/lha'})}
required_addons = (<class 'pkgcheck.addons.UseAddon'>,)
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
class pkgcheck.checks.metadata.MissingUri(filenames, **kwargs)[source]

Bases: VersionResult, Warning

RESTRICT=fetch isn’t set, yet no full URI exists.

property desc

Result description.

name = 'MissingUri'
class pkgcheck.checks.metadata.MissingUseDepDefault(attr, atom, flag, pkgs, **kwargs)[source]

Bases: VersionResult, Warning

Package dependencies with USE dependencies missing defaults.

property desc

Result description.

name = 'MissingUseDepDefault'
class pkgcheck.checks.metadata.NonexistentBlocker(attr, atom, **kwargs)[source]

Bases: VersionResult, Warning

No matches for blocker dependency in repo history.

For the gentoo repo this means it was either removed before the CVS -> git transition (which occurred around 2015-08-08) or it never existed at all.

Note that this ignores slot/subslot deps and USE deps in blocker atoms.

property desc

Result description.

name = 'NonexistentBlocker'
class pkgcheck.checks.metadata.OutdatedBlocker(attr, atom, age, **kwargs)[source]

Bases: VersionResult, Info

Blocker dependency removed at least two years ago from the tree.

Note that this ignores slot/subslot deps and USE deps in blocker atoms.

property desc

Result description.

name = 'OutdatedBlocker'
class pkgcheck.checks.metadata.OutdatedBlockersCheck(*args, git_addon)[source]

Bases: Check

Check for outdated and nonexistent blocker dependencies.

feed(pkg)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.checks.metadata.NonexistentBlocker'>, <class 'pkgcheck.checks.metadata.OutdatedBlocker'>})
required_addons = (<class 'pkgcheck.addons.git.GitAddon'>,)
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
class pkgcheck.checks.metadata.OverlappingKeywords(keywords, **kwargs)[source]

Bases: VersionResult, Style

Packages having overlapping arch and ~arch KEYWORDS.

property desc

Result description.

name = 'OverlappingKeywords'
class pkgcheck.checks.metadata.ProbableGlobalUse(flag, **kwargs)[source]

Bases: PackageResult, Style

Local USE flag description closely matches a global USE flag.

property desc

Result description.

name = 'ProbableGlobalUse'
class pkgcheck.checks.metadata.ProbableUseExpand(flag, group, **kwargs)[source]

Bases: PackageResult, Warning

Local USE flag that isn’t overridden matches a USE_EXPAND group.

The local USE flag starts with a prefix reserved to USE_EXPAND group, yet it is not a globally defined member of this group. According to the standing policy [3], all possible values for each USE_EXPAND must be defined and documented globally.

This warning can be fixed via moving the local flag description into appropriate profiles/desc file.

property desc

Result description.

name = 'ProbableUseExpand'
class pkgcheck.checks.metadata.PropertiesCheck(*args, use_addon)[source]

Bases: _RestrictPropertiesCheck

PROPERTIES related checks.

known_results = frozenset({<class 'pkgcheck.addons.UnstatedIuse'>, <class 'pkgcheck.checks.metadata.InvalidProperties'>, <class 'pkgcheck.checks.metadata.UnknownProperties'>})
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
class pkgcheck.checks.metadata.RedundantUriRename(pkg, message)[source]

Bases: VersionResult, Style

URI uses a redundant rename that doesn’t change the filename.

property desc

Result description.

name = 'RedundantUriRename'
class pkgcheck.checks.metadata.RequiredUseCheck(*args, use_addon, profile_addon)[source]

Bases: Check

REQUIRED_USE validity checks.

feed(pkg)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.addons.UnstatedIuse'>, <class 'pkgcheck.checks.metadata.InvalidRequiredUse'>, <class 'pkgcheck.checks.metadata.RequiredUseDefaults'>})
required_addons = (<class 'pkgcheck.addons.UseAddon'>, <class 'pkgcheck.addons.profiles.ProfileAddon'>)
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
class pkgcheck.checks.metadata.RequiredUseDefaults(required_use, use=(), keyword=None, profile=None, num_profiles=None, **kwargs)[source]

Bases: VersionResult, Warning

Default USE flag settings don’t satisfy REQUIRED_USE.

The REQUIRED_USE constraints specified in the ebuild are not satisfied by the default USE flags used in one or more profiles. This means that users on those profiles may be unable to install the package out of the box, without having to modify package.use.

This warning is usually fixed via using IUSE defaults to enable one of the needed flags, modifying package.use in the most relevant profiles or modifying REQUIRED_USE.

property desc

Result description.

name = 'RequiredUseDefaults'
class pkgcheck.checks.metadata.RestrictCheck(*args, use_addon)[source]

Bases: _RestrictPropertiesCheck

RESTRICT related checks.

known_results = frozenset({<class 'pkgcheck.addons.UnstatedIuse'>, <class 'pkgcheck.checks.metadata.InvalidRestrict'>, <class 'pkgcheck.checks.metadata.UnknownRestrict'>})
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
class pkgcheck.checks.metadata.RestrictTestCheck(*args)[source]

Bases: Check

Check whether packages specify RESTRICT=”!test? ( test )”.

feed(pkg)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.checks.metadata.MissingTestRestrict'>})
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
class pkgcheck.checks.metadata.SourcingCheck(options, **kwargs)[source]

Bases: Check

Scan for packages with sourcing errors or invalid, sourced metadata variables.

known_results = frozenset({<class 'pkgcheck.checks.metadata.InvalidEapi'>, <class 'pkgcheck.checks.metadata.InvalidSlot'>, <class 'pkgcheck.checks.metadata.SourcingError'>})
priority = -100
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
class pkgcheck.checks.metadata.SourcingError(attr, msg, **kwargs)[source]

Bases: MetadataError, VersionResult

Failed sourcing ebuild.

attr = 'data'
name = 'SourcingError'
class pkgcheck.checks.metadata.SrcUriCheck(*args, use_addon)[source]

Bases: Check

SRC_URI related checks.

Verify that URIs are valid, fetchable, using a supported protocol, and don’t use unspecific filenames.

feed(pkg)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.addons.UnstatedIuse'>, <class 'pkgcheck.checks.metadata.BadFilename'>, <class 'pkgcheck.checks.metadata.BadProtocol'>, <class 'pkgcheck.checks.metadata.InvalidSrcUri'>, <class 'pkgcheck.checks.metadata.MissingUri'>, <class 'pkgcheck.checks.metadata.RedundantUriRename'>, <class 'pkgcheck.checks.metadata.SrcUriFilenameDotPrefix'>, <class 'pkgcheck.checks.metadata.TarballAvailable'>, <class 'pkgcheck.checks.metadata.UnknownMirror'>, <class 'pkgcheck.checks.metadata.UnstableSrcUri'>})
required_addons = (<class 'pkgcheck.addons.UseAddon'>,)
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
valid_protos = frozenset({'ftp', 'http', 'https'})
class pkgcheck.checks.metadata.SrcUriFilenameDotPrefix(filename, **kwargs)[source]

Bases: VersionResult, Error

SRC_URI’s filename starts with a dot.

This is usually a mistake, as referencing empty variable before the dot. Also those files might appear as hidden in many file system viewers. Rename the filename using the -> operator.

property desc

Result description.

name = 'SrcUriFilenameDotPrefix'
class pkgcheck.checks.metadata.StableKeywordsOnTestingEapi(eapi, keywords, **kwargs)[source]

Bases: VersionResult, Error

Package has stable keywords on EAPI marked as testing-only.

property desc

Result description.

name = 'StableKeywordsOnTestingEapi'
class pkgcheck.checks.metadata.StaleLiveCheck(options, **kwargs)[source]

Bases: Check

Check for stale live ebuilds.

feed(pkgs)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.checks.metadata.StaleLiveEAPI'>})
scope = <PackageScope desc='package' @0x7f4ee7e994d0>
class pkgcheck.checks.metadata.StaleLiveEAPI(old_eapi, new_eapi, **kwargs)[source]

Bases: VersionResult, Warning

Live ebuild is using older an EAPI then release ebuilds.

Live ebuilds should always use an EAPI version at least as new as the release ebuilds.

property desc

Result description.

name = 'StaleLiveEAPI'
class pkgcheck.checks.metadata.TarballAvailable(uris, **kwargs)[source]

Bases: VersionResult, Style

URI uses .zip archive when .tar* is available.

Tarballs should be preferred over zip archives due to better compression and no extra unpack dependencies.

property desc

Result description.

name = 'TarballAvailable'
class pkgcheck.checks.metadata.UnderscoreInUseFlag(flag, **kwargs)[source]

Bases: PackageResult, Style

USE flag uses underscore that is reserved for USE_EXPAND.

The USE flag name uses underscore. However, according to PMS underscores are reserved for USE_EXPAND flags [4]. The recommended replacement is hyphen (‘-‘).

property desc

Result description.

name = 'UnderscoreInUseFlag'
class pkgcheck.checks.metadata.UnknownKeywords(keywords, **kwargs)[source]

Bases: VersionResult, Error

Packages using unknown KEYWORDS.

property desc

Result description.

name = 'UnknownKeywords'
class pkgcheck.checks.metadata.UnknownLicense(licenses, **kwargs)[source]

Bases: _LicenseResult, Error

License usage with no matching license file.

license_type = 'unknown'
name = 'UnknownLicense'
class pkgcheck.checks.metadata.UnknownMirror(mirror, uri, **kwargs)[source]

Bases: VersionResult, Error

URI uses an unknown mirror.

property desc

Result description.

name = 'UnknownMirror'
class pkgcheck.checks.metadata.UnknownProperties(properties, **kwargs)[source]

Bases: VersionResult, Warning

Package’s PROPERTIES metadata has unknown entries.

property desc

Result description.

name = 'UnknownProperties'
class pkgcheck.checks.metadata.UnknownRestrict(restricts, **kwargs)[source]

Bases: VersionResult, Warning

Package’s RESTRICT metadata has unknown entries.

property desc

Result description.

name = 'UnknownRestrict'
class pkgcheck.checks.metadata.UnknownUseFlags(flags, **kwargs)[source]

Bases: _UseFlagsResult, Error

Package IUSE contains unknown USE flags.

flag_type = 'unknown'
name = 'UnknownUseFlags'
class pkgcheck.checks.metadata.UnnecessaryLicense(pkg, **kwargs)[source]

Bases: VersionResult, Warning

LICENSE defined for package that is license-less.

property desc

Result description.

name = 'UnnecessaryLicense'
class pkgcheck.checks.metadata.UnsortedKeywords(keywords, sorted_keywords=(), **kwargs)[source]

Bases: VersionResult, Style

Packages with unsorted KEYWORDS.

KEYWORDS should be sorted in alphabetical order with prefix keywords (those with hyphens in them, e.g. amd64-fbsd) after regular arches and globs (e.g. -*) before them.

property desc

Result description.

name = 'UnsortedKeywords'
class pkgcheck.checks.metadata.UnstableSrcUri(uris, **kwargs)[source]

Bases: VersionResult, Warning

SRC_URI uses unstable URIs.

This is usually a mistake, as those URIs are not guaranteed to be unchanged which might cause checksum mismatch.

property desc

Result description.

name = 'UnstableSrcUri'
class pkgcheck.checks.metadata.UnsupportedEclassEapi(eapi, eclass, **kwargs)[source]

Bases: VersionResult, Warning

Ebuild inherits an eclass with outdated @SUPPORTED_EAPIS.

property desc

Result description.

name = 'UnsupportedEclassEapi'
class pkgcheck.checks.metadata.UnusedLocalUse(flags, **kwargs)[source]

Bases: PackageResult, Warning

Unused local USE flag(s).

property desc

Result description.

name = 'UnusedLocalUse'
class pkgcheck.checks.metadata.UseFlagWithoutDeps(flags, **kwargs)[source]

Bases: VersionResult, Warning

Special USE flag with little utility and without effect on dependencies.

Various USE flags, such as “ipv6”, should be always turned on or off, and their existence is questionable, in cases were it doesn’t introduce new dependencies. Other USE flags, such as “bash-completion”, without any new dependencies, are probable violators of small files QA policy [5].

In cases where this USE flag is appropriate, you can silence this warning by adding a description to this USE flag in metadata.xml file and thus making it a local USE flag instead of global one.

property desc

Result description.

name = 'UseFlagWithoutDeps'
class pkgcheck.checks.metadata.UseFlagsWithoutEffectsCheck(*args)[source]

Bases: GentooRepoCheck

Check for USE flags without effects.

feed(pkg)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.checks.metadata.UseFlagWithoutDeps'>})
scope = <PackageScope desc='version' @0x7f4ee7e995d0>
warn_use_small_files = frozenset({'bash-completion', 'fish-completion', 'ipv6', 'logrotate', 'unicode', 'vim-syntax', 'zsh-completion'})
class pkgcheck.checks.metadata.VirtualKeywordsUpdate(keywords, **kwargs)[source]

Bases: VersionResult, Info

Virtual packages with keywords that can be updated to match dependencies.

property desc

Result description.

name = 'VirtualKeywordsUpdate'
class pkgcheck.checks.metadata.VirtualProvidersCheck(options, **kwargs)[source]

Bases: Check

Check providers of virtual packages.

feed(pkgs)[source]

Handle functionality against the passed in item.

known_results = frozenset({<class 'pkgcheck.checks.metadata.VirtualWithBdepend'>, <class 'pkgcheck.checks.metadata.VirtualWithDepend'>, <class 'pkgcheck.checks.metadata.VirtualWithSingleProvider'>})
pkg_has_conditional_exception(pkgs)[source]
scope = <PackageScope desc='package' @0x7f4ee7e994d0>
useless_depends = (('depend', <class 'pkgcheck.checks.metadata.VirtualWithDepend'>), ('bdepend', <class 'pkgcheck.checks.metadata.VirtualWithBdepend'>))
class pkgcheck.checks.metadata.VirtualWithBdepend(pkg, **kwargs)[source]

Bases: VersionResult, Warning

Virtual package with a BDEPEND defined.

desc = 'virtual package with a BDEPEND defined'
name = 'VirtualWithBdepend'
class pkgcheck.checks.metadata.VirtualWithDepend(pkg, **kwargs)[source]

Bases: VersionResult, Warning

Virtual package with a BDEPEND defined.

desc = 'virtual package with a DEPEND defined'
name = 'VirtualWithDepend'
class pkgcheck.checks.metadata.VirtualWithSingleProvider(provider, **kwargs)[source]

Bases: PackageResult, Warning

Virtual package with a single remaining provider.

Virtual packages are used to provide a common interface for multiple implementations of a given functionality. However, if there is only a single implementation, there is no need for a virtual package. In such case, consider adding the package to package.deprecated and removing the virtual package.

property desc

Result description.

name = 'VirtualWithSingleProvider'