From 4bae8f1be5ba9415cba48e18ea7690455ba56a75 Mon Sep 17 00:00:00 2001 From: YoEnte Date: Fri, 17 Jan 2025 00:03:49 +0100 Subject: [PATCH 1/4] add(py-version): add build parameter for py version --- python/socha/starter.py | 9 ++++++++- python/socha/utils/package_builder.py | 5 +++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/python/socha/starter.py b/python/socha/starter.py index af4d344..c5a9979 100644 --- a/python/socha/starter.py +++ b/python/socha/starter.py @@ -37,6 +37,7 @@ def __init__( directory: str = None, architecture: str = None, log_level: int = logging.INFO, + python_version: str = '3.10', ): """ All these arguments can be overwritten, when parsed via start arguments, @@ -71,8 +72,9 @@ def __init__( self.directory: str = args.directory or directory self.architecture: str = args.architecture or architecture self.build: str = args.build or build + self.python_version: str = args.python_version or python_version if self.build: - builder = SochaPackageBuilder(self.directory, self.architecture) + builder = SochaPackageBuilder(self.directory, self.architecture, self.python_version) builder.build_package() exit(0) @@ -242,4 +244,9 @@ def _handle_start_args(): help="Specifies the build architecture (e.g.: manylinux1_x86_64).", ) + parser.add_argument( + "--python-version", + help="Specifies the build python version (e.g.: 10 [for python 3.10 - this is standard]).", + ) + return parser.parse_args() diff --git a/python/socha/utils/package_builder.py b/python/socha/utils/package_builder.py index 9247d61..af2d0d1 100644 --- a/python/socha/utils/package_builder.py +++ b/python/socha/utils/package_builder.py @@ -14,9 +14,10 @@ class SochaPackageBuilder: - def __init__(self, package_name, architecture): + def __init__(self, package_name, architecture, python_version): self.package_name = package_name self.architecture = architecture + self.python_version = python_version self.dependencies_dir = "dependencies" self.packages_dir = "packages" self.cache_dir = ".pip_cache" @@ -50,7 +51,7 @@ def _download_dependencies(self): "download", f"--platform={self.architecture}", "--python-version", - "3.10", + f"{self.python_version}", "--only-binary=:all:", "-d", f"{self.build_dir}/{self.package_name}/{self.dependencies_dir}", From 942c9c69e77f51bd4ba3683bcfff4b3ca358de88 Mon Sep 17 00:00:00 2001 From: YoEnte Date: Fri, 17 Jan 2025 00:04:57 +0100 Subject: [PATCH 2/4] add(py-version): adapt/update readme accordingly --- README.md | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c76753c..384e46f 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,15 @@ Dieses Repository enthält das Python-Paket für die [Software-Challenge Germany ## Inhaltsverzeichnis -- [Installation](#installation) - - [Global](#global) - - [Virtuelle Umgebung](#virtuelle-umgebung) -- [Erste Schritte](#erste-schritte) - - [Startargumente](#start-arguments) -- [Vorbereitung des Spielers auf den Wettbewerb](#vorbereitung-des-spielers-für-den-wettbewerb) -- [Lokale Entwicklung](#lokale-entwicklung) +- [Python-Client für die Software-Challenge Germany 2025](#python-client-für-die-software-challenge-germany-2025) + - [Inhaltsverzeichnis](#inhaltsverzeichnis) + - [Installation](#installation) + - [Global](#global) + - [Virtuelle Umgebung](#virtuelle-umgebung) + - [Erste Schritte](#erste-schritte) + - [Startargumente](#startargumente) + - [Vorbereitung des Spielers für den Wettbewerb](#vorbereitung-des-spielers-für-den-wettbewerb) + - [Lokale Entwicklung](#lokale-entwicklung) ## Installation @@ -138,16 +140,24 @@ Falls die Logik von der Konsole aus ausgeführt werden soll, können Startargume | **-b, --build** | Baut dieses Skript zu einem Paket mit all seinen Abhängigkeiten. | | **-d, --directory** | Das Verzeichnis, in dem das Paket erstellt werden soll. | | **-a, --architecture** | Die Architektur des Pakets. | +| **--python-version** | Die Python-Version für den Build. Der Standardwert ist '3.10'. | ## Vorbereitung des Spielers für den Wettbewerb -> Das Wettbewerbssystem läuft auf einem Linux-System mit einer `x86_64`-Architektur. Um den Client auf dem Wettbewerbssystem zu verwenden, muss das Socha-Paket für die Plattform `manylinux2014_x86_64` und die Python-Version `310` heruntergeladen werden. +> Das Wettbewerbssystem läuft auf einem Linux-System mit einer `x86_64`-Architektur. Um den Client auf dem Wettbewerbssystem zu verwenden, muss das Socha-Paket für die Plattform `manylinux2014_x86_64` und die Python-Version `310` oder `312` heruntergeladen werden. Um sicherzustellen, dass der Player im Wettbewerbssystem verwendbar ist, müssen alle Abhängigkeiten heruntergeladen werden, da das System auf einem Docker-Container ohne Internetzugang und sudo-Berechtigung ausgeführt wird. -> Das Paket erleichtert die Vorbereitung! Eine Datei `requirements.txt`, die alle Abhängigkeiten auflistet, wird benötigt. Zum Starten folgenden Befehl im Terminal ausführen: +> Das Paket erleichtert die Vorbereitung! +> +> Eine Datei `requirements.txt`, die alle Abhängigkeiten auflistet, wird dafür benötigt. +> Jeder Bot braucht natürlich das Paket `socha`. +> Außerdem sollte `setuptools` in der Version `58.1.0` für Python 3.10 bzw. `75.8.0` für Python 3.12 hinzugefügt werden. \ +> Alle Abhängigkeiten kommen mit der Syntax `==` in jeweils eine Zeile. +> +> Zum Starten folgenden Befehl im Terminal ausführen: > -> `$ python .py --build -directory -architecture ` +> `$ python .py --build --directory --architecture --python-version <3.xx>` > > Dadurch wird das Paket aktiviert und das Projekt erstellt. @@ -157,6 +167,7 @@ Falls eine manuelle Vorgehensweise bevorzugt wird, folgen diese Schritte zum Her 2. `mkdir my_player` eingeben, um ein neues Verzeichnis namens `my_player` zu erstellen. Der Verzeichnisname kann beliebig gewählt werden. 3. Mit `cd my_player` in das Verzeichnis wechseln. 4. Den Befehl `pip download socha --only-binary=:all: --platform manylinux2014_x86_64 --python-version 310 -d dependencies` im Verzeichnis ausführen, um die benötigten Abhängigkeiten in den Ordner `dependencies` herunterzuladen. + - Ändere hier `310` zu `312` wenn du mit der Python-Version 3.12 arbeitest. 5. Alle Abhängigkeiten hinzufügen, die der Client verwendet. 6. Ein letztes Verzeichnis mit `mkdir .pip_cache` erstellen. From cae9778ab66fb3b62d31008f0f1e5dfc094654ea Mon Sep 17 00:00:00 2001 From: YoEnte Date: Fri, 17 Jan 2025 09:17:09 +0100 Subject: [PATCH 3/4] fix: issued table of content change --- README.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 384e46f..e010f78 100644 --- a/README.md +++ b/README.md @@ -16,15 +16,13 @@ Dieses Repository enthält das Python-Paket für die [Software-Challenge Germany ## Inhaltsverzeichnis -- [Python-Client für die Software-Challenge Germany 2025](#python-client-für-die-software-challenge-germany-2025) - - [Inhaltsverzeichnis](#inhaltsverzeichnis) - - [Installation](#installation) - - [Global](#global) - - [Virtuelle Umgebung](#virtuelle-umgebung) - - [Erste Schritte](#erste-schritte) - - [Startargumente](#startargumente) - - [Vorbereitung des Spielers für den Wettbewerb](#vorbereitung-des-spielers-für-den-wettbewerb) - - [Lokale Entwicklung](#lokale-entwicklung) +- [Installation](#installation) + - [Global](#global) + - [Virtuelle Umgebung](#virtuelle-umgebung) +- [Erste Schritte](#erste-schritte) + - [Startargumente](#startargumente) +- [Vorbereitung des Spielers für den Wettbewerb](#vorbereitung-des-spielers-für-den-wettbewerb) +- [Lokale Entwicklung](#lokale-entwicklung) ## Installation From 1c79735cc543de6fabbf2ae525d9e8379ca22e68 Mon Sep 17 00:00:00 2001 From: YoEnte Date: Fri, 17 Jan 2025 09:22:11 +0100 Subject: [PATCH 4/4] fix: mistake in logic --help --- python/socha/starter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/socha/starter.py b/python/socha/starter.py index c5a9979..673d1ec 100644 --- a/python/socha/starter.py +++ b/python/socha/starter.py @@ -246,7 +246,7 @@ def _handle_start_args(): parser.add_argument( "--python-version", - help="Specifies the build python version (e.g.: 10 [for python 3.10 - this is standard]).", + help="Specifies the build python version (e.g.: 3.10 - this is standard]).", ) return parser.parse_args()