Skip to content

Commit 01d70e9

Browse files
authored
Blokus 2027 (#104)
* first full blokus implementation * fix linter * fix lints 2 * back to Optional and ignore linter
1 parent 212d3ce commit 01d70e9

1 file changed

Lines changed: 41 additions & 31 deletions

File tree

python/socha/api/protocol/protocol.py

Lines changed: 41 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
# ruff: noqa: UP045
2+
13
from dataclasses import dataclass, field
4+
from typing import Optional
25

36
from socha._socha import TeamEnum
47
from socha.api.protocol.protocol_packet import (
@@ -23,11 +26,11 @@ class Position:
2326
class Meta:
2427
name = 'position'
2528

26-
x: int | None = field(
29+
x: Optional[int] = field(
2730
default=None,
2831
metadata={'type': 'Attribute'},
2932
)
30-
y: int | None = field(
33+
y: Optional[int] = field(
3134
default=None,
3235
metadata={'type': 'Attribute'},
3336
)
@@ -42,26 +45,26 @@ class Piece:
4245
class Meta:
4346
name = 'piece'
4447

45-
color: str | None = field(
48+
color: Optional[str] = field(
4649
default=None,
4750
metadata={'type': 'Attribute'},
4851
)
49-
kind: str | None = field(
52+
kind: Optional[str] = field(
5053
default=None,
5154
metadata={'type': 'Attribute'},
5255
)
53-
rotation: str | None = field(
56+
rotation: Optional[str] = field(
5457
default=None,
5558
metadata={'type': 'Attribute'},
5659
)
57-
is_flipped: bool | None = field(
60+
is_flipped: Optional[bool] = field(
5861
default=None,
5962
metadata={
6063
'name': 'isFlipped',
6164
'type': 'Attribute',
6265
},
6366
)
64-
position: Position | None = field(
67+
position: Optional[Position] = field(
6568
default=None,
6669
metadata={'type': 'Element'},
6770
)
@@ -72,22 +75,22 @@ class LastMove:
7275
class Meta:
7376
name = 'lastMove'
7477

75-
class_binding: object | None = field(default=None)
76-
class_value: str | None = field(
78+
class_binding: Optional[object] = field(default=None)
79+
class_value: Optional[str] = field(
7780
default=None,
7881
metadata={
7982
'name': 'class',
8083
'type': 'Attribute',
8184
'required': True,
8285
},
8386
)
84-
piece: Piece | None = field(
87+
piece: Optional[Piece] = field(
8588
default=None,
8689
metadata={'type': 'Element'},
8790
)
8891
# Für SkipMove: SkipMove.color hat kein @XStreamAsAttribute in Kotlin,
8992
# wird daher als Kindelement serialisiert (nicht als Attribut).
90-
color: str | None = field(
93+
color: Optional[str] = field(
9194
default=None,
9295
metadata={'type': 'Element'},
9396
)
@@ -98,15 +101,15 @@ class Field:
98101
class Meta:
99102
name = 'field'
100103

101-
x: int | None = field(
104+
x: Optional[int] = field(
102105
default=None,
103106
metadata={'type': 'Attribute'},
104107
)
105-
y: int | None = field(
108+
y: Optional[int] = field(
106109
default=None,
107110
metadata={'type': 'Attribute'},
108111
)
109-
content: str | None = field(
112+
content: Optional[str] = field(
110113
default=None,
111114
metadata={'type': 'Attribute'},
112115
)
@@ -168,14 +171,14 @@ class LastMoveMonoEntry:
168171
class Meta:
169172
name = 'entry'
170173

171-
color: str | None = field(
174+
color: Optional[str] = field(
172175
default=None,
173176
metadata={
174177
'name': 'sc.plugin2027.Color',
175178
'type': 'Element',
176179
},
177180
)
178-
value: bool | None = field(
181+
value: Optional[bool] = field(
179182
default=None,
180183
metadata={
181184
'name': 'boolean',
@@ -223,14 +226,21 @@ class Meta:
223226
'required': True,
224227
},
225228
)
226-
start_piece: str | None = field(
229+
start_piece: Optional[str] = field(
227230
default=None,
228231
metadata={
229232
'name': 'startPiece',
230233
'type': 'Attribute',
231234
'required': True,
232235
},
233236
)
237+
round: Optional[int] = field(
238+
default=None,
239+
metadata={
240+
'type': 'Attribute',
241+
'required': True,
242+
},
243+
)
234244
round: int | None = field(
235245
default=None,
236246
metadata={
@@ -245,49 +255,49 @@ class Meta:
245255
'type': 'Element',
246256
},
247257
)
248-
board: Board | None = field(
258+
board: Optional[Board] = field(
249259
default=None,
250260
metadata={
251261
'type': 'Element',
252262
'required': True,
253263
},
254264
)
255-
last_move_mono: LastMoveMono | None = field(
265+
last_move_mono: Optional[LastMoveMono] = field(
256266
default=None,
257267
metadata={
258268
'name': 'lastMoveMono',
259269
'type': 'Element',
260270
},
261271
)
262-
blue_shapes: ShapeList | None = field(
272+
blue_shapes: Optional[ShapeList] = field(
263273
default=None,
264274
metadata={
265275
'name': 'blueShapes',
266276
'type': 'Element',
267277
},
268278
)
269-
yellow_shapes: ShapeList | None = field(
279+
yellow_shapes: Optional[ShapeList] = field(
270280
default=None,
271281
metadata={
272282
'name': 'yellowShapes',
273283
'type': 'Element',
274284
},
275285
)
276-
red_shapes: ShapeList | None = field(
286+
red_shapes: Optional[ShapeList] = field(
277287
default=None,
278288
metadata={
279289
'name': 'redShapes',
280290
'type': 'Element',
281291
},
282292
)
283-
green_shapes: ShapeList | None = field(
293+
green_shapes: Optional[ShapeList] = field(
284294
default=None,
285295
metadata={
286296
'name': 'greenShapes',
287297
'type': 'Element',
288298
},
289299
)
290-
valid_colors: ColorList | None = field(
300+
valid_colors: Optional[ColorList] = field(
291301
default=None,
292302
metadata={
293303
'name': 'validColors',
@@ -301,14 +311,14 @@ class Player:
301311
class Meta:
302312
name = 'player'
303313

304-
name: str | None = field(
314+
name: Optional[str] = field(
305315
default=None,
306316
metadata={
307317
'type': 'Attribute',
308318
'required': True,
309319
},
310320
)
311-
team: str | None = field(
321+
team: Optional[str] = field(
312322
default=None,
313323
metadata={
314324
'type': 'Attribute',
@@ -829,11 +839,11 @@ class Meta:
829839
'required': True,
830840
},
831841
)
832-
piece: Piece | None = field(
842+
piece: Optional[Piece] = field(
833843
default=None,
834844
metadata={'type': 'Element'},
835845
)
836-
color: str | None = field(
846+
color: Optional[str] = field(
837847
default=None,
838848
metadata={'type': 'Element'},
839849
)
@@ -895,21 +905,21 @@ class Meta:
895905
},
896906
)
897907
# Nur für welcomeMessage: color="ONE"/"TWO" (TeamEnum), als Attribut.
898-
color: str | None = field(
908+
color: Optional[str] = field(
899909
default=None,
900910
metadata={
901911
'type': 'Attribute',
902912
},
903913
)
904914
# Für ausgehenden SetMove.
905-
piece: Piece | None = field(
915+
piece: Optional[Piece] = field(
906916
default=None,
907917
metadata={'type': 'Element'},
908918
)
909919
# Für ausgehenden SkipMove: eigenes Feld, da 'color' oben schon als
910920
# Attribut für welcomeMessage belegt ist. SkipMove.color ist ein
911921
# Kindelement (kein @XStreamAsAttribute in Kotlin).
912-
skip_color: str | None = field(
922+
skip_color: Optional[str] = field(
913923
default=None,
914924
metadata={
915925
'name': 'color',

0 commit comments

Comments
 (0)