nalisador de configuração Python (suporte a chave duplicad

Então, recentemente, comecei a escrever um analisador de configuração para um projeto Python em que estou trabalhando. Inicialmente, evitei o configparser e o configobj, porque queria oferecer suporte a um arquivo de configuração como este:

key=value
key2=anothervalue

food=burger
food=hotdog
food=cake icecream

Em resumo, esse arquivo de configuração será editado via linha de comando sobre SSH frequentemente. Portanto, não quero tabular ou minuciosamente sobre espaçamento (como YAML), mas também quero evitar que chaves com vários valores (10 ou mais facilmente) sejam agrupadas em linhas no vi. É por isso que eu gostaria de oferecer suporte a chaves duplicadas.

No meu mundo ideal, quando solicito comida ao objeto de configuração Python, ele me retorna uma lista com ['burger', 'hotdog', 'cake', 'icecream']. Se não houvesse um valor de comida definido, ele procuraria em um arquivo de configuração padrão e me forneceria esses / esses valore

Eu já implementei o acima

No entanto, meus problemas começaram quando percebi que queria apoiar a preservação de comentários embutidos e coisas do tipo. A maneira como manejo a leitura e gravação nos arquivos de configuração, é decodificar o arquivo em um ditado na memória, ler os valores do dict ou gravar valores no dict e depois despejá-lo novamente em um arquivo. Isso não é muito bom para preservar a ordem das linhas e os comentários, e isso está me incomodando.

A) O ConfigObj parece ter tudo o que preciso, exceto suporte a chaves duplicadas. Em vez disso, ele quer que eu faça uma lista, será muito difícil editar manualmente no vi over ssh devido ao quebra de linha. Posso tornar o configobj mais amigável para ssh / vi?

B) A minha solução caseira está errada? Existe uma maneira melhor de ler / escrever / armazenar meus valores de configuração? Existe alguma maneira fácil de lidar com a alteração de um valor-chave em um arquivo de configuração, apenas modificando essa linha e reescrevendo todo o arquivo de configuração da memóri

questionAnswers(2)

yourAnswerToTheQuestion