API docs for “spamfighter.utils.config”

# Module s.u.config

Part of spamfighter.utils View Source

Питоновский враппер конфигурационных XML файлов

Превращает xml файл с конфигом в питоновскую структуру настроек

Парсинг xml ===========

- тег со значением транслируется в строковую переменную:

         <variable>value</variable>
         >>>variable
         "value"

- тег c аттрибутом type по возможности будет оттранслирован в переменную данного типа:

         <variable type="int">5</variable>
         >>>variable
         5

- вложенные теги во вложенные объекты класса {L Cfg} где дочерние элементы представлены атрибутами:

         <parent>
             <child>value</child>
             <child2>value</child>
         </parent>
         >>>parent.child
         "value"
         >>>parent.child2
         "value"

- Одинаковые теги с указанным id превращаются в питоновский хэш:

         <parent>
             <items id = 'first'>value1</items>
             <items id = 'second'>value2</items>
         </parent>

         >>>parent.items['first']
         "value1"

Структура xml конфига ===================== :

       <?xml version="1.0" encoding="UTF-8"?>
       <!DOCTYPE config>
       <config>
           <global>
           <!-- основная секция. Все что находится в этой секции будет доступно как аттрибуты модуля config  -->
               <servers>
                   <!-- список "боевых" серверов. -->
                   <server id="1">
                       <hostname>webmorda.netstream.ru</hostname>
                   </server>
               </servers>
               <some_my_params>some my value</some_my_params>
           </global>
           <local>
           </local>
           <development>
               <!-- девелоперские настройки. Эта секция будет подключена в случае если сервер на котором запущено приложение, не в списке "боевых" серверов.
               Настройки из этого раздела перезаписывают одноименные настроки из основного раздела -->
               <some_my_params>some my value</some_my_params>
           </development>
           <testing>
           <!-- тестировочный раздел. Будет подключен если приложение запущено из под trial. Настройки из этого раздела перетирают одноименные настройки
           из основного и девелоперского разделов.
               <some_my_params>some my value</some_my_params>
           </testing>
       </config>

Пример использования ====================

from spamfighter.utils import config # в случае если используется конфигурационный файл ./config.xml - этой строки достаточно config.load("cfg.py") print config.some_my_params

Function | parse_file | Парсим переданный файл и возвращаем объект Cfg
Function | load | Загружаем переданный файл с конфигом или конфиг по умолчанию и
Class | Cfg | Класс в который мы заворачиваем хеш. Нужен для того, чтобы нормально отображать штуки типа config.db.dsn
Class | ParseException | Исключение кидаемое при попытке распарсить файл с некорректной структурой
Function | _parse_dom | Undocumented
Function | _get_class_by_name | Undocumented
Function | _is_numeric_dict | Undocumented
Function | _deep_merge | пробегаемся по всему хешу
Function | _get_path | Undocumented
Function | _load_file | Загружаем указанный файл и возвращаем его в качестве конфигурационного.
Function | _export_config | Экспортирует указанный конфигурационный файл в качетсве атрибутов данного модуля.

def parse_file(filename): (source)
Парсим переданный файл и возвращаем объект Cfg

Данный метод НЕ парсит секции global, development и проч, а просто переводит xml в питоновский объект

Использование: from spamfighet.utils.config import parse_file cfg = parse_file('cfg.xml') print cfg.some_my_params

Parameters | filename | имя файла с конфигом @rtype : `Cfg` @return : экземпляр Cfg c настройками (type: `str` )

def _parse_dom(dom): (source)
Undocumented
def _get_class_by_name(name): (source)
Undocumented
def _is_numeric_dict(d): (source)
Undocumented
def _deep_merge(old, new): (source)
пробегаемся по всему хешу

def _get_path(): (source)
Undocumented
def load(filename=_get_path() + '/config.xml'): (source)
Загружаем переданный файл с конфигом или конфиг по умолчанию и отображаем его в виде содержимого данного модуля.

Использование: from spamfighther.utils import config config.load("cfg.xml") print config.some_my_param

def _load_file(filename): (source)
Загружаем указанный файл и возвращаем его в качестве конфигурационного.

def _export_config(__config): (source)
Экспортирует указанный конфигурационный файл в качетсве атрибутов данного модуля.

Предварительно удаляем старые отображения.