Source object

class repolib.Source (name=’‘,enabled=True,types=[],uris=[],suites=[],components=[],options={},filename=’example.source’)

Create a new Source object. All parameters should be passed as keyword arguments. Each parameter has its own more detailed description below, but in short they are:

  • name - The human-readable name of the source. (default: ‘’)
  • enabled - Whether the source is enabled or not at creation. (default: True)
  • types - A list of the types that the source should use. (default: [])
  • uris - A list of URIs from which to fetch software or check for updates. (default: [])
  • suites - Suites in which to narrow available software. (default: [])
  • components - Components of the source repository to enable. (default: [])
  • options - Optional items affecting the source. (default: {})
  • filename - The filename to save the source to on disk. (default: ‘example.sources’)

The following decribe how each of these are used.

name

This is a human-readable and nicely-formatted name to help a user recognize what this source is. Any unicode character is allowed in this field. If a source is opened which doesn’t have a name field, the filename will be used.

name is a string value, set to '' by default. If there is no name in a loaded source, it will be set to the same as the filename (minus the extension).

This field maps to the X-Repolib-Name: field in the .sources file, which is ignored by Apt and other standards-compliant sources parsers.

enabled

Apt sources can be disbaled without removing them entirely from the system. A disabled source is excluded from updates and new software installs, but it can be easily re-enabled at any time. It defaults to True.

This field maps to the Enabled: field in the .sources file. This is optional per the DEB822 standard, however if set to anything other than no, the source is considered enabled.

types

Debian archives may contain either binary packages or source code packages, and this value specifies which of those Apt should look for in the source. deb is used to look for binary packages, while deb-src looks for source code packages. RepoLib stores this value as a list of aptsourcetype-enum`s, and defaults to ``[AptSourceType.BINARY]`.

This field maps to the Types: field in the sources file.

uris

A list of string values describing the URIs from which to fetch package lists and software for updates and installs. The currently recognized URI types are:

  • file
  • cdrom
  • http
  • ftp
  • copy
  • rsh
  • ssh

Note

Although these are the currently-recognized official URI types, Apt can be extended with additional URI schemes through extension packages. Thus it is not recommended to parse URIs by type and instead rely on user input being correct and to throw exceptions when that isn’t the case.

suites

The Suite, also known as the distribution specifies a subdirectory of the main archive root in which to look for software. This is typically used to differentiate versions for the same OS, e.g. disco or cosmic for Ubuntu, or squeeze and unstable for Debian.

This value maps to the Suites: field in the sources file.

components

This value is a list of strings describing the enabled distro components to download software from. Common values include main, restricted, nonfree, etc.

options

This is a dictionary containing key value pairs of options to add to the source. Options often are used to restrict a source to certain CPU architectures or languages. Valid options include:

  • Architectures
  • Languages
  • Targets
  • PDiffs
  • By-Hash

filename

This is a string value describing the filename to save the source to when using the save-to-disk-method. It defaults to example.sources

Methods

make_source_string()

Source.make_source_string()
Takes the data from the Source object and makes it a printable string for output to console or for saving to a file. The save_to_disk() method uses this method as a basis for its file output.

Note

The Name: field output by this method is not suitable for directly saving to a file without additional processing. When using this method to generate data for manually saving to disk, be sure to replace Name: with X-Repolib-Name: first.

save_to_disk()

Source.save_to_disk()
Takes all of the current data saved in the Source object and writes it to the disk. It uses the current filename attribute as the storage location within /etc/apt/sources.list.d.

load_from_file()

Source.load_from_file(filename=None)
Loads the source from a file on disk. The location loaded depends on the filename parameter’s value, as described below:

filename

The filename of the sources file to load from the disk. If ommitted, the method instead loads from the current filename attribute, otherwise the method sets the filename attribute to the value of this argument. For example:

>>> source = Source()
>>> source.filename
'example.sources'
>>> source.load_from_file(filename='google-chrome.sources')
>>> source.filename
'google-chrome.sources'
>>> source_with_name = Source()
>>> source_with_name.filename = 'ppa-system76-pop.sources'
>>> source_with_name.load_from_file()
>>> source_with_name.filename
'ppa-system76-pop.sources'

set_source_enabled()

Source.set_source_enabled(is_enabled)
This method can be used to quickly set the Source object.``types`` attribute. Since the types attribute is a list of AptSourceType values, this method can quickly set the type to either of these values without needing to use the Enum directly. The argument is_enabled is a boolean value.

is_enabled

If True, the Source object types attribute is set to [AptSourceType.BINARY, AptSourceType.SOURCE]. Otherwise, it’s set to [AptSourceType.BINARY] only.