ConfigObj 'un-nest' разделы

Я использую ConfigObj 5.0.6 для хранения многих пользовательских значений, некоторые из которых являются вложенными. Я использую local.ini заменить типичные значения. Внешнего интерфейса нет, поэтому пользователи редактируют конфиги по мере необходимости. Чтобы сделать это более простым и интуитивно понятным, есть некоторые значения, которые относятся к "корневому" уровню объекта конфигурации, но их легче понять, если они находятся во вложенном разделе local.ini файл.

Я использую local.ini заменить значения по умолчанию. Поток приложения предлагает макет конфигурации, который будет иметь вложенные значения ниже вложенных значений.

# un-nested
title = my_title

# nested
[section_1]
val_s1 = val

[section_2]
val_s2 = val

# nested, but I want to be un-nested
val_2 = val

Этот макет, как и положено, ставит val_2 под section_2:

{
 'title': 'my_title',
 {'section_1': {'val_s1': 'val'}},
 {'section_2': {'val_s2': 'val'},
               {'val_2': 'val'}}
}

Можно ли определить val_2 на линии ниже section_2, но получить доступ к нему в разделе "основной" объекта конфигурации?

Я хотел бы в конечном итоге с объектом конфигурации, как это:

{
 'title': 'my_title',
 {'section_1': {'val_s1': 'val'}},
 {'section_2': {'val_s2': 'val'}},
 'val_2': 'val'
}

Конечно, порядок словаря конфигурации не важен; меня интересует возможность использовать вложенные разделы, но изнутри .ini, выйдите из раздела в родительский.

Я не проверял, но подозреваю, что будет работать вложенность всего, начиная с первой строки и затем нарезка объекта конфигурации. То есть пиши local.ini такой, что создает:

{
 'main_level':
  {
   'title': 'my_title',
   {'section_1': {'val_s1': 'val'}},
   {'section_2': {'val_s2': 'val'}},
   'val_2': 'val'
  }
}

Тогда я мог бы использовать config = config['main_level'] когда я впервые создаю объект конфигурации, но мне интересно, не хватает ли мне простого, правильного способа, который не является хакерским.

1 ответ

Решение

Согласно документации, это невозможно:

Во внешнем разделе отдельные значения могут появляться только перед любым подразделом.

Другие вопросы по тегам