katago download

This commit is contained in:
Sander Land committed 2020-08-24 16:49:12 +02:00
1 parent b26720844a
commit 219f327c20
23 files changed
+339 -30

No files matched your search

+54 -13
View File
@@ -1,11 +1,17 @@
# Example config for C++ (non-python) gtp bot # Example config for C++ (non-python) gtp bot
# SEE NOTES ABOUT PERFORMANCE AND MEMORY USAGE IN gtp_example.cfg # SEE NOTES ABOUT PERFORMANCE AND MEMORY USAGE IN gtp_example.cfg
# SEE NOTES ABOUT numSearchThreads AND OTHER IMPORTANT PARAMS BELOW!
# Logs------------------------------------------------------------------------------------ # Logs------------------------------------------------------------------------------------
# Where to output log? # Where to output log?
logFile = "~/.katrain/katago_log.txt" logFile = "~/.katrain/katago_log.txt"
# logFile = analysis.log # Use this instead of logDir to just specify a single file directly
# logToStderr = true # Echo everything output to log file to stderr as well
# logAllRequests = false # Log all input lines received to the analysis engine.
# logAllResponses = false # Log all lines output to stdout from the analysis engine.
# logSearchInfo = false # Log debug info for every search performed
# Controls the number of moves after the first move in a variation. # Controls the number of moves after the first move in a variation.
# analysisPVLen = 15 # analysisPVLen = 15
@@ -47,20 +53,56 @@ maxVisits = 500
# If provided, cap search time at this many seconds # If provided, cap search time at this many seconds
# maxTime = 60 # maxTime = 60
# Number of threads to use in each search in parallel for any SINGLE position.
# NOTE: Analysis engine can specify number of POSITIONS to be able to search in parallel via command line argument
# so this number does not necessarily need to be larger than 1, although you can still set it larger if you prefer
# to analyze fewer positions in parallel but spend more threads on each position.
# Generally, having more threads on a single position will worsen the quality of search slightly, holding fixed the
# number of visits, and thread contention will reduce efficiency, so cross-position parallelization is preferable
# to numSearchThreads, but numSearchThreads is preferable if you want to reduce latency, and have individual
# searches complete faster by doing fewer of them at a time.
numSearchThreads = 6
# GPU Settings------------------------------------------------------------------------------- # numSearchThreads is the number of threads to use in each MCTS tree search in parallel for any individual position.
# But NOTE: Analysis engine also specifies max number of POSITIONS to be able to search in parallel via command line
# argument, -num-analysis-threads.
# Parallelization across positions is more efficient since the threads on different positions operate
# on different MCTS trees so they don't have to synchronize with each other. Also, multiple threads on the same MCTS
# tree weakens the search (holding playouts fixed) due to out of date statistics on nodes and suboptimal exploration,
# although the loss is still quite small for only 2,4,8 threads. So you often want to keep numSearchThreads small,
# unlike in GTP.
# But obviously you only get the benefit of parallelization across positions when you actually have lots of positions
# that you are querying at once.
# Therefore:
# * If you plan to use the analysis engine only for batch processing large numbers of positions,
# it's preferable to set this to only a small number (e.g. 1,2,4) and use a higher -num-analysis-threads.
# * But if you sometimes plan to query the analysis engine for single positions, or otherwise in smaller quantities
# than -num-analysis-threads, or if you plan to be user-interactive such that the response time on some individual
# analysis requests is important to keep low, then set this to a larger number and use somewhat fewer analysis threads,
# That way, individual searches complete faster due to having more threads on each one and doing fewer other ones at a time.
# For 19x19 boards, weaker GPUs probably want a TOTAL number of threads (numSearchThreads * num-analysis-threads)
# between 4 and 32. Mid-tier GPUs probably between 16 and 64. Strong GPUs probably between 32 and 256.
# But there's no substitute for experimenting and seeing what's best for your hardware and your usage case.
# Keep in mind that the number of threads you want doesn't necessarily have much to do with how many cores you
# have on your system, and could easily exceed the number of cores. GPU batching is (usually) the dominant consideration.
numSearchThreads = 10
# nnMaxBatchSize is the max number of positions to send to a single GPU at once. Generally, it should be the case that:
# (number of GPUs you will use * nnMaxBatchSize) >= (numSearchThreads * num-analysis-threads)
# That way, when each threads tries to request a GPU eval, your batch size summed across GPUs is large enough to handle them
# all at once. However, it can be sensible to set this a little smaller if you are limited on GPU memory,
# too large a number may fail if the GPU doesn't have enough memory.
nnMaxBatchSize = 96
# Uncomment and set these smaller if you ONLY are going to use the analysis engine for smaller boards (or plan to
# run multiple instances, with some instances only handling smaller boards). It should improve performance.
# It may also mean you can use more threads profitably.
# maxBoardXSizeForNNBuffer = 19
# maxBoardYSizeForNNBuffer = 19
# TO USE MULTIPLE GPUS:
# Uncomment and set this to the number of GPUs you have and/or would like to use...
# AND if it is more than 1, uncomment the appropriate CUDA or OpenCL section below.
# numNNServerThreadsPerModel = 1
# Other General GPU Settings-------------------------------------------------------------------------------
# Maximum number of positions to send to GPU at once.
nnMaxBatchSize = 72
# Cache up to 2 ** this many neural net evaluations in case of transpositions in the tree. # Cache up to 2 ** this many neural net evaluations in case of transpositions in the tree.
nnCacheSizePowerOfTwo = 19 nnCacheSizePowerOfTwo = 19
# Size of mutex pool for nnCache is 2 ** this # Size of mutex pool for nnCache is 2 ** this
@@ -99,7 +141,6 @@ nnRandomize = true
# cudaUseFP16 = auto # cudaUseFP16 = auto
# cudaUseNHWC = auto # cudaUseNHWC = auto
# OpenCL GPU settings-------------------------------------- # OpenCL GPU settings--------------------------------------
# These only apply when using the OpenCL version of KataGo. # These only apply when using the OpenCL version of KataGo.
Binary file not shown.
Binary file not shown.
+2 -1
View File
@@ -1,6 +1,7 @@
{ {
"engine": { "engine": {
"katago": "", "katago": "",
"altcommand": "",
"model": "katrain/models/g170e-b15c192-s1672170752-d466197061.bin.gz", "model": "katrain/models/g170e-b15c192-s1672170752-d466197061.bin.gz",
"config": "katrain/KataGo/analysis_config.cfg", "config": "katrain/KataGo/analysis_config.cfg",
"threads": 12, "threads": 12,
@@ -16,7 +17,7 @@
"anim_pv_time": 0.5, "anim_pv_time": 0.5,
"debug_level": 0, "debug_level": 0,
"lang": "en", "lang": "en",
"version": "1.3.5" "version": "1.4.0"
}, },
"timer": { "timer": {
"byo_length": 30, "byo_length": 30,
+2 -2
View File
@@ -1,6 +1,6 @@
VERSION = "1.3.5" VERSION = "1.4.0"
HOMEPAGE = "https://github.com/sanderland/katrain" HOMEPAGE = "https://github.com/sanderland/katrain"
CONFIG_MIN_VERSION = "1.3.3" # keep config files from this version CONFIG_MIN_VERSION = "1.4.0" # keep config files from this version
OUTPUT_ERROR = -1 OUTPUT_ERROR = -1
OUTPUT_KATAGO_STDERR = -0.5 OUTPUT_KATAGO_STDERR = -0.5
+114 -1
View File
@@ -2,6 +2,7 @@ import glob
import os import os
import re import re
from typing import Any, Dict, List, Tuple, Union from typing import Any, Dict, List, Tuple, Union
from zipfile import ZipFile
from kivy.clock import Clock from kivy.clock import Clock
from kivy.metrics import dp from kivy.metrics import dp
@@ -10,6 +11,7 @@ from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.boxlayout import BoxLayout from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label from kivy.uix.label import Label
from kivy.uix.popup import Popup from kivy.uix.popup import Popup
from kivy.utils import platform
from kivymd.app import MDApp from kivymd.app import MDApp
from kivymd.uix.boxlayout import MDBoxLayout from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.selectioncontrol import MDCheckbox from kivymd.uix.selectioncontrol import MDCheckbox
@@ -374,12 +376,14 @@ class ConfigPopup(QuickConfigGui):
def __init__(self, katrain): def __init__(self, katrain):
super().__init__(katrain) super().__init__(katrain)
self.paths = [self.katrain.config("engine/model"), "katrain/models", "~/.katrain"] self.paths = [self.katrain.config("engine/model"), "katrain/models", "~/.katrain"]
self.katago_paths = [self.katrain.config("engine/katago"), "katrain/KataGo", "~/.katrain"]
MDApp.get_running_app().bind(language=self.check_models) MDApp.get_running_app().bind(language=self.check_models)
MDApp.get_running_app().bind(language=self.check_katas)
def build_and_set_properties(self, *_args): def build_and_set_properties(self, *_args):
super().build_and_set_properties() super().build_and_set_properties()
def check_models(self, *args): # WIP def check_models(self, *args):
done = set() done = set()
model_files = [] model_files = []
for path in self.paths + [self.model_path.text]: for path in self.paths + [self.model_path.text]:
@@ -405,12 +409,55 @@ class ConfigPopup(QuickConfigGui):
self.model_files.values = [models_available_msg] + model_files self.model_files.values = [models_available_msg] + model_files
self.model_files.text = models_available_msg self.model_files.text = models_available_msg
def check_katas(self, *args):
done = set()
model_files = []
for path in self.katago_paths + [self.katago_path.text]:
path = path.rstrip("/\\")
if path.startswith("katrain"):
path = path.replace("katrain", PATHS["PACKAGE"].rstrip("/\\"), 1)
path = os.path.expanduser(path)
if not os.path.isdir(path):
path, _file = os.path.split(path)
slashpath = path.replace("\\", "/")
if slashpath in done or not os.path.isdir(path):
continue
done.add(slashpath)
files = [
f.replace("/", os.path.sep).replace(PATHS["PACKAGE"], "katrain")
for ftype in ["katago*"]
for f in glob.glob(slashpath + "/" + ftype)
if os.path.isfile(f) and not f.endswith(".zip")
]
if files and path not in self.paths:
self.paths.append(path) # persistent on paths with models found
model_files += files
katas_available_msg = i18n._("katago binaries available").format(num=len(model_files))
self.katago_files.values = [katas_available_msg, i18n._("default katago option")] + model_files
self.katago_files.text = katas_available_msg
MODELS = { MODELS = {
"latest 20b": "https://github.com/lightvector/KataGo/releases/download/v1.4.5/g170e-b20c256x2-s5303129600-d1228401921.bin.gz", "latest 20b": "https://github.com/lightvector/KataGo/releases/download/v1.4.5/g170e-b20c256x2-s5303129600-d1228401921.bin.gz",
"latest 30b": "https://github.com/lightvector/KataGo/releases/download/v1.4.5/g170-b30c320x2-s4824661760-d1229536699.bin.gz", "latest 30b": "https://github.com/lightvector/KataGo/releases/download/v1.4.5/g170-b30c320x2-s4824661760-d1229536699.bin.gz",
"latest 40b": "https://github.com/lightvector/KataGo/releases/download/v1.4.5/g170-b40c256x2-s5095420928-d1229425124.bin.gz", "latest 40b": "https://github.com/lightvector/KataGo/releases/download/v1.4.5/g170-b40c256x2-s5095420928-d1229425124.bin.gz",
} }
KATAGOS = {
"windows": {
"Official OpenCL v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-opencl-windows-x64.zip",
"Official OpenCL v1.6.0 (32 bit)": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-opencl-windows-x32-dont-use-unless-actually-32bit-windows.zip",
"Official CUDA v1.6.0 (New NVIDIA cards)": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-cuda10.2-windows-x64.zip",
"Eigen AVX2 (Modern CPUs) v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-cpu-eigen-avx2-windows-x64.zip",
"Eigen (CPU, Non-optimized) v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-cpu-eigen-windows-x64.zip",
},
"linux": {
"Official OpenCL v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-opencl-linux-x64.zip",
"Official CUDA v1.6.0 (New NVIDIA cards)": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-cuda10.2-linux-x64.zip",
"Eigen AVX2 (Modern CPUs) v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-cpu-eigen-avx2-linux-x64.zip",
"Eigen (CPU, Non-optimized) v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-cpu-eigen-linux-x64.zip",
},
}
def download_models(self, *_largs): def download_models(self, *_largs):
def download_complete(req, tmp_path, path, model): def download_complete(req, tmp_path, path, model):
try: try:
@@ -452,6 +499,72 @@ class ConfigPopup(QuickConfigGui):
self.download_progress_box.add_widget(Label(text=i18n._("All models downloaded"), text_size=(None, dp(50)))) self.download_progress_box.add_widget(Label(text=i18n._("All models downloaded"), text_size=(None, dp(50))))
print("x") print("x")
def download_katas(self, *_largs):
def unzipped_name(zipfile):
if platform == "windows":
return zipfile.replace(".zip", ".exe")
else:
return zipfile.replace(".zip", "")
def download_complete(req, tmp_path, path, binary):
try:
if tmp_path.endswith(".zip"):
with ZipFile(tmp_path, "r") as zipObj:
exes = [f for f in zipObj.namelist() if f.startswith("katago")]
if len(exes) != 1:
raise FileNotFoundError(
f"Zip file {tmp_path} does not contain exactly 1 file starting with 'katago' (contents: {zipObj.namelist()})"
)
with open(path, "wb") as fout:
fout.write(zipObj.read(exes[0]))
else:
os.rename(tmp_path, path)
self.katrain.log(f"Download of katago binary {binary} model complete -> {path}", OUTPUT_INFO)
except Exception as e:
self.katrain.log(
f"Download of katago binary {binary} complete, but could not move file: {e}", OUTPUT_ERROR
)
self.check_katas()
for c in self.download_progress_box.children:
if isinstance(c, ProgressLoader) and c.request:
c.request.cancel()
self.katago_download_progress_box.clear_widgets()
downloading = False
for name, url in self.KATAGOS.get(platform, {}).items():
filename = os.path.split(url)[1]
exe_name = unzipped_name(filename)
if not any(os.path.split(f)[1] == exe_name for f in self.katago_files.values):
savepath_tmp = os.path.expanduser(os.path.join("~/.katrain", filename))
exe_path_name = os.path.expanduser(os.path.join("~/.katrain", exe_name))
self.katrain.log(f"Downloading binary {name} from {url} to {savepath_tmp}", OUTPUT_INFO)
progress = ProgressLoader(
download_url=url,
path_to_file=savepath_tmp,
downloading_text=f"Downloading {name}: " + "{}",
label_downloading_text=f"Starting download for {name}",
download_complete=lambda req, tmp=savepath_tmp, path=exe_path_name, model=name: download_complete(
req, tmp, path, model
),
download_redirected=lambda req, mname=name: self.katrain.log(
f"Download {mname} redirected {req.resp_headers}", OUTPUT_DEBUG
),
download_error=lambda req, error, mname=name: self.katrain.log(
f"Download of {mname} failed or cancelled ({error})", OUTPUT_ERROR
),
)
progress.start(self.katago_download_progress_box)
downloading = True
if not downloading:
if not self.KATAGOS.get(platform):
self.katago_download_progress_box.add_widget(
Label(text=f"No binaries available for platform {platform}", text_size=(None, dp(50)))
)
else:
self.katago_download_progress_box.add_widget(
Label(text=i18n._("All binaries downloaded"), text_size=(None, dp(50)))
)
def update_config(self, save_to_file=True): def update_config(self, save_to_file=True):
updated = super().update_config(save_to_file=save_to_file) updated = super().update_config(save_to_file=save_to_file)
self.katrain.debug_level = self.katrain.config("general/debug_level", OUTPUT_INFO) self.katrain.debug_level = self.katrain.config("general/debug_level", OUTPUT_INFO)
Binary file not shown.
@@ -617,3 +617,19 @@ msgstr ""
#. TODO #. TODO
msgid "engine:altcommand" msgid "engine:altcommand"
msgstr "Override Engine Command" msgstr "Override Engine Command"
#. TODO - button in general settings for downloading models
msgid "download katago button"
msgstr "Download KataGo versions"
#. TODO - shown on on the model select dropdown
msgid "katago binaries available"
msgstr "{num} available binaries found"
#. TODO - shown on on the katago binary select dropdown
msgid "default katago option"
msgstr "Detect platform and use provided binary"
#. TODO - error message on trying to download models when already done
msgid "All binaries downloaded"
msgstr "All available binaries already downloaded"
Binary file not shown.
+18 -2
View File
@@ -655,9 +655,25 @@ msgstr "Colour Theme"
#. TODO #. TODO
msgid "engine:altcommand:hint" msgid "engine:altcommand:hint"
msgstr "" msgstr ""
"Full command used to start the engine, for e.g. using plink to connect to a " "Full command used to start the engine. All other model options will be "
"remote engine. All other model options will be ignored." "ignored."
#. TODO #. TODO
msgid "engine:altcommand" msgid "engine:altcommand"
msgstr "Override Engine Command" msgstr "Override Engine Command"
#. TODO - button in general settings for downloading models
msgid "download katago button"
msgstr "Download KataGo versions"
#. TODO - shown on on the model select dropdown
msgid "katago binaries available"
msgstr "{num} available binaries found"
#. TODO - shown on on the katago binary select dropdown
msgid "default katago option"
msgstr "Detect platform and use provided binary"
#. TODO - error message on trying to download models when already done
msgid "All binaries downloaded"
msgstr "All available binaries already downloaded"
Binary file not shown.
+18 -2
View File
@@ -416,8 +416,8 @@ msgstr "Override Engine Command"
msgid "engine:altcommand:hint" msgid "engine:altcommand:hint"
msgstr "" msgstr ""
"Full command used to start the engine, for e.g. using plink to connect to a " "Full command used to start the engine. All other model options will be "
"remote engine. All other model options will be ignored." "ignored."
msgid "engine:max_visits" msgid "engine:max_visits"
msgstr "Maximum number of visits in analysis" msgstr "Maximum number of visits in analysis"
@@ -636,14 +636,30 @@ msgstr "Estimated Strength"
msgid "download models button" msgid "download models button"
msgstr "Download Models" msgstr "Download Models"
#. button in general settings for downloading models
msgid "download katago button"
msgstr "Download KataGo versions"
#. shown on on the model select dropdown #. shown on on the model select dropdown
msgid "models available" msgid "models available"
msgstr "{num} available model(s) found" msgstr "{num} available model(s) found"
#. shown on on the katago binary select dropdown
msgid "default katago option"
msgstr "Detect platform and use provided binary"
#. shown on on the model select dropdown
msgid "katago binaries available"
msgstr "{num} available binaries found"
#. error message on trying to download models when already done #. error message on trying to download models when already done
msgid "All models downloaded" msgid "All models downloaded"
msgstr "All available models already downloaded" msgstr "All available models already downloaded"
#. error message on trying to download models when already done
msgid "All binaries downloaded"
msgstr "All available binaries already downloaded"
#. label in little popup for analyzing entire game #. label in little popup for analyzing entire game
msgid "reanalyze max visits" msgid "reanalyze max visits"
msgstr "Number of visits per move" msgstr "Number of visits per move"
Binary file not shown.
@@ -657,3 +657,19 @@ msgstr ""
#. TODO #. TODO
msgid "engine:altcommand" msgid "engine:altcommand"
msgstr "Override Engine Command" msgstr "Override Engine Command"
#. TODO - button in general settings for downloading models
msgid "download katago button"
msgstr "Download KataGo versions"
#. TODO - shown on on the model select dropdown
msgid "katago binaries available"
msgstr "{num} available binaries found"
#. TODO - shown on on the katago binary select dropdown
msgid "default katago option"
msgstr "Detect platform and use provided binary"
#. TODO - error message on trying to download models when already done
msgid "All binaries downloaded"
msgstr "All available binaries already downloaded"
Binary file not shown.
+18 -2
View File
@@ -692,9 +692,25 @@ msgstr "Colour Theme"
#. TODO #. TODO
msgid "engine:altcommand:hint" msgid "engine:altcommand:hint"
msgstr "" msgstr ""
"Full command used to start the engine, for e.g. using plink to connect to a " "Full command used to start the engine. All other model options will be "
"remote engine. All other model options will be ignored." "ignored."
#. TODO #. TODO
msgid "engine:altcommand" msgid "engine:altcommand"
msgstr "Override Engine Command" msgstr "Override Engine Command"
#. TODO - button in general settings for downloading models
msgid "download katago button"
msgstr "Download KataGo versions"
#. TODO - shown on on the model select dropdown
msgid "katago binaries available"
msgstr "{num} available binaries found"
#. TODO - shown on on the katago binary select dropdown
msgid "default katago option"
msgstr "Detect platform and use provided binary"
#. TODO - error message on trying to download models when already done
msgid "All binaries downloaded"
msgstr "All available binaries already downloaded"
Binary file not shown.
@@ -640,3 +640,19 @@ msgstr "エンジン起動コマンド全体 (plinkでリモートエンジン
msgid "engine:altcommand" msgid "engine:altcommand"
msgstr "エンジンコマンドの上書き" msgstr "エンジンコマンドの上書き"
#. TODO - button in general settings for downloading models
msgid "download katago button"
msgstr "Download KataGo versions"
#. TODO - shown on on the model select dropdown
msgid "katago binaries available"
msgstr "{num} available binaries found"
#. TODO - shown on on the katago binary select dropdown
msgid "default katago option"
msgstr "Detect platform and use provided binary"
#. TODO - error message on trying to download models when already done
msgid "All binaries downloaded"
msgstr "All available binaries already downloaded"
Binary file not shown.
+18 -2
View File
@@ -627,9 +627,25 @@ msgstr "Colour Theme"
#. TODO #. TODO
msgid "engine:altcommand:hint" msgid "engine:altcommand:hint"
msgstr "" msgstr ""
"Full command used to start the engine, for e.g. using plink to connect to a " "Full command used to start the engine. All other model options will be "
"remote engine. All other model options will be ignored." "ignored."
#. TODO #. TODO
msgid "engine:altcommand" msgid "engine:altcommand"
msgstr "Override Engine Command" msgstr "Override Engine Command"
#. TODO - button in general settings for downloading models
msgid "download katago button"
msgstr "Download KataGo versions"
#. TODO - shown on on the model select dropdown
msgid "katago binaries available"
msgstr "{num} available binaries found"
#. TODO - shown on on the katago binary select dropdown
msgid "default katago option"
msgstr "Detect platform and use provided binary"
#. TODO - error message on trying to download models when already done
msgid "All binaries downloaded"
msgstr "All available binaries already downloaded"
Binary file not shown.
+18 -2
View File
@@ -652,9 +652,25 @@ msgstr "Colour Theme"
#. TODO #. TODO
msgid "engine:altcommand:hint" msgid "engine:altcommand:hint"
msgstr "" msgstr ""
"Full command used to start the engine, for e.g. using plink to connect to a " "Full command used to start the engine. All other model options will be "
"remote engine. All other model options will be ignored." "ignored."
#. TODO #. TODO
msgid "engine:altcommand" msgid "engine:altcommand"
msgstr "Override Engine Command" msgstr "Override Engine Command"
#. TODO - button in general settings for downloading models
msgid "download katago button"
msgstr "Download KataGo versions"
#. TODO - shown on on the model select dropdown
msgid "katago binaries available"
msgstr "{num} available binaries found"
#. TODO - shown on on the katago binary select dropdown
msgid "default katago option"
msgstr "Detect platform and use provided binary"
#. TODO - error message on trying to download models when already done
msgid "All binaries downloaded"
msgstr "All available binaries already downloaded"
+29 -3
View File
@@ -80,23 +80,45 @@
<ConfigPopup>: <ConfigPopup>:
configfile: configfile configfile: configfile
model_path: model_path model_path: model_path
katago_path: katago_path
model_files: model_files model_files: model_files
katago_files: katago_files
download_progress_box: download_progress_box download_progress_box: download_progress_box
katago_download_progress_box: katago_download_progress_box
DescriptionLabel: DescriptionLabel:
text: i18n._('katago settings') text: i18n._('katago settings')
font_size: DESC_FONT_SIZE * 1.5 font_size: DESC_FONT_SIZE * 1.5
GridLayout: GridLayout:
cols: 2 cols: 2
rows: 5 rows: 6
size_hint: 1,5 size_hint: 1,6
spacing: CP_SPACING spacing: CP_SPACING
DescriptionLabel: DescriptionLabel:
text: i18n._("engine:katago") text: i18n._("engine:katago")
size_hint: 0.33, 1 size_hint: 0.33, 1
AnchorLayout: AnchorLayout:
LabelledPathInput: LabelledPathInput:
id: katago_path
input_property: "engine/katago" input_property: "engine/katago"
hint_text: i18n._("engine:katago:hint") hint_text: i18n._("engine:katago:hint")
on_text: root.check_katas()
AnchorLayout:
size_hint: 0.33, 1
AutoSizedRoundedRectangleButton:
text: i18n._("download katago button")
on_press: root.download_katas()
size_hint_y: 0.7
AnchorLayout:
Spinner:
id: katago_files
text: ''
on_text:
if self.text and self.text == self.values[1]: katago_path.text = ''
elif self.text and self.text != self.values[0]: katago_path.text = args[1]
size_hint_y: 0.7
sync_height_frac: 1.0
-font_size: self.height * 0.5
-background_color: [*[c*255/88 for c in BOX_BACKGROUND_COLOR[:3]], 1] # compensate for texture
DescriptionLabel: DescriptionLabel:
text: i18n._("engine:config") text: i18n._("engine:config")
size_hint: 0.33, 1 size_hint: 0.33, 1
@@ -207,9 +229,13 @@
orientation: 'horizontal' orientation: 'horizontal'
size_hint: 1,1.5 size_hint: 1,1.5
MDBoxLayout: MDBoxLayout:
size_hint_x: 4 if self.children else 0.0001 size_hint_x: 3.5 if self.children else 0.0001
orientation: 'vertical' orientation: 'vertical'
id: download_progress_box id: download_progress_box
MDBoxLayout:
size_hint_x: 3.5 if self.children else 0.0001
orientation: 'vertical'
id: katago_download_progress_box
AnchorLayout: AnchorLayout:
AutoSizedRoundedRectangleButton: AutoSizedRoundedRectangleButton:
padding_x: 15 padding_x: 15