# Object Core

The core is a place where all the central objects live. This is used so that all the different modules in dput can access common constants. This helps us fake data (great for testing), and maintain sanity.

## The Logger

Printing to the screen using `print()` is wrong, m’kay? Please do not use it under any conditions. In it’s place, we have a central `logger` object, to use as all the bits of dput see fit.

The logger object is an instantiation of `dput.logger.DputLogger`, so feel free to use any if it’s logging methods. In general, don’t use `info` or above, unless the user really needs to know. Most calls should be to `debug` or `trace`.

Example usage:

    from dput.core import logger
    logger.debug("Hello, World!")
    logger.warning("OH MY DEAR GOD")

## Configuration Objects

The core contains two config directories, which are used by the config modules (as well as other, more friendly places).

All configs are in the form of a dict, the key being the path, and the value being the “weight” of the path. The higher the weight, the less important it is.

Example `dput.core.CONFIG_LOCATIONS`:

    {
        "/usr/share/dput-ng/": 30,
        "/etc/dput.d/": 20,
        os.path.expanduser("~/.dput.d"): 10,
    }

`dput.util.load_config()` is used to access a config from this list, and handles meta-classes, and other edge cases when loading. Please use `dput.util.load_config()` to load config files from these locations.

Example `dput.core.DPUT_CONFIG_LOCATIONS`:

    {
        "/etc/dput.cf": 15,
        os.path.expanduser("~/.dput.cf"): 5
    }

Both are merged into a single list, sorted by list, and used by `dput.profile.MultiConfig` to handle loading and access.

## Schema Directory

This is the path to search for json schemas. By default, this is set to `/usr/share/dput-ng/schemas`. These are not treated as normal conf-files.