# Upload Target / Profile Implementation

This contains a lot of backing code to get at profiles.

## Commonly used functions

dput.profile.load_profile(host)

  Load a profile, for a given host `host`. In the case where `host` has a “:”, that’ll be treated as an expansion for config strings. For instance:

  `ppa:paultag/fluxbox` will expand any `%(ppa)s` strings to `paultag/fluxbox`. Comes in super handy.

dput.profile.profiles()

  Get a list of all profiles we know about. It returns a set of strings, which can be accessed with `load_profile()`

## Multi Configuration Implementation

Warning

This is mostly just used internally, please don’t use this directly unless you know what you’re doing(tm). In most cases, `dput.profile.load_profile()` and `dput.profile.profiles()` will do the trick.

class dput.profile.MultiConfig

  Multi-configuration abstraction. This helps abstract the underlying configurations from the user.

  This is a subclass of `dput.config.AbstractConfig`

  get_config(name)

    See `dput.config.AbstractConfig.get_config()`

  get_config_blocks()

    See `dput.config.AbstractConfig.get_config_blocks()`

  get_defaults()

    See `dput.config.AbstractConfig.get_defaults()`

  preload(objs)

    See `dput.config.AbstractConfig.preload()`

  set_replacements(replacements)

    See `dput.config.AbstractConfig.set_replacements()`