Skip to content

Commit da95965

Browse files
YoEnteYoEnte
andauthored
Add build py version (#86)
* add(py-version): add build parameter for py version * add(py-version): adapt/update readme accordingly * fix: issued table of content change * fix: mistake in logic --help --------- Co-authored-by: YoEnte <anthony@[email protected]>
1 parent 9fea74e commit da95965

File tree

3 files changed

+25
-8
lines changed

3 files changed

+25
-8
lines changed

README.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ Dieses Repository enthält das Python-Paket für die [Software-Challenge Germany
2020
- [Global](#global)
2121
- [Virtuelle Umgebung](#virtuelle-umgebung)
2222
- [Erste Schritte](#erste-schritte)
23-
- [Startargumente](#start-arguments)
24-
- [Vorbereitung des Spielers auf den Wettbewerb](#vorbereitung-des-spielers-für-den-wettbewerb)
23+
- [Startargumente](#startargumente)
24+
- [Vorbereitung des Spielers für den Wettbewerb](#vorbereitung-des-spielers-für-den-wettbewerb)
2525
- [Lokale Entwicklung](#lokale-entwicklung)
2626

2727
## Installation
@@ -138,16 +138,24 @@ Falls die Logik von der Konsole aus ausgeführt werden soll, können Startargume
138138
| **-b, --build** | Baut dieses Skript zu einem Paket mit all seinen Abhängigkeiten. |
139139
| **-d, --directory** | Das Verzeichnis, in dem das Paket erstellt werden soll. |
140140
| **-a, --architecture** | Die Architektur des Pakets. |
141+
| **--python-version** | Die Python-Version für den Build. Der Standardwert ist '3.10'. |
141142

142143
## Vorbereitung des Spielers für den Wettbewerb
143144

144-
> 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.
145+
> 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.
145146
146147
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.
147148

148-
> 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:
149+
> Das Paket erleichtert die Vorbereitung!
150+
>
151+
> Eine Datei `requirements.txt`, die alle Abhängigkeiten auflistet, wird dafür benötigt.
152+
> Jeder Bot braucht natürlich das Paket `socha`.
153+
> 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. \
154+
> Alle Abhängigkeiten kommen mit der Syntax `<paket>==<version>` in jeweils eine Zeile.
155+
>
156+
> Zum Starten folgenden Befehl im Terminal ausführen:
149157
>
150-
> `$ python <dein_haupt_skript>.py --build -directory <dein_ordner> -architecture <ziel_architektur>`
158+
> `$ python <dein_haupt_skript>.py --build --directory <dein_ordner> --architecture <ziel_architektur> --python-version <3.xx>`
151159
>
152160
> Dadurch wird das Paket aktiviert und das Projekt erstellt.
153161
@@ -157,6 +165,7 @@ Falls eine manuelle Vorgehensweise bevorzugt wird, folgen diese Schritte zum Her
157165
2. `mkdir my_player` eingeben, um ein neues Verzeichnis namens `my_player` zu erstellen. Der Verzeichnisname kann beliebig gewählt werden.
158166
3. Mit `cd my_player` in das Verzeichnis wechseln.
159167
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.
168+
- Ändere hier `310` zu `312` wenn du mit der Python-Version 3.12 arbeitest.
160169
5. Alle Abhängigkeiten hinzufügen, die der Client verwendet.
161170
6. Ein letztes Verzeichnis mit `mkdir .pip_cache` erstellen.
162171

python/socha/starter.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def __init__(
3737
directory: str = None,
3838
architecture: str = None,
3939
log_level: int = logging.INFO,
40+
python_version: str = '3.10',
4041
):
4142
"""
4243
All these arguments can be overwritten, when parsed via start arguments,
@@ -71,8 +72,9 @@ def __init__(
7172
self.directory: str = args.directory or directory
7273
self.architecture: str = args.architecture or architecture
7374
self.build: str = args.build or build
75+
self.python_version: str = args.python_version or python_version
7476
if self.build:
75-
builder = SochaPackageBuilder(self.directory, self.architecture)
77+
builder = SochaPackageBuilder(self.directory, self.architecture, self.python_version)
7678
builder.build_package()
7779
exit(0)
7880

@@ -242,4 +244,9 @@ def _handle_start_args():
242244
help="Specifies the build architecture (e.g.: manylinux1_x86_64).",
243245
)
244246

247+
parser.add_argument(
248+
"--python-version",
249+
help="Specifies the build python version (e.g.: 3.10 - this is standard]).",
250+
)
251+
245252
return parser.parse_args()

python/socha/utils/package_builder.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@
1414

1515
class SochaPackageBuilder:
1616

17-
def __init__(self, package_name, architecture):
17+
def __init__(self, package_name, architecture, python_version):
1818
self.package_name = package_name
1919
self.architecture = architecture
20+
self.python_version = python_version
2021
self.dependencies_dir = "dependencies"
2122
self.packages_dir = "packages"
2223
self.cache_dir = ".pip_cache"
@@ -50,7 +51,7 @@ def _download_dependencies(self):
5051
"download",
5152
f"--platform={self.architecture}",
5253
"--python-version",
53-
"3.10",
54+
f"{self.python_version}",
5455
"--only-binary=:all:",
5556
"-d",
5657
f"{self.build_dir}/{self.package_name}/{self.dependencies_dir}",

0 commit comments

Comments
 (0)