Рецепт сборки для иерархии частей - PullRequest
4 голосов
/ 16 июля 2009

Существует ли рецепт Python buildout , который бы позволял следующее:

[buildout]
parts = group-of-parts

[group-of-parts]
recipe = what.can.i.use.for.this
parts = part-1 part-2

[part-1]
...

[part-2]
...

Другими словами, я хочу рецепт, который принимает атрибут 'частей', очень похожий на раздел 'buildout', чтобы я мог вручную управлять иерархией групп частей.

Да, я знаю, что могу сделать:

[buildout]
parts = group-of-parts

[group-of-parts]
recipe =
parts = ${part-1:recipe} ${part-2:recipe}

[part-1]
...

[part-2]
...

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

Конечно, при расширении и переопределении выглядит намного чище:

[groups-of-parts]
parts -= part-2

чем:

[groups-of-parts]
parts -= ${part-2:recipe}

Или моя проблема в том, что я просто упускаю что-то фундаментальное о том, как работает buildout, или просто пропускаю что-то в документации, что делает это намного чище.

И нет, я не хочу иметь плоскую иерархию, в которой все части перечислены в атрибуте 'parts' раздела 'buildout'.

Ответы [ 3 ]

1 голос
/ 16 июля 2009

Нет, иерархии нет, хотя вы, конечно, могли бы создать рецепт для нее.

Зачем тебе это? Не то, чтобы у вас были сотни деталей, поэтому их трудно отследить ...

0 голосов
/ 07 сентября 2011

Вы можете сделать это:

[buildout]
development-tools-parts =
    thing1
    thing2
software-parts =
    thing3
    thing4
parts =
    ${buildout:development-tools-parts}
    ${buildout:software-parts}

Правильно ли я вас понял?

Это работает, потому что большинство из этих операторов конфигурации компоновки являются просто списками. Которые вы можете добавлять друг к другу.

Я использовал это иногда для базовой конфигурации buildout ("base.cfg"), из которой я бы расширил. Это даст вам ${buildout:common-parts}, который вы можете добавить в свой список деталей, чтобы получить там пару стандартных предметов. Просто чтобы дать вам пример.

0 голосов
/ 07 сентября 2011

Некоторое время назад я написал статью о разрешении зависимостей в buildout . Это не ответ на ваш вопрос, потому что то, что вы хотите, не имеет большого смысла, по моему мнению. Но вы можете получить представление об использовании разрешения дерева иерархии зависимостей.

...