Простое расширение Mercurial не удается импортировать - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь следовать примеру кода для написания расширений Mercurial . Это минимальный образец, дословно скопированный из примера кода:

from mercurial import cmdutil
from mercurial.i18n import _

cmdtable = {}
command = cmdutil.command(cmdtable)

Я сохраняю это в файл и устанавливаю расширение в мой .hgrc файл примерно так:

[extensions]
myext=C:\foo\myext.py

Любая последующая команда, например, например. hg init теперь выдает следующее сообщение об ошибке:

*** не удалось импортировать расширение myext из C: \ foo \ myext.py: у объекта 'module' нет атрибута 'command'

Может ли это быть вызвано неисправной средой, например, отсутствуют переменные окружения?

Я использую Mercurial 4.7 в Windows 10, установленной установщиком TortoiseHg (tortoisehg-4.7.0-x64). Mercurial использует Python 2.7.13, также установленный установщиком TortoiseHg.

1 Ответ

0 голосов
/ 31 августа 2018

Похоже, документация должна быть обновлена. command было перемещено с cmdutil на registrar в январе 2016 года , хотя в то время псевдоним остался на месте. Это было помечено как устаревшее в ноябре 2017 года и полностью удалено в мае 2018 года .

Выпуск Mercurial 4.7 в августе 2018 года включает в себя изменение, которое удалило cmdutil.command:

cmdutil: устаревший прекурсор registrar.command (API)

Это работает для меня:

from mercurial import registrar
from mercurial.i18n import _

cmdtable = {}
command = registrar.command(cmdtable)
...