pkgcheck.checks.profiles module

Various profile-related checks.

class pkgcheck.checks.profiles.ArchesOutOfSync(arches)[source]

Bases: ProfilesResult, Error

profiles/arches.desc is out of sync with arch.list.

property desc

Result description.

name = 'ArchesOutOfSync'
class pkgcheck.checks.profiles.ArchesWithoutProfiles(arches)[source]

Bases: ProfilesResult, Warning

Arches without corresponding profile listings.

property desc

Result description.

name = 'ArchesWithoutProfiles'
class pkgcheck.checks.profiles.BannedProfileEapi(profile, eapi)[source]

Bases: _ProfileEapiResult, Error

Profile has an EAPI that is banned in the repository.

name = 'BannedProfileEapi'
class pkgcheck.checks.profiles.DeprecatedProfileEapi(profile, eapi)[source]

Bases: _ProfileEapiResult, Warning

Profile has an EAPI that is deprecated in the repository.

name = 'DeprecatedProfileEapi'
class pkgcheck.checks.profiles.LaggingProfileEapi(profile, eapi, parent, parent_eapi)[source]

Bases: ProfilesResult, Warning

Profile has an EAPI that is older than one of its parents.

property desc

Result description.

name = 'LaggingProfileEapi'
class pkgcheck.checks.profiles.NonexistentCategories(categories)[source]

Bases: ProfilesResult, Warning

Category entries in profiles/categories that don’t exist in the repo.

property desc

Result description.

name = 'NonexistentCategories'
class pkgcheck.checks.profiles.NonexistentProfilePath(path)[source]

Bases: ProfilesResult, Error

Specified profile path in profiles.desc doesn’t exist.

property desc

Result description.

name = 'NonexistentProfilePath'
class pkgcheck.checks.profiles.OutdatedProfilePackage(path, atom, age)[source]

Bases: ProfilesResult, Warning

Profile files includes package entry that doesn’t exist in the repo for a mentioned period of time.

This is only reported if the version was removed more than 3 months ago, or all versions of this package were removed (i.e. last-rite).

property desc

Result description.

name = 'OutdatedProfilePackage'
class pkgcheck.checks.profiles.ProfileError(msg)[source]

Bases: ProfilesResult, LogError

Erroneously formatted data in various profile files.

name = 'ProfileError'
class pkgcheck.checks.profiles.ProfileMissingImplicitExpandValues(path: str, groups: Iterable[str])[source]

Bases: ProfilesResult, Warning

Profile is missing USE_EXPAND_VALUES for implicit USE_EXPAND group.

property desc

Result description.

name = 'ProfileMissingImplicitExpandValues'
class pkgcheck.checks.profiles.ProfileWarning(msg)[source]

Bases: ProfilesResult, LogWarning

Badly formatted data in various profile files.

name = 'ProfileWarning'
class pkgcheck.checks.profiles.ProfilesCheck(*args, use_addon: UseAddon, keywords_addon: KeywordsAddon, git_addon: GitAddon)[source]

Bases: Check

Scan repo profiles for unknown flags/packages.

feed(profile: Profile)[source]

Handle functionality against the passed in item.

known_files = {'deprecated': ('deprecated', <function ProfilesCheck._deprecated>), 'eapi': ('eapi', <function ProfilesCheck._pull_attr>), 'make.defaults': ('make_defaults', <function ProfilesCheck._make_defaults>), 'package.accept_keywords': ('accept_keywords', <function ProfilesCheck._pkg_keywords>), 'package.deprecated': ('pkg_deprecated', <function ProfilesCheck._pkg_atoms>), 'package.keywords': ('keywords', <function ProfilesCheck._pkg_keywords>), 'package.mask': ('masks', <function ProfilesCheck._pkg_masks>), 'package.unmask': ('unmasks', <function ProfilesCheck._pkg_atoms>), 'package.use': ('pkg_use', <function ProfilesCheck._pkg_use>), 'package.use.force': ('pkg_use_force', <function ProfilesCheck._pkg_use>), 'package.use.mask': ('pkg_use_mask', <function ProfilesCheck._pkg_use>), 'package.use.stable.force': ('pkg_use_stable_force', <function ProfilesCheck._pkg_use>), 'package.use.stable.mask': ('pkg_use_stable_mask', <function ProfilesCheck._pkg_use>), 'packages': ('packages', <function ProfilesCheck._pkg_atoms>), 'parent': ('parents', <function ProfilesCheck._pull_attr>), 'use.force': ('use_force', <function ProfilesCheck._use>), 'use.mask': ('use_mask', <function ProfilesCheck._use>), 'use.stable.force': ('use_stable_force', <function ProfilesCheck._use>), 'use.stable.mask': ('use_stable_mask', <function ProfilesCheck._use>)}
known_results = frozenset({<class 'pkgcheck.checks.profiles.OutdatedProfilePackage'>, <class 'pkgcheck.checks.profiles.ProfileError'>, <class 'pkgcheck.checks.profiles.ProfileMissingImplicitExpandValues'>, <class 'pkgcheck.checks.profiles.ProfileWarning'>, <class 'pkgcheck.checks.profiles.UnknownProfileArch'>, <class 'pkgcheck.checks.profiles.UnknownProfilePackage'>, <class 'pkgcheck.checks.profiles.UnknownProfilePackageKeywords'>, <class 'pkgcheck.checks.profiles.UnknownProfilePackageUse'>, <class 'pkgcheck.checks.profiles.UnknownProfileUse'>, <class 'pkgcheck.checks.profiles.UnknownProfileUseExpand'>, <class 'pkgcheck.checks.profiles.UnknownProfileUseExpandValue'>, <class 'pkgcheck.checks.profiles.UnmatchedProfilePackageUnmask'>})
required_addons = (<class 'pkgcheck.addons.UseAddon'>, <class 'pkgcheck.addons.KeywordsAddon'>, <class 'pkgcheck.addons.git.GitAddon'>)
scope = <LocationScope desc='profile_node' @0x7f4ee7e9aa10>
class pkgcheck.checks.profiles.RepoProfilesCheck(*args, profile_addon)[source]

Bases: RepoCheck

Scan repo for various profiles directory issues.

Including unknown arches in profiles, arches without profiles, and unknown categories.

finish()[source]

Do cleanup and yield final results here.

known_profile_statuses = frozenset({'dev', 'exp', 'stable'})
known_results = frozenset({<class 'pkgcheck.checks.profiles.ArchesOutOfSync'>, <class 'pkgcheck.checks.profiles.ArchesWithoutProfiles'>, <class 'pkgcheck.checks.profiles.BannedProfileEapi'>, <class 'pkgcheck.checks.profiles.DeprecatedProfileEapi'>, <class 'pkgcheck.checks.profiles.LaggingProfileEapi'>, <class 'pkgcheck.checks.profiles.NonexistentCategories'>, <class 'pkgcheck.checks.profiles.NonexistentProfilePath'>, <class 'pkgcheck.checks.profiles.ProfileError'>, <class 'pkgcheck.checks.profiles.ProfileWarning'>, <class 'pkgcheck.checks.profiles.UnknownCategoryDirs'>, <class 'pkgcheck.checks.profiles.UnusedProfileDirs'>})
required_addons = (<class 'pkgcheck.addons.profiles.ProfileAddon'>,)
scope = <LocationScope desc='profiles' @0x7f4ee7e9a450>
unknown_categories_whitelist = ('scripts',)
class pkgcheck.checks.profiles.UnknownCategoryDirs(dirs)[source]

Bases: ProfilesResult, Warning

Category directories that aren’t listed in a repo’s categories.

Or the categories of the repo’s masters as well.

property desc

Result description.

name = 'UnknownCategoryDirs'
class pkgcheck.checks.profiles.UnknownProfileArch(path: str, arch: str)[source]

Bases: ProfilesResult, Warning

Profile includes unknown ARCH.

property desc

Result description.

name = 'UnknownProfileArch'
class pkgcheck.checks.profiles.UnknownProfilePackage(path, atom)[source]

Bases: ProfilesResult, Warning

Profile files includes package entry that doesn’t exist in the repo.

property desc

Result description.

name = 'UnknownProfilePackage'
class pkgcheck.checks.profiles.UnknownProfilePackageKeywords(path, atom, keywords)[source]

Bases: ProfilesResult, Warning

Profile files include package keywords that don’t exist.

property desc

Result description.

name = 'UnknownProfilePackageKeywords'
class pkgcheck.checks.profiles.UnknownProfilePackageUse(path, atom, flags)[source]

Bases: ProfilesResult, Warning

Profile files include entries with USE flags that aren’t used on any matching packages.

property desc

Result description.

name = 'UnknownProfilePackageUse'
class pkgcheck.checks.profiles.UnknownProfileUse(path, flags)[source]

Bases: ProfilesResult, Warning

Profile files include USE flags that don’t exist.

property desc

Result description.

name = 'UnknownProfileUse'
class pkgcheck.checks.profiles.UnknownProfileUseExpand(path: str, var: str, groups: Iterable[str])[source]

Bases: ProfilesResult, Warning

Profile includes nonexistent USE_EXPAND group(s).

property desc

Result description.

name = 'UnknownProfileUseExpand'
class pkgcheck.checks.profiles.UnknownProfileUseExpandValue(path: str, group: str, values: Iterable[str])[source]

Bases: ProfilesResult, Warning

Profile defines unknown default values for USE_EXPAND group.

property desc

Result description.

name = 'UnknownProfileUseExpandValue'
class pkgcheck.checks.profiles.UnmatchedProfilePackageUnmask(path, atom)[source]

Bases: ProfilesResult, Warning

The profile’s files include a package.unmask (or similar) entry which negates a non-existent mask, i.e. it undoes a mask which doesn’t exist in the parent profile.

No atoms matching this entry were found in the parent profile to unmask.

property desc

Result description.

name = 'UnmatchedProfilePackageUnmask'
class pkgcheck.checks.profiles.UnusedProfileDirs(dirs)[source]

Bases: ProfilesResult, Warning

Unused profile directories detected.

property desc

Result description.

name = 'UnusedProfileDirs'
pkgcheck.checks.profiles.dir_parents(path)[source]

Yield all directory path parents excluding the root directory.

Example: >>> list(dir_parents(‘/root/foo/bar/baz’)) [‘root/foo/bar’, ‘root/foo’, ‘root’]

pkgcheck.checks.profiles.verify_files(*files)[source]

Decorator to register file verification methods.