# Class Hierarchy

- `collections.Iterable`
  - gbp.rpm.linkedlist.LinkedList - Doubly linked list
- `collections.Iterator`
  - gbp.rpm.linkedlist.LinkedListIterator - Iterator for the linked list
- `datetime.tzinfo`
  - gbp.git.modifier.GitTz - Simple class to store the utc offset only
- `Exception`
  - gbp.command_wrappers.CommandExecFailed - Exception raised by the Command class
  - gbp.deb.changelog.NoChangeLogError - No changelog found
  - gbp.deb.changelog.ParseChangeLogError - Problem parsing changelog
  - gbp.deb.control.NoControlError - No control found
  - gbp.deb.control.ParseControlError - Problem parsing control
  - gbp.deb.format.DebianSourceFormatError - Undocumented
  - gbp.deb.source.DebianSourceError - Undocumented
  - gbp.deb.uscan.UscanError - Undocumented
  - gbp.errors.GbpError - Generic exception raised in git-buildpackage commands
    - gbp.scripts.buildpackage_rpm.GbpAutoGenerateError - Undocumented
  - gbp.git.errors.GitError - Exception thrown by Git related classes
    - gbp.git.modifier.GitModifierError - Exception thrown by `GitModifier`
    - gbp.git.repository.GitRepositoryError - Exception thrown by `GitRepository`
      - gbp.deb.rollbackgit.RollbackError - Error raised if the rollback failed
  - gbp.rpm.changelog.ChangelogError - Problem parsing changelog
  - gbp.rpm.MacroExpandError - Macro expansion in spec file failed
  - gbp.rpm.NoSpecError - Spec file parsing error
  - gbp.scripts.import_dsc.SkipImport - Undocumented
  - gbp.scripts.import_srpm.SkipImport - Nothing imported
- `list`
  - gbp.patch_series.PatchSeries - A series of `Patch`es as read from a quilt series file).
- `logging.Logger`
  - gbp.log.GbpLogger - Logger class for git-buildpackage
- `logging.StreamHandler`
  - gbp.log.GbpStreamHandler - Special stream handler for enabling colored output
- `object`
  - gbp.command_wrappers.Command - Wraps a shell command, so we don't have to store any kind of command line options in one of the git-buildpackage commands
    - gbp.command_wrappers.CatenateTarArchive - Wrap tar to catenate a tar file with the next
    - gbp.command_wrappers.CatenateZipArchive - Wrap zipmerge tool to catenate a zip file with the next
    - gbp.command_wrappers.DpkgSourceExtract - Wrap dpkg-source to extract a Debian source package into a certain directory
    - gbp.command_wrappers.GitCommand - Mother/Father of all git commands
    - gbp.command_wrappers.PackTarArchive - Wrap tar to pack a compressed tar archive
    - gbp.command_wrappers.RemoveTree - Wrap rm to remove a whole directory tree
    - gbp.command_wrappers.RunAtCommand - Run a command in a specific directory
      - gbp.scripts.common.hook.Hook - A hook run by one of the scripts
    - gbp.command_wrappers.UnpackTarArchive - Wrap tar to unpack a compressed tar archive
    - gbp.command_wrappers.UnpackZipArchive - Wrap zip to Unpack a zip file
    - gbp.deb.DpkgCompareVersions - No class docstring; 0/1 class variables, 0/1 instance variables, 1/2 methods documented
      - gbp.scripts.import_dscs.DscCompareVersions - Undocumented
    - gbp.pkg.pristinetar.PristineTar - The pristine-tar branch in a git repository
      - gbp.deb.pristinetar.DebianPristineTar - The pristine-tar branch in a Debian git repository
  - gbp.deb.changelog.ChangeLog - A Debian changelog
  - gbp.deb.changelog.ChangeLogSection - A section in the changelog describing one particular version
  - gbp.deb.control.Control - A Debian control
  - gbp.deb.dscfile.DscFile - Keeps data read from a dscfile
  - gbp.deb.format.DebianSourceFormat - Contents of debian/source/format
  - gbp.deb.source.DebianSource - A debianized source tree
  - gbp.deb.source.FileVfs - No class docstring; 0/1 instance variables, 1/2 methods documented
  - gbp.deb.uscan.Uscan - No class docstring; 0/1 class variables, 0/3 instance variables, 4/7 methods documented
  - gbp.git.args.GitArgs - Handle arguments to git commands
  - gbp.git.commit.GitCommit - A git commit
  - gbp.git.fastimport.FastImport - Add data to a git repository using git fast-import
  - gbp.git.modifier.GitModifier - Stores authorship/committer information
  - gbp.git.repository.GitRemote - Class representing a remote repository
  - gbp.git.repository.GitRepository - Represents a git repository at path. It's currently assumed that the git repository is stored in a directory named .git/ below path.
    - gbp.pkg.git.PkgGitRepository - A git repository that holds the source of a Distro package
      - gbp.deb.git.DebianGitRepository - A git repository that holds the source of a Debian package
        - gbp.deb.rollbackgit.RollbackDebianGitRepository - Like a DebianGitRepository but can also perform rollbacks and knows about some of the inner workings upstream vcs_tag, …
      - gbp.rpm.git.RpmGitRepository - A git repository that holds the source of an RPM package
  - gbp.git.vfs.GitVfs - No class docstring; 1/1 classes, 0/2 instance variables, 1/2 methods documented
  - gbp.git.vfs.GitVfs._File - A file like object representing a file in git
  - gbp.log.GbpFilter - Filter for enabling selective output
  - gbp.patch_series.Patch - A patch in a `PatchSeries`
    - gbp.patch_series.Dep3Patch - No class docstring; 0/1 instance variables, 2/4 methods documented
  - gbp.pkg.archive.Archive - No class docstring; 0/2 class variables, 1/1 static methods documented
  - gbp.pkg.compressor.Compressor - No class docstring; 0/3 class variables, 0/2 instance variables, 2/8 methods documented
  - gbp.pkg.pkgpolicy.PkgPolicy - Common helpers for packaging policy.
    - gbp.deb.policy.DebianPkgPolicy - Packaging policy for Debian Source Packages
    - gbp.rpm.policy.RpmPkgPolicy - Packaging policy for RPM
  - gbp.pkg.upstreamsource.UpstreamSource - Upstream source. Can be either an unpacked dir, a tarball or another type of archive
    - gbp.deb.upstreamsource.DebianUpstreamSource - Upstream source class for Debian
      - gbp.deb.upstreamsource.DebianAdditionalTarball - Upstream source class for additional tarballs
    - gbp.rpm.RpmUpstreamSource - Upstream source class for RPM packages
  - gbp.rpm.changelog._ChangelogEntry - An entry (one 'change') in an RPM changelog
  - gbp.rpm.changelog._ChangelogHeader - The header part of one changelog section
  - gbp.rpm.changelog._ChangelogSection - One section (set of changes) in an RPM changelog
  - gbp.rpm.changelog.Changelog - An RPM changelog
  - gbp.rpm.changelog.ChangelogParser - Parser for RPM changelogs
  - gbp.rpm.linkedlist.LinkedListNode - Node of the linked list
  - gbp.rpm.policy.RpmPkgPolicy.Changelog - Container for changelog related policy settings
  - gbp.rpm.policy.RpmPkgPolicy.ChangelogEntryFormatter - Helper class for generating changelog entries from git commits
  - gbp.rpm.SpecFile - Class for parsing/modifying spec files
  - gbp.rpm.SrcRpmFile - Keeps all needed data read from a source rpm
  - gbp.scripts.common.ExitCodes - Undocumented
  - gbp.scripts.import_dscs.cmp_to_key.K - Undocumented
  - gbp.scripts.import_dscs.GitImportDsc - Undocumented
  - gbp.scripts.rpm_ch.ChangelogFile - Container for changelog file, whether it be a standalone changelog or a spec file
  - gbp.tristate.Tristate - Tri-state value: on, off or auto
- `optparse.Option`
  - gbp.config.GbpOption - Undocumented
- `optparse.OptionGroup`
  - gbp.config.GbpOptionGroup - No class docstring; 1/2 methods documented
- `optparse.OptionParser`
  - gbp.config.GbpOptionParser - No summary
    - gbp.config.GbpOptionParserDebian - Handles commandline options and parsing of config files for Debian tools
    - gbp.config.GbpOptionParserRpm - Handles commandline options and parsing of config files for rpm tools