bzr2.5に更新したら、bash-completionがエラーになっちまった
Posted by hikaruworld : 2012 5月 3
bzrのバージョンを2.5にupdateしたところ、bash_completionが
エラーになってしまってちょっと困ってました。
導入した経緯は、ここを参照。
出力されるエラーはこんな感じです。
bash-3.2$ bzr stbzr: ERROR: exceptions.AttributeError: 'module' object has no attribute 'shlex_split_unicode' Traceback (most recent call last): File "/usr/local/Cellar/bazaar/2.5.0/libexec/bzrlib/commands.py", line 920, in exception_to_return_code return the_callable(*args, **kwargs) File "/usr/local/Cellar/bazaar/2.5.0/libexec/bzrlib/commands.py", line 1131, in run_bzr ret = run(*run_argv) File "/usr/local/Cellar/bazaar/2.5.0/libexec/bzrlib/commands.py", line 673, in run_argv_aliases return self.run(**all_cmd_args) File "/usr/local/Cellar/bazaar/2.5.0/libexec/bzrlib/commands.py", line 695, in run return self._operation.run_simple(*args, **kwargs) File "/usr/local/Cellar/bazaar/2.5.0/libexec/bzrlib/cleanup.py", line 136, in run_simple self.cleanups, self.func, *args, **kwargs) File "/usr/local/Cellar/bazaar/2.5.0/libexec/bzrlib/cleanup.py", line 166, in _do_with_cleanups result = func(*args, **kwargs) File "/Users/hoge/.bazaar/plugins/bash_completion/__init__.py", line 62, in run bash_completion_function(sys.stdout, **kwargs) File "/Users/hoge/.bazaar/plugins/bash_completion/bashcomp.py", line 401, in bash_completion_function data = dc.collect() File "/Users/hoge/.bazaar/plugins/bash_completion/bashcomp.py", line 303, in collect self.aliases() File "/Users/hoge/.bazaar/plugins/bash_completion/bashcomp.py", line 317, in aliases for token in commands.shlex_split_unicode(expansion): AttributeError: 'module' object has no attribute 'shlex_split_unicode' bzr 2.5.0 on python 2.7.3 (Darwin-10.8.0-i386-64bit) arguments: ['/usr/local/bin/bzr', 'bash-completion'] plugins: bash_completion[1.2.1dev], bzrtools[2.4.1], cd[unknown], changelog_merge[2.5.0], colo[0.3.1dev], difftools[0.91.0], extmerge[unknown], hello_world[1.2.3dev4], launchpad[2.5.0], netrc_credential_store[2.5.0], news_merge[2.5.0], po_merge[2.5.0], qbzr[0.21.0dev2], rewrite_interactive[unknown], vimdiff[unknown], weave_fmt[2.5.0], xmloutput[0.8.8] encoding: 'utf-8', fsenc: 'utf-8', lang: 'ja_JP.UTF-8'
shlex_split_unicodeがないって言われているみたいなんだけど、bzrのソースコードを覗いたところ、
確かになくなってしまっています。
log見たけど、2.2辺りで非推奨になってrev6030で消えてしまったみたいです。
ただ、対象の関数が行っている処理自体は大した事なくて、cmdlineモジュールに委譲しているだけでした。
def shlex_split_unicode(unsplit): return cmdline.split(unsplit)
という訳で、以下の用にbash_completionを修正。
=== modified file 'bashcomp.py' --- bashcomp.py 2010-05-29 08:42:48 +0000 +++ bashcomp.py 2012-05-03 12:51:03 +0000 @@ -24,6 +24,7 @@ help_topics, option, plugin, + cmdline, ) import bzrlib import re @@ -314,7 +315,7 @@ def aliases(self): for alias, expansion in config.GlobalConfig().get_aliases().iteritems(): - for token in commands.shlex_split_unicode(expansion): + for token in cmdline.split(expansion): if not token.startswith("-"): self.user_aliases.setdefault(token, set()).add(alias) break
これでOKでした。
以上です。
コメントを残す