Найти - Пользователи
Полная версия: mercurial python api
Начало » Python для новичков » mercurial python api
1
r1s
Добрый день. Возникло несколько вопросов по использованию python api mercurial
1. Есть ли документация к api с примерами использования? Или м.б кто-нибудь использовал в своих проектах и может поделиться кодом.
2. Пока сгенерировал документацию epydoc-ом, но есть не понятные мне вещи. Интересует модуль mercurial.commands. Есть там функция log и вызов ее описан так log(ui, repo, *pats, **opts). Что за параметры *pats и **opts? Т.е интересует их значение в контексте использования в вызове и что значат *.
3. Проводя аналогию с беспроблемным вызовом без параметров с * функции add вызываю log
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from mercurial import ui, hg, commands

if __name__ == "__main__":
u = ui.ui(interactive=False) # get a ui object
r = hg.repository(u, '/home/blabla/mercurialrepo')
commands.log(u, r)
И получаю следующее
Traceback (most recent call last):
File "/home/blabla/NetBeansProjects/blabla/src/blabla.py", line 9, in <module>
command_log = commands.log(u, r)
File "/usr/lib/python2.6/site-packages/mercurial/commands.py", line 1864, in log
changeiter, matchfn = cmdutil.walkchangerevs(ui, repo, pats, get, opts)
File "/usr/lib/python2.6/site-packages/mercurial/cmdutil.py", line 991, in walkchangerevs
revs = revrange(repo, opts['rev'] or [defrange])
KeyError: 'rev'
Попробовал подставлять различные параметры, но безррезультатно. В итоге изменил сами модули, дописал там проверки на наличие ключей. Но мягко говоря это не совсем правильно. Функций много и лезть в код модуля совсем не хорошо. Если у кого-нибудь есть пример использования - поделитесь пожалуйста.
Пример из официальной вики http://www.selenic.com/mercurial/wiki/DeveloperBasics мягко говоря не проясняет вопросов использования.
r1s
С параметрами разобрался, цитата из “Язык программирования Python”
“Если в определении функции присутствует формальный параметр в виде **name, то его значением становится словарь, содержащий все именованные аргументы, чьи имена не соответствуют формальным параметрам. Такой способ можно комбинировать с формой *name, позволяющей получить кортеж (tuple), содержащий позиционные аргументы, не входящие в список формальных параметров.”
Все вроде стало понятно, но зачем использовать такой способ передачи параметров, тем более, что они по ходу оказываются в одном случае обязательными, в другом - нет? Какие преимущества в этом способе?
dissdoc
Именно в этом и есть преимущества. Можно указывать,а можно не указывать, если не надо ;)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB