From 7dcb80e873cafa6f3cc788d96bbf8337f9ac15a7 Mon Sep 17 00:00:00 2001 From: Sander Land <48946947+sanderland@users.noreply.github.com> Date: Sun, 11 Apr 2021 18:28:17 +0200 Subject: [PATCH] 1.8.4: new zealand/tt rules, katago 1.8.1 (#406) * new zealand and tt rules * test * 1.8.4 * note at start, avoid spaces * fix dict rules, test --- katrain/__main__.py | 8 +++-- katrain/core/constants.py | 2 +- katrain/core/contribute_engine.py | 11 ++++--- katrain/core/engine.py | 8 ++--- katrain/core/game.py | 31 +++++++++++------- katrain/core/game_node.py | 15 +++++---- katrain/gui/popups.py | 16 ++++----- .../i18n/locales/cn/LC_MESSAGES/katrain.mo | Bin 15643 -> 15725 bytes .../i18n/locales/cn/LC_MESSAGES/katrain.po | 8 +++++ .../i18n/locales/de/LC_MESSAGES/katrain.mo | Bin 18190 -> 18272 bytes .../i18n/locales/de/LC_MESSAGES/katrain.po | 8 +++++ .../i18n/locales/en/LC_MESSAGES/katrain.mo | Bin 17380 -> 17462 bytes .../i18n/locales/en/LC_MESSAGES/katrain.po | 6 ++++ .../i18n/locales/es/LC_MESSAGES/katrain.mo | Bin 17424 -> 17506 bytes .../i18n/locales/es/LC_MESSAGES/katrain.po | 8 +++++ .../i18n/locales/fr/LC_MESSAGES/katrain.mo | Bin 19541 -> 19623 bytes .../i18n/locales/fr/LC_MESSAGES/katrain.po | 8 +++++ .../i18n/locales/jp/LC_MESSAGES/katrain.mo | Bin 20151 -> 20233 bytes .../i18n/locales/jp/LC_MESSAGES/katrain.po | 8 +++++ .../i18n/locales/ko/LC_MESSAGES/katrain.mo | Bin 19432 -> 19514 bytes .../i18n/locales/ko/LC_MESSAGES/katrain.po | 8 +++++ .../i18n/locales/ru/LC_MESSAGES/katrain.mo | Bin 25122 -> 25204 bytes .../i18n/locales/ru/LC_MESSAGES/katrain.po | 8 +++++ .../i18n/locales/tw/LC_MESSAGES/katrain.mo | Bin 16362 -> 16444 bytes .../i18n/locales/tw/LC_MESSAGES/katrain.po | 8 +++++ tests/test_board.py | 26 +++++++++++++-- 26 files changed, 149 insertions(+), 38 deletions(-) diff --git a/katrain/__main__.py b/katrain/__main__.py index a1932fa..ff4a6d2 100644 --- a/katrain/__main__.py +++ b/katrain/__main__.py @@ -278,7 +278,9 @@ class KaTrainGui(Screen, KaTrainBase): "save_game", "find_mistake", ]: - self.controls.set_status(i18n._("gui-locked").format(action=msg), STATUS_INFO, check_level=False) + self.controls.set_status( + i18n._("gui-locked").format(action=msg), STATUS_INFO, check_level=False + ) continue fn = getattr(self, f"_do_{msg}") fn(*args, **kwargs) @@ -292,7 +294,9 @@ class KaTrainGui(Screen, KaTrainBase): if self.game: if message.endswith("popup"): # gui code needs to run in main kivy thread. if self.contributing and "save" not in message and message != "contribute-popup": - self.controls.set_status(i18n._("gui-locked").format(action=message), STATUS_INFO, check_level=False) + self.controls.set_status( + i18n._("gui-locked").format(action=message), STATUS_INFO, check_level=False + ) return fn = getattr(self, f"_do_{message.replace('-', '_')}") Clock.schedule_once(lambda _dt: fn(*args, **kwargs), -1) diff --git a/katrain/core/constants.py b/katrain/core/constants.py index 02539a4..f14ca02 100644 --- a/katrain/core/constants.py +++ b/katrain/core/constants.py @@ -1,5 +1,5 @@ PROGRAM_NAME = "KaTrain" -VERSION = "1.8.3" +VERSION = "1.8.4" HOMEPAGE = "https://github.com/sanderland/katrain" CONFIG_MIN_VERSION = "1.8.0" # keep config files from this version ANALYSIS_FORMAT_VERSION = "1.0" diff --git a/katrain/core/contribute_engine.py b/katrain/core/contribute_engine.py index 101da0c..028bce7 100644 --- a/katrain/core/contribute_engine.py +++ b/katrain/core/contribute_engine.py @@ -49,12 +49,15 @@ class KataGoContributeEngine(BaseEngine): self.move_speed = self.config.get("movespeed", 2.0) exe = self.get_engine_path(self.config.get("katago")) - cacert_path = os.path.join(os.path.split(exe)[0], 'cacert.pem') + cacert_path = os.path.join(os.path.split(exe)[0], "cacert.pem") if not os.path.isfile(cacert_path): try: - shutil.copyfile( find_package_resource('katrain/KataGo/cacert.pem'), cacert_path) + shutil.copyfile(find_package_resource("katrain/KataGo/cacert.pem"), cacert_path) except Exception as e: - self.katrain.log(f"Could not copy cacert file ({e}), please add it manually to your katago.exe directory",OUTPUT_ERROR) + self.katrain.log( + f"Could not copy cacert file ({e}), please add it manually to your katago.exe directory", + OUTPUT_ERROR, + ) cfg = find_package_resource(self.config.get("config")) settings_dict = { @@ -63,7 +66,7 @@ class KataGoContributeEngine(BaseEngine): "maxSimultaneousGames": self.config.get("maxgames") or self.DEFAULT_MAX_GAMES, "includeOwnership": self.config.get("ownership") or False, "logGamesAsJson": True, - "homeDataDir": os.path.expanduser(DATA_FOLDER) + "homeDataDir": os.path.expanduser(DATA_FOLDER), } self.max_buffer_games = 2 * settings_dict["maxSimultaneousGames"] settings = {f"{k}={v}" for k, v in settings_dict.items()} diff --git a/katrain/core/engine.py b/katrain/core/engine.py index f38c4d4..99def28 100644 --- a/katrain/core/engine.py +++ b/katrain/core/engine.py @@ -26,12 +26,13 @@ class EngineDiedException(Exception): class BaseEngine: # some common elements between analysis and contribute engine - # TODO: we don't support suicide in game.py, so no "tt": "tromp-taylor", "nz": "new-zealand" RULESETS_ABBR = [ ("jp", "japanese"), ("cn", "chinese"), ("ko", "korean"), ("aga", "aga"), + ("tt", "tromp-taylor"), + ("nz", "new zealand"), ("stone_scoring", "stone_scoring"), ] RULESETS = {fromkey: name for abbr, name in RULESETS_ABBR for fromkey in [abbr, name]} @@ -41,8 +42,7 @@ class BaseEngine: # some common elements between analysis and contribute engine self.config = config @staticmethod - def get_rules(node): - ruleset = node.ruleset + def get_rules(ruleset): if ruleset.strip().startswith("{"): try: ruleset = json.loads(ruleset) @@ -386,7 +386,7 @@ class KataGoEngine(BaseEngine): if self.config.get("wide_root_noise", 0.0) > 0.0: # don't send if 0.0, so older versions don't error settings["wideRootNoise"] = self.config["wide_root_noise"] query = { - "rules": self.get_rules(analysis_node), + "rules": self.get_rules(analysis_node.ruleset), "priority": self.base_priority + priority, "analyzeTurns": [len(moves)], "maxVisits": visits, diff --git a/katrain/core/game.py b/katrain/core/game.py index 2f1e0b7..37dd3ed 100644 --- a/katrain/core/game.py +++ b/katrain/core/game.py @@ -153,12 +153,11 @@ class BaseGame: if self.board[move.coords[1]][move.coords[0]] != -1: raise IllegalMoveException("Space occupied") + # merge chains connected by this move, or create a new one nb_chains = list({c for c in neighbours([move]) if c >= 0 and self.chains[c][0].player == move.player}) if nb_chains: this_chain = nb_chains[0] - self.board = [ - [nb_chains[0] if sq in nb_chains else sq for sq in line] for line in self.board - ] # merge chains connected by this move + self.board = [[nb_chains[0] if sq in nb_chains else sq for sq in line] for line in self.board] for oc in nb_chains[1:]: self.chains[nb_chains[0]] += self.chains[oc] self.chains[oc] = [] @@ -168,9 +167,10 @@ class BaseGame: self.chains.append([move]) self.board[move.coords[1]][move.coords[0]] = this_chain + # check captures opp_nb_chains = {c for c in neighbours([move]) if c >= 0 and self.chains[c][0].player != move.player} for c in opp_nb_chains: - if -1 not in neighbours(self.chains[c]): + if -1 not in neighbours(self.chains[c]): # no liberties self.last_capture += self.chains[c] for om in self.chains[c]: self.board[om.coords[1]][om.coords[0]] = -1 @@ -179,8 +179,21 @@ class BaseGame: raise IllegalMoveException("Ko") self.prisoners += self.last_capture - if -1 not in neighbours(self.chains[this_chain]): # TODO: NZ rules? - raise IllegalMoveException("Suicide") + # suicide: check rules and throw exception if needed + if -1 not in neighbours(self.chains[this_chain]): + rules = self.rules + if len(self.chains[this_chain]) == 1: # even in new zealand rules, single stone suicide is not allowed + raise IllegalMoveException("Single stone suicide") + elif (isinstance(rules, str) and rules in ["tromp-taylor", "new zealand"]) or ( + isinstance(rules, dict) and rules.get("suicide", False) + ): + self.last_capture += self.chains[this_chain] + for om in self.chains[this_chain]: + self.board[om.coords[1]][om.coords[0]] = -1 + self.chains[this_chain] = [] + self.prisoners += self.last_capture + else: # suicide not allowed by rules + raise IllegalMoveException("Suicide") # Play a Move from the current position, raise IllegalMoveException if invalid. def play(self, move: Move, ignore_ko: bool = False): @@ -290,7 +303,7 @@ class BaseGame: @property def rules(self): - return self.root.ruleset + return KataGoEngine.get_rules(self.root.ruleset) @property def manual_score(self): @@ -437,10 +450,6 @@ class Game(BaseGame): node.clear_analysis() node.analyze(self.engines[node.next_player], priority=priority, analyze_fast=analyze_fast) - @property - def rules(self): # maybe not needed - return self.engines["B"].get_rules(self.root) - def set_current_node(self, node): if self.insert_mode: self.katrain.controls.set_status(i18n._("finish inserting before navigating"), STATUS_ERROR) diff --git a/katrain/core/game_node.py b/katrain/core/game_node.py index 8353761..90e6fda 100644 --- a/katrain/core/game_node.py +++ b/katrain/core/game_node.py @@ -97,7 +97,7 @@ class GameNode(SGFNode): for c in v.split(SGF_SEPARATOR_MARKER) if c.strip() and SGF_INTERNAL_COMMENTS_MARKER not in c ] - self.note = "".join(comments) # no super call intended, just save as note to be editable + self.note = "".join(comments).strip() # no super call intended, just save as note to be editable else: return super().add_list_property(property, values) @@ -143,10 +143,13 @@ class GameNode(SGFNode): properties["SQ"] = best_sq if top_x and "MA" not in properties: properties["MA"] = [top_x] - comments.append(self.comment(sgf=True, interactive=False) + SGF_INTERNAL_COMMENTS_MARKER) + comments.append("\n" + self.comment(sgf=True, interactive=False) + SGF_INTERNAL_COMMENTS_MARKER) if self.is_root: - comments = [ - i18n._("SGF start message") + SGF_INTERNAL_COMMENTS_MARKER + "\n", + if save_marks: + comments = [i18n._("SGF start message") + SGF_INTERNAL_COMMENTS_MARKER + "\n"] + else: + comments = [] + comments += [ *comments, f"\nSGF generated by {PROGRAM_NAME} {VERSION}{SGF_INTERNAL_COMMENTS_MARKER}\n", ] @@ -162,9 +165,9 @@ class GameNode(SGFNode): elif "KTSID" in properties: del properties["KTSID"] if note: - comments.append(f"{self.note}") + comments.insert(0, f"{self.note}\n") # user notes at top! if comments: - properties["C"] = [SGF_SEPARATOR_MARKER.join(comments)] + properties["C"] = [SGF_SEPARATOR_MARKER.join(comments).strip("\n")] elif "C" in properties: del properties["C"] return properties diff --git a/katrain/gui/popups.py b/katrain/gui/popups.py index 7e0da8d..0ad6cbc 100644 --- a/katrain/gui/popups.py +++ b/katrain/gui/popups.py @@ -455,20 +455,20 @@ class BaseConfigPopup(QuickConfigGui): KATAGOS = { "win": { - "OpenCL v1.8.0": "https://github.com/lightvector/KataGo/releases/download/v1.8.0/katago-v1.8.0-opencl-windows-x64.zip", - "Eigen AVX2 (Modern CPUs) v1.8.0": "https://github.com/lightvector/KataGo/releases/download/v1.8.0/katago-v1.8.0-eigenavx2-windows-x64.zip", - "Eigen (CPU, Non-optimized) v1.8.0": "https://github.com/lightvector/KataGo/releases/download/v1.8.0/katago-v1.8.0-eigen-windows-x64.zip", + "OpenCL v1.8.1": "https://github.com/lightvector/KataGo/releases/download/v1.8.1/katago-v1.8.1-opencl-windows-x64.zip", + "Eigen AVX2 (Modern CPUs) v1.8.1": "https://github.com/lightvector/KataGo/releases/download/v1.8.1/katago-v1.8.1-eigenavx2-windows-x64.zip", + "Eigen (CPU, Non-optimized) v1.8.1": "https://github.com/lightvector/KataGo/releases/download/v1.8.1/katago-v1.8.1-eigen-windows-x64.zip", "OpenCL v1.6.1 (bigger boards)": "https://github.com/lightvector/KataGo/releases/download/v1.6.1%2Bbs29/katago-v1.6.1+bs29-gpu-opencl-windows-x64.zip", }, "linux": { - "OpenCL v1.8.0": "https://github.com/lightvector/KataGo/releases/download/v1.8.0/katago-v1.8.0-opencl-linux-x64.zip", - "Eigen AVX2 (Modern CPUs) v1.8.0": "https://github.com/lightvector/KataGo/releases/download/v1.8.0/katago-v1.8.0-eigenavx2-linux-x64.zip", - "Eigen (CPU, Non-optimized) v1.8.0": "https://github.com/lightvector/KataGo/releases/download/v1.8.0/katago-v1.8.0-eigen-linux-x64.zip", + "OpenCL v1.8.1": "https://github.com/lightvector/KataGo/releases/download/v1.8.1/katago-v1.8.1-opencl-linux-x64.zip", + "Eigen AVX2 (Modern CPUs) v1.8.1": "https://github.com/lightvector/KataGo/releases/download/v1.8.1/katago-v1.8.1-eigenavx2-linux-x64.zip", + "Eigen (CPU, Non-optimized) v1.8.1": "https://github.com/lightvector/KataGo/releases/download/v1.8.1/katago-v1.8.1-eigen-linux-x64.zip", "OpenCL v1.6.1 (bigger boards)": "https://github.com/lightvector/KataGo/releases/download/v1.6.1%2Bbs29/katago-v1.6.1+bs29-gpu-opencl-linux-x64.zip", }, "just-descriptions": { - "CUDA v1.8.0 (Windows)": "https://github.com/lightvector/KataGo/releases/download/v1.8.0/katago-v1.8.0-gpu-cuda10.2-windows-x64.zip", - "CUDA v1.8.0 (Linux)": "https://github.com/lightvector/KataGo/releases/download/v1.8.0/katago-v1.8.0-gpu-cuda10.2-linux-x64.zip", + "CUDA v1.8.1 (Windows)": "https://github.com/lightvector/KataGo/releases/download/v1.8.1/katago-v1.8.1-gpu-cuda10.2-windows-x64.zip", + "CUDA v1.8.1 (Linux)": "https://github.com/lightvector/KataGo/releases/download/v1.8.1/katago-v1.8.1-gpu-cuda10.2-linux-x64.zip", }, } diff --git a/katrain/i18n/locales/cn/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/cn/LC_MESSAGES/katrain.mo index fc8226ee49f391983ac9716046ad7d49b7825cab..1e5b72ec90430072bf31ed70ff0bd4f198bde83d 100644 GIT binary patch delta 4003 zcmYM$4{+CI9l-HtZGs4HW3U{91t=s#z)ht#1{$dNFHAfT5<8qV2^hlZ9Be>8QxDYc zNE(PnCnhLl9PSPl7?Kw;j_^vtI4Le9{{Wh#2U_a+r}ul`&t2Y+-|PARd7jVr`TpkG z)>Eyyqa_8a6aSs&-vIt??rtrmu|@y)Jc{F}m*Q0HjdQUKmts$REb32V3H6;g5dR$Y ze`7KAJiZK3f`uvNQaJ_sQYG?9wc+)64)q!6f_LJ%*n(fh<=6|K!~*;^y1{mI{9Y`_ zzhPhe5PM(`c26<&!9wDvArzc=X;(u^*CC%Yoi8WM37gP`euQqI4fF9iGy_}E@xMhk zz9-sWK~H=HIdOV3`cGpI;-}9oV0X6dLcP&}73hgap#5Xe6JHhe$>_KlXa?t?^IMTm zTE>_CPoV2;3V(x+--9{+rN8pU9?}VP;3sH`y7$TIW$1~%j%J`5U0@=bxm%D=YUIoL z_o3^pKsWGIv_Fr|+l9vcQy=ng;aGH>3G<2K!hO&MD#IFd{55ERThWa+qK{-Ly3tkW zyme9Ef@baoG(&swY&_VP{5$Xn4esn+H1MbBGb^UzgfcY15VXH8>XXq8{1E$LOVrzt zv!o5^Te1ULGW`V|cRcDT$Er4zq7yC-uS8Ee4SoIQpn>j>{xZ;bZc$eQU@^sc;v zeA1cl92W7!gVA+|qX*87qhKm0p%Z4J&#)OC_+Zr6MEx0b;tq7)J~Xv|M>lu^UFT!$ zk3}5cgI$EKcLkd9n=^B%p2GPwEI=1%LsPy1eU|O$&UZ%t9yGuqG^OvM0rE&A#Z-#U z8->oR4JRO*HjfPfq;UC9<$I+c`3b&)F-5dP}&=Va)H-0Ai3wSP$ zE5xq5gJx(5I<7kUC)n=$|7{AU{JS>bEOg-}bi(rRarBq&SLpaHXn+^d%eoJ}0|(Fz z97pGWfUcXz^XS?bS}((#3k;=TDyzeZXhvqB&-e~BKoh#a5;QZ*kVB`{NR0G+xIcUw z-Kc+9j8ljPE=Sk7Z~*!5N(l`PoPciRCNyvZnu&$zxJS^1)}rG#h8^g_e+Unt8~g`) z2i`;He}o3^R*~J2;tKNb#QrqcF$@iG2|D3&G^O9cv#HO3dWUwP z^IwVnW9X%OKia=U*D20@EgM*Yo^%vCa6G#3WOU%|Xo}~d0UpAIxDE&7c>`0Tm}=4S z)6tDLM13)irT!4k$4;DxxzU68U8k@FJ<)nJWiO!%>_f(;qgah!U=3Cg)s4=^3$X=< z;V;p7`_V^u482RI@pAkGufQ7K`Ckw}Eu!#E8cHw722MgVF$E1UE9wi;NAw8ZgsYrp?|ba<|r8Wv*_q?Y4#coz!KW84yWU{ zsLw_J%56q2a_WrwyXeXCFU#f)MNeFVj-M9o3y{O72XF-Dwo%|drGKIuIhW(`My7J~ zMB}gyC!ql!M#pVIGq5x2o#8<&rTuku10SKkD}BF_{m@n6J=Dh|8O@~*3NH8}y3;?R zm*|abK>8s1{~H$YW8ubnhlA01)o9@B(c6DJy6$Xr1I_3o{8_X=(IwCSSqh$HYjo@i z_lK{c3%`Xf@F}{1yqYX^;`9MD@S{;*AGU|P@GScGkDZq7_&{{LhHmJssQ)YKA7dfy zUq*Z3xGbgp(LmK`X0Af#-?_D4(XyUr4{B|wZ>+!T2V2*cUzgvj>F)XS7L07FZ)u!= k_trNnrj_@+v0>q$TVqIV&AftMQ@Vys=^E1Z%-H7t0gZW%SpWb4 delta 3924 zcmYM%3v8Cv8Nl(wD3wCxQi?*MRDppP6p8{ZWfU z^_$ThZ%5atsayiIposL0YzZ!I+pGJEFdb@uc^&628sSUj=yOB@Y z7k+{6xC6nA+XdZlu9OE;c?mk88a=}s(T+ch^6V(zj}Bamj@yK$_62l-yU;iXupfSn zZm271FkTs&@sXLibOjFssi;K*G@vP8gr4OJbmi-#y#<}%Su~}8MJG6je9{TN9M_FJ zJFagy5KaBXe7S+EFwgh@1|IUMs6zwa8Xe}KD}5kbgQm7M+Mhvpv;$rEzGy!ZeueFK z2hC6(=Via1Xqe1wH#6==j~} z#P6eb;|MzL>;B~5hSO9yL4IjApa@OrAnb&d=zwZu@o6eL(e3EMXQOwg37zoCXy1xn zww+PGFFb;7@I)>;bRLie?1N4;6iw~rXyEH`Hr|Hk_c$^UVyiw<5r?a_dE0s zZNu@n1FP{2He)sK`WXBW>6c5zgR)fgLnpX2%Hz?a`7zewPon%sH1*G6Bff^-iHU== z{k--s(HAHrv_f%NUg!K7~~^QU7x9Kgm4vyL}h#E%T+&u}F!yO`g7EE~qV+##g} z=nikXH2cMyjvnEB^inMeo6#L_M(@N+;ht!J7jyYEe8Gb$IUXHOqwjaY@ND29yoB&U)Elk8ARL8W zx`|P~2@U*n^lh1mz8#B^dzYTV?zjtE@Le=sV>$UZ&=Rh?9UjL@+>Gwv^Y9ot!ATs2 z9Y$vT$DsYLj`FowM7bV0z4WUnH=}=~Hlq{ojQY28Jop+Nj*7y|vH)c`f%=i?U$qA0 zo~EWKZ$Wpq2aE7abjN3+eZb{e{TO7ksRoDPJmfm1P3S^$`+4A1Ob5{n1oBCFC0WYGzkRM(c$HA zFS@V;;XlxfoWkDNlV1~W|4=mW2y_8ILXT!z)ZY^R0^P{m_A=+cC>mCVkD-D8fChL4 zUBDaY#0Ss`jz|6371{qem7@K|qM55f7c>){urbPu@duPwVZQJGBR=2;^ekJ@1w0@1 zZ=z?t9}W1gup>9sz&)@UOVDw3xEg6hZoUQ?nWp01kK1dX#e82 e%I=H1w(Tvss$*N}fE!ENaus*wtvWSs*8c$IqI&=U diff --git a/katrain/i18n/locales/cn/LC_MESSAGES/katrain.po b/katrain/i18n/locales/cn/LC_MESSAGES/katrain.po index 75d1f77..46835c7 100644 --- a/katrain/i18n/locales/cn/LC_MESSAGES/katrain.po +++ b/katrain/i18n/locales/cn/LC_MESSAGES/katrain.po @@ -837,3 +837,11 @@ msgstr "这会产生部分的对局让你接著下。例如:你可以使用它 #. change komi etc in current game msgid "editgame" msgstr "编辑对局资讯" + +#. TODO +msgid "new zealand" +msgstr "New Zealand" + +#. TODO +msgid "tromp-taylor" +msgstr "Tromp-Taylor" diff --git a/katrain/i18n/locales/de/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/de/LC_MESSAGES/katrain.mo index 4339c71668051d7afe4590afe905ad465dd753b2..db400b3c8e7f44779d3a0cd58ad9fc899d119c50 100644 GIT binary patch delta 4004 zcmYM$3v8Cv8Nl&VsJ#oN1*snt0Sj2gA_z=`0v0Smaia!MAzr#zM@qTG)L{$yZAS54 z)S_aD;)WC4v@!_-A{rG5icml>LBfVXMGPuh7pBJO|KIl{lCR(Iob#UB^PKaxw6tU# zZOKUgrzrFBz`yVK>C4ZH+15fB*ZntpQ>>)k3uj^voQEZN2j=4wvHo`~qP`W+!9B75 zH5O9O;L9b7uv-Y}kfOk|P>y`UnCKOlM|}=D;VpP3HsM)#FBaf4n2G;FH@F_{zXMZv z2z%o9n2WjWo?ViEf}3yW&65478#BUqd&( zJ+`-_5g$e(4#(p2?=YA3!_O8ln{7K$542+`8u3u{`K4&YlViOG?KcO_U_Cm%8To`| zeEIw-be?t5SJD34G0jgnz!!T6$I*^Ipef2OPUMO(9~1ztxl>rV6z>_s>5 zIXeCnI&TK&(YZ0SUV>>S7(~HT4v$u&8JUBg@gLCz8qo=sqM2ES1RWkn)(9_0-;aKV zZqz?4uG0-&IEBtLq%ZmJObHEktU@<39bLE%&BS7~-vj7GtI+;yqZ`qQ--+%;H+TfS z11Hh(|3eqfDoyT4VJZ1{U>_QMa2~qA2z0=BG^KyQGq4WrKMx5m+>S1^0^Rr;^bT!C z$G6AlN6}07O>F-Kou@F}FX>o{Mp}V(ybPVV2JLtgn&SEB0{7uOT#c7v{y7{UR-?~v zM~`MXnyDAC9yj5?abSOf!t?58xFz?A#E(W&O}hVHyn$Wl8F{pab8H9!7qbgm3YD%pDZM zLpT!6)LU4N`|ut7DYm~kIQjG3jvm#A*n;0+7T!tJMZW*{P%z?^XsZ7fZ9`MH6^-;g z^lluE9!Jl(1D!DQykvYndUPfD0S>{>@O!)&KW4Y@;{>8P!ulca0(P1a!WU=+Cx;R- z_4OBqu#5W63eJl9ieVvqMg3Fq{2=bS!0rn7o;gTa0nWCC35WHDs+cSkY8Hi5%l$WDb{m%>4#At zgpQwyMmi5mumyP$!dmq9??#W{1Wv&pk?RxERbxY#NTCrOxDkzL54wS@ar~bE`ylr$ zEI}i0LsPvC{mr=x9e)tb;Md4K4Mmm75l%wu*JBg5AV;1KIpdQF3UL4rQs~0tFcWLg zvz~=1tVNG%DfY$X(HGH7yoW~mUv%6l?1w+0N1B?D9AO3K`2LTj;BB3ZMl>Cr;08Pk z7ow3ZLnB{}F4Trbx*bjZ7wGNIpV;|Agc5Y#-=ho9Ml-tro&R~vN>kWG!GUjJ7uytxHRytKkt~O$Xy#tS{df>daa|SpH@d?7*p*&Aa77HB&aEy5EzZ)4#c{ zwxM>x%^Oywrgkl8ymjIHMHe>KHZ?4~b;GgJkppuV_n#d*^qg3pRWPHo!;H=jt>dcq F{|bF?mWcoW delta 3927 zcmYM#3y_vm7{KwfwY%ANx7%*DyX_Y3mQ5v<-EOE>Es|kIg%G(U8JDr88uEpr)NDI+ zSt>KK6T>LAj9hYQmmw6Jj3IKHh#3C=-ZP{5`hMq}_nhaP^PKa3`&DgPZEafW zK&SK-fqy^qznK4P+E}C9{(rktETP^RE3hM8hy{2xX5(G4em{1iz8ZVrhFE_eJ5X;y zr}!1yg^&t=QQ#A@cxs2j=xNxN`Uo^&HRj?K*adIG9K09PaS6J>I<)_KEW%eXA3wq@ z{0{kq-}q|B{2`s~I4}=cQRsv2a42667#E#@2AYB{paxsx!)OL-(f*I43vY<+8_^wa zN8|5`&zmrd`NMt-_$?af7qsI)=#F#Pj?atG9hb%WK(yZoG=t;N@sp8Hn8ugS=b~{I zMOUKz8!*NHu!S$?3cJyc`_L498|%l=9cAVv8R&=x=#6Hs68VJjd^!GFG~R9K0_Ml| zW$3uINXYPf9{IPhBR*)3evJnH4GoY*-n9Vje=0h`aCD*L(IdGUUFb}-e=62%(ab%D zW@tU0gq!opza6*J;L6@XC;kjQv!Brc$IuDVdFb*Dho^macK+t(o>LL+)t-bOy5Ir=@i z<1~U9w=KHiR0#!B*&iJ+5JIp~>x+uB|P3`*l`~`GJJJ5wU$LEKlNASemK{J%j zdD*Wc8mA}b`2P2!V9JNtfajrsC!hmviq1iQ=@z5?Ytc)(20i-*H1IZb+#6`Tk7N76 zSpNZC*q`Vd5;8a_EkZLf06p7Ebb|BIz?YyInT%{I+>FEs4@94czJf0BBXpvJ=t7R5 zagL)4%qS-RcI?7m9v4uCPCN|Fz=deXDQKYE(f)Tw7o&k!MH|osZbHv~2Ri<3bmGs@ zyKx8|_fs+X_rc#ZI6-DfGN2Qh(o)R8Vd#L7$l}9zbfW3#!e^s*XDK@2Q}Ov0^s?=W z?ak3c=mw9bVuzEuCjkr4iB3gRdnOwAV!Q>X;c#riftcGPc|H<7l1XTW?!Xy%FK)u` z@M2tjGO_V6+CPGs@g?+V4#)aGcn0->yu0inT!&_CK6*)4 z;$&QnQ8$M=8wi9!go(A3?J?z9fQ6YHWI(6il!27DJi zswVUZKr?qEa@=7aw#Bu`TEa7EruL$Ds|8aw z{7u0f#YltPx}dN1)?U_fT+0E6@eJhu7diO3Uc&CU6Z5bIJ))!N(X<+wT-I#N_5JTk!2rFm3s#~#y9j+NrlAwfLU+0Z zy<{8Fz)e_zU!oIs9+hOY4;ptWdh72*`_IKz_#kGcC@iL6YU#LFs-iO|`<>*_n6H~soKT_z8e_}bFd~OK*289c- z8_q#*>+)y=y09&1%3noy`WB|)zUb%ZrQ46`*nUj1(R_5?;xXjkl$6t8sw>dIW6;1C zVHsYIeTY0Swm;1~>drT#NAo7S&@a$9$Iv^~raFmNj2YB>VJ7xP;}5DHnyl<>8oV@B wXrQTBiu2Hkp2Q1qD>}iy)s4g3FU)Ryw`gqZ#**%Xdp2G*s(0q2%c}SO2j5MDVgLXD diff --git a/katrain/i18n/locales/de/LC_MESSAGES/katrain.po b/katrain/i18n/locales/de/LC_MESSAGES/katrain.po index a145fba..bcbfc7d 100644 --- a/katrain/i18n/locales/de/LC_MESSAGES/katrain.po +++ b/katrain/i18n/locales/de/LC_MESSAGES/katrain.po @@ -904,3 +904,11 @@ msgstr "" #. change komi etc in current game msgid "editgame" msgstr "Spiel editieren" + +#. TODO +msgid "new zealand" +msgstr "New Zealand" + +#. TODO +msgid "tromp-taylor" +msgstr "Tromp-Taylor" diff --git a/katrain/i18n/locales/en/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/en/LC_MESSAGES/katrain.mo index a6c6b7ba02e738d6a6bfe1b02457ac9b8f970dec..abe3adb0a333b5da95da11d7a28e27a7152f5a47 100644 GIT binary patch delta 4006 zcmYM$3vAWZ9l-H(;kFgq(b@u*N=Lz}V4+wP#zVlif(Qy?6c`w>hO$Y^%3M)E;GzKv zTSgX3#njO2Y0RdOtRIpZ~1$CQKHb>${Gp8~|=49F9`|bZEBe(Z+&iS9`@0|0$ z{JAByZ)+;^VPU#0@b3%$hVb`Pj=2yn&Huk=lbk|+AYPAWVFMQ9dd$UpV*VFcNWKGy zVt34ch6UtPd^toR_75QwN=Wc5j6^?j|1>a?1%lBJ;_jn{TV-$ld$2%y#*m$iG0FBzHG2O+KhIz0i8fA_QfaA2<%4d z{}P?}p;&$xUGY(5#o?p){0r>I_~G9sFo$W|(OGE4Qgp?m(C3rT6<;3n^U!*W(FiU_ z+pk4FVGCbAzYp!_@#sFZ{vpip7k_*1rNBU=cdeMs!Qo zqZ8eMwtFb%ccYPe9*s~Zo`LTSApTZ7N`W)`7#;XDx@QGsY*362P>w#I9P{(g349j^ zUnMb;A9(OYr==`y^H);k{aAw#bg3`84@iPoYkU4UM{<>)|n#pkW)>3%Ghzk>7` z-bK&KUy)BZ89kFuT=6ip-wV+NXQq%alvkq-mY{oh8(MKw%}`&~{yDXg@$F z*n{@-Pdo?nS-uOaK>M49M*P~uOsFFAlj}HZ8tGmgM7klzFa^(roI2GNMuv67VY@XSm9oDrjJMWqoM7L&yS!hI)+aC zWPF}xU#!<3d(RFUp>nidReWA!x%dAn5{CTS7T|Z#j+@a2Ezx_?H{C9@{%&-D7tq7n zg`R;U=md_V?f;JUn_@qDCx+&WF=Gekkua21(HUq&7NdK7Gde&s+QB+BGFy;Ehc;x4 z@O1Qz=wHx@`orQl{n3F-(0(o$Li~F}LV*=)(1~1w4qT5$;&!y&57CYuK`q*ACAwDp@;57EdMXsPeJCJNySohrIl#KYP92dXvLe*5U)T7*ouw#5RSyW zp@b91qmjE2y$vhT1#QCx*oHsBPjN10Hk2hR=|=hrAEP1bH!S)8Kq1=k7#xEOa1yql z6MQ9>zm22Fr?|_WiAwZZ&O{IG4LA$yum+#P*BC#XAW=)f{&SNp_!k zYCIno;A-4}ZrNAJVnXV?q@Q7E1nbeC=T+#|ticCyJ9@Y)=q%6sKbC|mo`!~QCK|Fu z=n9vi9j-#RVl!Ir?pWTA+2r@4FP;vxUMD__@8XBJnJ~`Br6YKT9r!E84|lPF?_o8| z-HU@OLih~3u?t@$uG3Onx6zc5@2m`ABet<0OZyO^i;@Z7F*b=r3-;a)^sGFGo}D+* zi1i>r51(Vkl?}K!*|TzV=2Ov?%tjB<{8-+EcDN3&#a1*z$I$^!VIdY=k_>b%mXRNg zMK}lT_hvNWD=s1aX%e@^f;-T?--MR8Ay+oskA{3ddKO;C9Q+fyRXy?fNpyg$aY=ar zdKibGw`4pL^>7n9(QV_1|4&IgNP!I}jSqqI7p9{Vxdp3nEjr^DqOYQ%?8a&Mdvt}x z-%9F@LL)ma=BFb=ggKavo6yMqC_}=E?Pw_X;$?U+mZv8qzyAYpF6E=pP_IK*v=d$7 z%g8wkM`OOvM1F9{4?&+-qvI?_x(*F!Br*?^;1k~D%aCMqxvOw6x}w=Q8?mKN``4=)muwTlhIT;nSGy{ZCIx4plCC`iG$v zD$$8dz`-~ZdrvRAq7_(%ThRe_p%LlAi|}{oL~^Dk6DdO9q{FccXJOj=-$25FS0dLr ztj8?eh^~AKo{c|7C-O)v|24XYooM|N=zyotiKIB09^QPk{XBdbZ$bO1xGdiP=_Ksv zdUOjmpb=r%f?uKa)3wQ#7Dh*)6Pt=od=9$6y4r=w zfDIHF>hGfitVXxwPV^9NM;o@H9X*O3zI|xD!#ExPfZm$nm+vXb-<*3!+1mQL#=7q< z-Sa@nm3{M?Z*5w!a&&Xun#QJE_k2|Px1qUn>TfSw6sx>7r70`#y51_+^;T(}T)XRk Dq~MMn delta 3927 zcmYM$32aqG6oBEWwzZW?p#_0TDFU`4Ad96?K%uQwq}39G7zpAqW{mGMDqH+JNM3f5~ZC4qlO`0LEy@-r-Po%_EXxGbdH9tUDutig_W9k#-$u{;y=C_j%yxHgt|VjIfe zqg@=u)*+e9>3fidOszP0>%Wd>oxoW`2@^wrGH2G;?LhC)Dy~`y0@BQ_ulC z67MfW+pR!ChBf)*--|8rL34CJ8u%C*Ae+2vN3?zk+QATXptb0dT!#+yKD2%+mKUIz zdlt>mD$K&y+mU}OZsdj|`xx!`Yjn+ypbd_r9i;Qn=jZTcxj#C9k=O~x#d19|_Anbg zCCiWyp%Jb3VJz=U#TzYXgIuC&cXXzM(Bn4>?dYcXydK@%kH`Bfkr1H?-7DLWPiT%F zL}#2vFyo$yPB>M_g{ka=HW-es;aIfdq*%T`mLEeKE<@X`MpL^19pF|p&X;%&9!4kB ziZmFn2+jC_#8jx@q8m3xqXFvCl+Q-jauGW6=i~DRw1YR$llVM%hAAN&<3|er=f4UxoG_b=q6o`u6+XUXYh*_zDgDC-%iI=kl7xtI!$GMei@e-uMx^7h3St3yibu zChd-+@O-SqdfbX{VinHlek${+@GcjoYzJO|d(qTq_235vyWljeMweuk8Lwdd_FxvXT}S_69~XykNiSxFv&rl5v=FZB z6T(i)^DpEl6ep1PNvDw^bikDZl1yBMo{A~xUU>-JJB!hbtwpjP-a;q#4Z38%V#<+c zT$Ict4}FCeqW8Fah0!H=-$@f$oJxcm}RQXTCN*-+(T`j(C3$I!D;|GSJbug7VF1 zyR(HVXhpC3b0`%f(A4B~&vl-pw_)}Wca z8m)H+n#t)YE=F)MFFx3g9VmZ;b$AR-b=BZxMibE)&O!EBSQ*RPkb@BR$8uJA(or`g zL>Pc(;&$W{7W3uOr9R=JKNtJZ8Rc=-;jp)*SfW8sGK=y4o ziUn9SG&Gz$MgSltk8mX^e=Y8+>7JxMQ2osU9k@B;2tz1 z3$Y)rKnJiBeS_}Bu9$I2GO=RxRP{nmaTtslp8ug-II;?K?MI>mxFOzu5M8@RF#}&g zXZ#vEfKBM8{TOYZ!w!81d!TWCL?`A(Gfo>M^`RV7rsjGsd~h53qIe29IpGa-lN>}l zI*E4Nirx&^0kg0qmiu8EeHJFyBsWP%D-ev#^ME4tN#NIKz)k< diff --git a/katrain/i18n/locales/en/LC_MESSAGES/katrain.po b/katrain/i18n/locales/en/LC_MESSAGES/katrain.po index 5832c0a..c1436e7 100644 --- a/katrain/i18n/locales/en/LC_MESSAGES/katrain.po +++ b/katrain/i18n/locales/en/LC_MESSAGES/katrain.po @@ -398,6 +398,12 @@ msgstr "Korean" msgid "aga" msgstr "AGA" +msgid "tromp-taylor" +msgstr "Tromp-Taylor" + +msgid "new zealand" +msgstr "New Zealand" + msgid "stone_scoring" msgstr "Ancient Chinese" diff --git a/katrain/i18n/locales/es/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/es/LC_MESSAGES/katrain.mo index eb33bbb5ce3dce94dfd4391c12d22a7be170229f..eab6b41b0203815c2a7c1d9e71c162cc5aa3f31c 100644 GIT binary patch delta 4006 zcmYM$32>Ih8Nl&P2?-DyNJ1bcM1lr6B*7qp$PoyKav!6D1P9|ZA`nW(Molu6uLmM3 zo)JZnLxlmxXc(b4JHjdnE}@H+e{HeqkP4ZGtOOvk6t1Y6Pm zhp-TjU@!a*yJA7r+pp|;Ceg@ zn_{~KSxeZCz9svRkl~MLzpr9Dq=@Q`e00FD=p=Nd3((hZIXcmA;`0{tbnlG!4Xva0N{ZMT0KnLza#~nsX`w^Pp zQ8dnJEW#cv--Vrz#;ZgtK0h%PYPdLu8}(>_7PREs(Y1HTz< zLlgWIJp;$k@u$#DYz_IF6Pqw|~+u!gAUZ@M2trqi`3x!gd^k zCvY^D@h&^@QZ&&u=%L+&Q*j#_=P16<{GsIBWZ)@u3x<(}fk&eOrblb=eAkc(1g<{6V(m{ z$S#B`G{F@YQUA?ctmcM)H2RJVfpZuJq9vSx6LB$mMz%zEq6xQRCBB3vcqTs2<`pr4 zK4`yz$P}RhUD#5zvMW_lfvUxp?) z0zG_{X#ZJQgo}}L92&77?m!cL3m4<(NJUeja%@tf%aB($%*QNjM9;<=wDh-QZ@eE} z$!>I|`=cMBTXq^VvFo@b!5rjEGW10gAA_Ems*X1MKZgq^yb|53Yta?ep?lbjPJ9O% z_%Y1K-B^OJp%b*D{eMK>(9nbW8g~MEHfCZuUV}w=4|Zn$@Dvwj^ep}aUqv&01D)_N zI-m`U@mPG`jg#l=m4o&lfo{PVbOF=R!@CgOx<~L0JcwuE+6mO(jJI(y2wSlXkD!4v z8O?zXz0rwgA#YTuN4H=H+HW7aMQ@`Cx1lTl5RLy=OvCS@|3=PfI6X1G{}ok9fRX6y zQ5oA)(1~WFfossf%g`;k5jW#{w1Pt>B`Y6=Zqbz3u0|7ChQ@0`w|f1gg~@~ua>Ein zimv1dG~m;*{USQ>02=6n=$GiBJB62G#^hwLXHVW+*yGl$E+x&iHFY&V|JmM6h0{89 wZ@6LA%KEZ~nx?u{H|+hQxU?i|cJ0k2i(;3I@im>hU*6H>@{TSo*G+ozf2}W#F8}}l delta 3927 zcmYM$d2Cfh6oB!mw1rv(+d`p~vbC~^>;(jrQVB~aMo?TpK_m(q2#}NrM&niM!eWpF z6;u$F2J{a_XiWq)A}XjDqZAG9S};T*>?n&GzmGeK=J9@a?wvVv=FHqz8y9D+Se%jk zl%M%b;J;)1YtO$mO>J@A@_*ZKSwg!t4#YgH!nQaSbMfBTegyMrzknU_joAJIFQxq} zI>iZW5keBqalt3#@YD`P(aZ5-+QZO*qwx})jDe7*;Bm_PjJ1s+5L9Y;I^ zi=)q?{cADdU#RDcxxy~AemdCh$GsJpgB`*%Yp7>Xu39^I0uXrc?y{z+^vM=SRn zTA>Zt47aqR{&swa8)o(yI`Mbto*hF6oIxkZ>qKqG~C+(!uEKHx8X>Mtok4p6(~&{a26>p$eukbKn0fxUl3yyn$oTz?0Acv!aX8U%Dk||K;c*U4!m@EgED^TbT^v#LiFrBiB7maKCed)+lTRf zL-YW;z|%?W(5yomuq`@KH?*|nXyEH`4$j0L*nnmD51K%ij_IH8!RSIJ;T<>~7vK)O z9S3(x`>jI9C-q!ds&C_sM(jm-=^g`v6@Fy1rHXQ@xMZ059+7+1KY;>y*;f2!S4%*EwOG~^P{d4?1 zdWL?+XYe?BsGsPXR%SW6;O8;V$m_YVbTxb7dW_V6VCH1O7t$uU_mm?S1USPTHgT zhVTkD@5lds;U+Y(->@T|L=!IPpH{F8`PB`>&;{Lq=Txvhvcs4Tr|;zSb-0t34Rcte~l*a6WZ?x5;B}Y7uK6s$jX+Z3%nMs z$n6OiBeNXoBa_!o^9Ta3WgKo6&ivjU+uUW^v=fAwvVyL|3ARY(0*_dUTKf g9$7cEPFIuq>U2!@3d;+@SYhr#5T5moY!KG;X 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 diff --git a/katrain/i18n/locales/jp/LC_MESSAGES/katrain.po b/katrain/i18n/locales/jp/LC_MESSAGES/katrain.po index b25bac2..254fe43 100644 --- a/katrain/i18n/locales/jp/LC_MESSAGES/katrain.po +++ b/katrain/i18n/locales/jp/LC_MESSAGES/katrain.po @@ -881,3 +881,11 @@ msgstr "" #. change komi etc in current game msgid "editgame" msgstr "対局情報を編集" + +#. TODO +msgid "new zealand" +msgstr "New Zealand" + +#. TODO +msgid "tromp-taylor" +msgstr "Tromp-Taylor" diff --git a/katrain/i18n/locales/ko/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/ko/LC_MESSAGES/katrain.mo index e8a313f8dff2908a6aff0d2f510b5a4f4a703e5f..2d78044517605a6e9609e0f3e761e98c74fdfc6d 100644 GIT binary patch delta 4006 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 diff --git a/katrain/i18n/locales/ko/LC_MESSAGES/katrain.po b/katrain/i18n/locales/ko/LC_MESSAGES/katrain.po index 92cf59e..a16934b 100644 --- a/katrain/i18n/locales/ko/LC_MESSAGES/katrain.po +++ b/katrain/i18n/locales/ko/LC_MESSAGES/katrain.po @@ -836,3 +836,11 @@ msgstr "" msgid "editgame" msgstr "대국 정보 편집" + +#. TODO +msgid "new zealand" +msgstr "New Zealand" + +#. TODO +msgid "tromp-taylor" +msgstr "Tromp-Taylor" diff --git a/katrain/i18n/locales/ru/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/ru/LC_MESSAGES/katrain.mo index e033dfb6b39c9bff47a73943f5e2b8c3c6c4495d..32ff63a7b3415ebb1b5acfff7add387b117a3a20 100644 GIT binary patch delta 4022 zcmYM$3v|zA9LMqRf18bM?P?4g!!XQcZds_g%`KM=6QlfPreQRb%c=fyG?moRT-MQ{ z3rU65j!T)Nvg4>u{8yQ&u@Bez9=l5K`&-ZzLe_pTi-K_Hk zeoP44X#Ba(-xU778=;!nz}Ww7PH_!`uKqeEP(Ori@Pw;h!#L_b zzO+OF#+U`HB?X>YXXInq&e0f2y%06w9J~vcV>4WX(YO`E@Eufu)u{f*uqB?xrg#&Z zU=yOJXo(oZ`j$>X1A8|#n2ka{_5fcRP~t2{P4pxxfJzL-w^13`gX;ewD)2hjeiF6g zGsuqZf_r`)o3Ot9qXI?{wkC>4bxcL=I1}~!9@LJ9xq2R|Um+@kC8+T$kdIaHrROiB z=6TDxAJxAO1N^nG`633pgzESgDn${AUOgGLqmHNyWT7U=MP;r4`Ph8EG=3#&z86pd zyz1KbqQ)IYt@}kH`B&kbdvL=U$|{;T5j8<)XMa@x5vT>Gp#q(cI+7<)fo?#J+ve(f zP?`Gxm7!zU7{6>v{?+je4T|gvYT?_cGmE350m-NZ(oxR`xOyHcfVtQLm%Dl;vKQNq zdP@!>Q(8T$-$hrq0JEwg2{oXHb0})3Q&6v832LEL?s+BZcJFlUpCEJESE##k8Tr@^ zXC#wo$8Aybc0p}8Fo=RuITkhGA=DW@hU&Q5)i=BP4%EPdsByNe_|_) zW&7G#SJZs>p)#KD88APEb~G$PO;CwS`F7M+e%smgHc61IE_zm|wjB`=H z7;LyZs0^i}`enK2L)5PK|9%Qe`BXJvF>2y+)POb4D%3CCE>! zMFpyVShP+IYT=fsc{-(#|Av&%ppHXOflNRxT!hNRQdGa^P!nxI_222-hno1PGl&ZC zEb0ziMUB6OS~xt_yCZR_3D2}MX3Jskj>dL)Iu9jfxm&e zLkCggPrB#lP?zpE*M0{zPh6n2*D)2f)9$E_gHaRbp*qe)rFa2qfoHH7x8Zn zh)QuP^_4gVzsDZfG2M*VtN`^oF2R>@C9cE74*YEUIRDouJWWGPCog~vsDP@mBc4HG zvycq#2d3i{EJg*K-`V^9D8-r7*CSKfbqvL1ChLwV7~&&H)a4%6RhbR&KNqE1XrR)bB@r)T|zL)|cJ$e^GBiN~ZU`AF4hMYj7?OW#N==+!N|EiKdkLEnFI) zFuNx=8h^;*Up8FUoBt%>M;u@oZtq71LYTZi!BNk?hn?Y$0o;`^eh&tE3xANq#btqd zWGxFDY{pRQg`A2#f*ilC!%?^!17y+upun7#Mt&7}Au6>?P!p|p?MIN!*lApb;X`?c zF@QSrov!{Z>eAi8F_<*WJ0d?SgR4b0qJ^;4(;Kcmj{HY(t> z;ojRa3iW(Ck}NAn?QoZC{}f5CoyU=wkZU#?3$Z=Enala-_{=_|K|7D4mu`Cpf;!Ps;|Q?xG6wEss0!h(OE1- zA9?GDi;!ct&A1JNs54!3Kkqv3MAh$LKK3IT-GOJ3SgjVdP@{3)>(~<)Qy-5DFmTj0 zWbrGaGuwe=*$$y@y-nc!p%waZH^yLWo_7STF_wB3Y6F8Y2aAwXzexqu|uGKsPd z7bBSnSpSLMnGZ&e$?{Q0QH4s?`39YEV(cXEQVz!s)XPwJq6&2s)tH4r z)O;b6y?LUr;r;JKA(01tP-i;QbtpkiSmD~=#irCxxcUVodDf`FJAz55Osqxid<#b5 zcbJC1;8bkHxnz{&i;iDBO*wkt|t!p*O)CoJG9?N8n{-tYuC2`maU( zQXX}l$L7@UpfcKghL_Q<7(#ula{|tzK5+);uQNG9Lo+;%+R0C-iLN=rAN05V!^HTtAe$`eZj-Q>dHKSMrDTo_J6nlw+#RQ delta 3927 zcmYM$c~F&A7{~GFA`&Qp;0l5ZxQh!aB0{62f`KL(nj0eKXr+=9CTitv+?O(KG)YZM z7)PD4H0%$Tad0GwH2-kdDRZGLGndrF)T!^!_sry6?&m${J#%8fAzBQP7AVIJ1US*|=EBPnmdmiVPBAIAoiFQcaT z3&YI(_74|)EQGsi5asNI^(d#J2F$=`aWpo;DHw|LFc4Ru0$hb^zZIi#FE+wc7=phe zAG^y}81q{o%TdRMNJQ2VwZcApsY8}C7d6m$Q~*U-2bZHVuoBgNJu2`rSN|1i#rsj? zA9nXoURj7vNQ7O9S%C)E!1vT_C5P=$?9V&CZk&g}GOZ_LH#w$bx@V=}6 z2-WX1WJufDko@bS!reIOyowt5E^2@f@-Ca9+P6nd&=(cx5Y(3Bp#q(WYVUXDm8i^p ziptPd492e;k$*MZPlY1;9yRd=)Slf&b*M#65Xep4Z_by>iKqYuV-${d%wcSH9$T757mc!WmV@qgI-Xdi=6b6HRpYi%_R~iL2j&3}NM{vr>(G?4)$^agg;JiP3d}?eoQvu(#W@@Grdx(;zY=vwH=_2w3^njRRKH5p zc&A8wF5@V?(Q2yWpG*bFsMdsJ$Bp#~m?Q*bg4!{gW=TeS2}eLnW0JR24G zPMnU1@i8X0;;o2XTbp&lQq)5H$GK3duH!(wi_c*np2-57h2!uXYHO0>dCOrYX5$yw z4gW-9ve-6Wiqr68wZjkb0#5Uhv9@N5D4%ZkGyuPiZSO@?jMUi{BnGR-=kX7`j$J!= z5l40O-WN$Yf%;L%n6?+|;Lq3c*YD%*LP=+!3Gt{`cU5U9fa#J}UL^ zAulg0LGAG_cmG?|>A&jkKXK*83A}!(?}h`I_$scU+@5F(DIdUM?A)D~8I~rJ9X}WS zdeRt|uz_#k)ZSzu!0ci&*OaXz?lY z7c3WFpga>vq8&trv}@?sO5(_~4nrDhpi!v$#mFM;bDWJoAiH511H3&iM3pz84&4#V z#vd^bI}G#!%|^YVUqx+2F^1y2fjs|uTvoV>ji{7wNA2k$RK(X%k4u9=-u-waS(b_% zaGT-kS0UN8Z8#XuV;06`co~_F{e5PuQ42hg>Gw|ijZ6*%6`klc1#?jm9zZ>Q)z}&@ z;ZO`9pX{3DpaNKk>R*PzcpTrwv#y*=6r4lLLuGm?#$%bEi$X5G!*-ZV{`%l}+>Gl` zdzw7N>=i6Tm5<(%=A%x1 z6|TlBSb#Hgycg3M)E4}L;aH1WLGVl7izop(mo^<0$POgSb{8wLFVQM9|6&6Sewm+O z=C>#=v={lP26Ipo%}1qbEw;hkn1p9A0Yh`WGm?TjGx?~kD8@uwhZ?UMHO>hP#hcg= zA7N|ex9|~OgG6l0jiIQ$F2Y8*)|Gc4S+irPEoeT{%fxWh$|qtg+>E2K0y|(d`xb-) zPz%jMEpQTsF~1daQ4bfR9-GzJ6ZfbA{)U_*d*I6Hqr8D~P%C}|-^S&r%xLxqACEG2 zr`T_dw^cJRnerNB@pcUT8ld%9qQ`XPL9jB^3T~h}WQ_CPkn@}yu_^WYP^mnD%Gj?M zfWdj5^>HfYFw|De#U{7_wXpSh20aO47QK_%OD7-L%<>^q|qe733ufRJ43D}GBa8!pSI2qSt hEA*A8gfFgNel&Veo$}Zg`}>sFj2uy~Jfoni??3U>qk8}V diff --git a/katrain/i18n/locales/ru/LC_MESSAGES/katrain.po b/katrain/i18n/locales/ru/LC_MESSAGES/katrain.po index d26496c..f7bd3cf 100644 --- a/katrain/i18n/locales/ru/LC_MESSAGES/katrain.po +++ b/katrain/i18n/locales/ru/LC_MESSAGES/katrain.po @@ -855,3 +855,11 @@ msgstr "" msgid "editgame" msgstr "Редактировать игры" + +#. TODO +msgid "new zealand" +msgstr "New Zealand" + +#. TODO +msgid "tromp-taylor" +msgstr "Tromp-Taylor" diff --git a/katrain/i18n/locales/tw/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/tw/LC_MESSAGES/katrain.mo index 251e535b9db5dbfa4b456d0a6fd148c5c3ba118a..3133aa8f8d6b136b52eab6d14074003f62165741 100644 GIT binary patch delta 4005 zcmYM#3v|wP9LMqB+M{92m@%7SuESh5_c7BH7R4mjPM9XSA7)JHkC-^p&Y5ctQWK>! z9ET=EC86AsL#VTk+i|N5=cJrpUQ&)&93O#Wdn*d=abT1dPEs7>+9~{s3zb@5TCf!s6dBk~oAfEl~p_oby~P z1=?J5KZ!c=MdZZpvbC3E zCDwP3RKPH{t%<6mI>w_;oP=smMV?_2#g)VTeq zb&p4pe-+BC;hq`FDw;S7H9>Q;Gpc`Y)B?j%8=Z)HBy&(3U5*;J!Qv8B=Jud6bQmk* z4>ifZI$oqgJG+Tm_%GBmizLv17}NrdQSDtV&O&Wq9M-{ni;Ix6xMI{TDMhAqr&0Z` zS?oM!RYf#vKpV3s>ZC(Z*Ka&(q50NcgnGL-Tm4taobC+jUAcjL+&!~0ljy_=sCiqU z4(z2-P%5884H$`fhIy!t3oKq`@g~&3Qq;I3sMKCSZSXp3omD1a&1wu$8MHh`4*BUjhiK!Yx5LpgFmC*f!nC@4^Rs~ z8SlR%k@4hT1LLSrLn3N{6x4w3sFe1{3YdfHKLI(Mn}u3vIcnn{qTZoW)cBLuUWR(< zez*F6QS(H4_56XW<4+z?k~}hEh@e2ctGV#^QYJ zLtKFK@Fey^FROunZC0Ze*nvvf_oxZZB7NO0OvZ3l>x^lrjpku9EWlP+f*N-T^$5#R z?^1v}o`&I=ikbK=>$?RMx=_)tk-zf-R3?g03w&hpZqy?>ioNj+>ZEav{Y)idH{wpH zcOw_of4;RZ#kYvpqBc~&iTZi`RimIEjP|Gr)6IV7FmtRq-JEN_gPQO?i#M7jSVH|? z{1wMH|^k9%3)Wh8P}@iA(^)#lD!!R0Odj`=N}`-eCoi9uM8Jm=va{5!Y&DFqZXQiT426eh#I%v+DlRWzq9u9$>d+DyGDh)V;$~W9FpP>sAxu`Hqg-G&gL^# zKhWZFsAoR|bz3~-qPUgF`{;I|-mP;fZty`QT>Kk{4&-co{W6lJd1auZrf3hf)>7F4RBKJ~neyBz3Yzd7a#P$Diz}0NrLs1v zy`I?;wXx1-AJl?FF$O1NMO=g$SBUzlUWb}*kJTRx%JV-?p%x7ntl_Tt7?rYcey+4Y zJ=6s4F$%k)+WRAaS6nt~V;<@t@1p*e?6UeVF@^XvYGZ+}%%}Tboq{T2@Cj_9223>D zpcd+gI$@^OXQNX58fyG9)FWAo+Q=qM$6crcJirwg&hw1JjTpTD`zi2a6s zKEupJop1o2#Zjn@bmX|QCu-pV7LPHfnscxM?Mu>!`U@6X!z$DUiY?x1aVhH0@d2wp zflBE`)IxVr84C39q-t#U* z239%#yUo7@{;hjTC7vVx_Zc1&DR;muY=?yygX1w2XIpszMp9mj$yjCOK0@s{jP0mB4z=UXR?bBA%SB~yC~ABW@^RDnQu|y~oKMWv zsQ#7c@z2%p#ayly)$w;!if&l>K59p;qWlcBLj~xH%3L4h9$6Ze?9EAhC1^KD)2p2fDrO7V^IB5Q4{2#7CH>|O2(rW`W~vkXXO>B%zcT< z&?an+JKB?fb=*URR(1q6@mbV6yNw!fA2mUMMzzQDrE(@}0RNq)c>)I_PM)b>UNei=(}8a|7EpcWF8?DtPZEjZoE1F(SdaQp~Y z;~zHu%c#^hV1Im!Iup5_{r*Ex z?W1rZPC+f`I;!8_s58)nVY>gVy7+;k%#LPvGshfkjz$HXY~>l|EUcn_0bat)u4DE#z-t-&?-iDk@1`K<{z1L6dp-Qr zKSX|IUF7qACezJ4)Q(4>GB?3|)7neWQ^PVIl#(^pVI%5(Z$rJ?BUpeJtv!u{p;y)i zHNg;bENa~A*6yL=e{Ss?P?_6m)?|`@b=YGShfw7c<~h^?Zd&mE3pbSZd5PwuL&mg@;l5%oz9O@E8T0>q9!}YZo^Bcz++Lrj8jn)mRkK1^9zio{_Ey4?|-K?96+V=Bx-_dr~pkEg)R6QQ+qV> z=fb6-7B&dki5p|(dDxTka@2x;Ld7{|Wx8drk+2D!zk`mNY}{}1z^>+&mVqDC{0A8;)w z9~EGvInjIzwX?aXex=wFSDNLRL3u5z-yu|-6IMQ#XZQb#HQcs_M`qv!e}|!Xnt}1C z0C&vCsEI?_zUq_AZe~9WrhXu50fkmS(#jL_IaF$xMuq-p%(M>kP^nysnqUJeGdryO gTYhy;#NyEEqj3XURwpK{NvQrgr#`T9Xa1u90NDV4ssI20 diff --git a/katrain/i18n/locales/tw/LC_MESSAGES/katrain.po b/katrain/i18n/locales/tw/LC_MESSAGES/katrain.po index d5bca45..9e19ac3 100644 --- a/katrain/i18n/locales/tw/LC_MESSAGES/katrain.po +++ b/katrain/i18n/locales/tw/LC_MESSAGES/katrain.po @@ -863,3 +863,11 @@ msgstr "這會產生部分的對局讓你接著下。例如:你可以使用它 #. change komi etc in current game msgid "editgame" msgstr "編輯對局資訊" + +#. TODO +msgid "new zealand" +msgstr "New Zealand" + +#. TODO +msgid "tromp-taylor" +msgstr "Tromp-Taylor" diff --git a/tests/test_board.py b/tests/test_board.py index 496c1d1..c66ad43 100644 --- a/tests/test_board.py +++ b/tests/test_board.py @@ -1,6 +1,7 @@ import pytest from katrain.core.base_katrain import KaTrainBase +from katrain.core.engine import BaseEngine from katrain.core.game import Game, IllegalMoveException, Move, KaTrainSGF from katrain.core.game_node import GameNode @@ -55,9 +56,8 @@ class TestBoard: assert 3 == len(b.stones) assert 2 == len(b.prisoners) b.play(Move.from_gtp("B1", player="B")) - with pytest.raises(IllegalMoveException) as exc: + with pytest.raises(IllegalMoveException, match="Single stone suicide"): b.play(Move.from_gtp("A1", player="W")) - assert "Suicide" in str(exc.value) assert 1 == len(self.nonempty_chains(b)) assert 4 == len(b.stones) assert 2 == len(b.prisoners) @@ -118,3 +118,25 @@ class TestBoard: root2 = KaTrainSGF.parse_sgf("(;GM[1]FF[4]SZ[19]HA[2];)") game2 = Game(MockKaTrain(force_package_config=True), MockEngine(), move_tree=root2) assert 2 == len(game2.root.placements) + + def test_suicide(self): + rulesets_to_test = BaseEngine.RULESETS_ABBR + [('{"suicide":true}', ""), ('{"suicide":false}', "")] + for shortrule, _ in rulesets_to_test: + new_game = GameNode(properties={"SZ": 19, "RU": shortrule}) + b = Game(MockKaTrain(force_package_config=True), MockEngine(), move_tree=new_game) + b.play(Move.from_gtp("A18", player="B")) + b.play(Move.from_gtp("B18", player="B")) + b.play(Move.from_gtp("C19", player="B")) + b.play(Move.from_gtp("A19", player="W")) + assert 4 == len(b.stones) + assert 0 == len(b.prisoners) + + if shortrule in ["tt", "nz", '{"suicide":true}']: + b.play(Move.from_gtp("B19", player="W")) + assert 3 == len(b.stones) + assert 2 == len(b.prisoners) + else: + with pytest.raises(IllegalMoveException, match="Suicide"): + b.play(Move.from_gtp("B19", player="W")) + assert 4 == len(b.stones) + assert 0 == len(b.prisoners)