From 946196f2eb9c08e92acd407182c64cc9ab59b89b Mon Sep 17 00:00:00 2001 From: "mattlamb227@gmail.com" Date: Fri, 14 Aug 2026 13:59:56 -0400 Subject: [PATCH] Initial commit --- .../core/__pycache__/bots.cpython-312.pyc | Bin 8190 -> 8312 bytes src/blokus_gym/core/blokus_cython.c | 11217 +++++++++------- ...kus_cython.cpython-312-x86_64-linux-gnu.so | Bin 513456 -> 520824 bytes ...kus_cython.cpython-312-x86_64-linux-gnu.so | Bin 503280 -> 520824 bytes .../blokus_cython.o | Bin 740008 -> 768592 bytes 5 files changed, 6350 insertions(+), 4867 deletions(-) diff --git a/src/blokus_gym/core/__pycache__/bots.cpython-312.pyc b/src/blokus_gym/core/__pycache__/bots.cpython-312.pyc index 7cf3bbd9b905cf75eb21964103cbf9b565742971..32a9a5d80eab70e356ef3fbfa336daf29c4eae16 100644 GIT binary patch delta 482 zcmexo|HFarG%qg~0}wcL*JZhjP2`hcJU3C@kcpFFVuWHn4-N7GXPkte1z$iFbQr^f-HYq1RyRj>zvz|-x`y<`+|A4^nRMt5^`Ia|WBE7{fs^Zbud7gUXCR5&%v4 BfbjqT delta 305 zcmez2@Xwy_G%qg~0}yCUD9-vMI+0I;an(e1!--Lf(OgUn?hGmHEet6fsa&g>L5dg{ zqPW4LoIp`7BvBr)C^t})2T7C{EXoTM)){}qouVZxFyh30lBV*d;Afai@j9HssihgBb?AUx?>NgYP z;?1{Z^%)rxCUeUhF!E2fkvEz=UtWxb4QR*YE%L@(ML-54$ik4xALT_@pE78FVVlga LV8>b{3={ #include @@ -1406,9 +1406,9 @@ static const char *__pyx_filename; /* #### Code section: filename_table ### */ static const char* const __pyx_f[] = { - "blokus_gym/core/blokus_cython.pyx", + "blokus_cython.pyx", "", - "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd", + "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd", "cpython/type.pxd", }; /* #### Code section: utility_code_proto_before_types ### */ @@ -1661,7 +1661,7 @@ typedef struct { /* #### Code section: numeric_typedefs ### */ -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":743 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":743 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -1670,7 +1670,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":744 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":744 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -1679,7 +1679,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":745 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":745 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -1688,7 +1688,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":746 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":746 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -1697,7 +1697,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":748 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":748 * ctypedef npy_int64 int64_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -1706,7 +1706,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":749 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":749 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -1715,7 +1715,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":750 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":750 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -1724,7 +1724,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":751 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":751 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -1733,7 +1733,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":753 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":753 * ctypedef npy_uint64 uint64_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -1742,7 +1742,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":754 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":754 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -1751,7 +1751,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":761 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":761 * ctypedef double complex complex128_t * * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -1760,7 +1760,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762 * * ctypedef npy_longlong longlong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -1769,7 +1769,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":764 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":764 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -1778,7 +1778,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":765 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":765 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -1787,7 +1787,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":767 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":767 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -1796,7 +1796,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -1805,7 +1805,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -1853,49 +1853,49 @@ static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_fro /* #### Code section: type_declarations ### */ /*--- Type declarations ---*/ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board; -struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move; -struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation; -struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece; -struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet; -struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState; -struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame; -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr; -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr; -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr; -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr; -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr; -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr; -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr; +struct __pyx_obj_13blokus_cython_Board; +struct __pyx_obj_13blokus_cython_Move; +struct __pyx_obj_13blokus_cython_PieceOrientation; +struct __pyx_obj_13blokus_cython_Piece; +struct __pyx_obj_13blokus_cython_PieceSet; +struct __pyx_obj_13blokus_cython_PlayerState; +struct __pyx_obj_13blokus_cython_BlokusGame; +struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr; +struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr; +struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr; +struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr; +struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr; +struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr; +struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr; struct __pyx_array_obj; struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "blokus_gym/core/blokus_cython.pyx":17 +/* "blokus_cython.pyx":17 * # ------------------------------------------------------------------- * * cdef class Board: # <<<<<<<<<<<<<< * """Cython-optimized Board class with static typing. * */ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board { +struct __pyx_obj_13blokus_cython_Board { PyObject_HEAD - struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_Board *__pyx_vtab; + struct __pyx_vtabstruct_13blokus_cython_Board *__pyx_vtab; int size; __Pyx_memviewslice grid; PyObject *_occupied_cache; }; -/* "blokus_gym/core/blokus_cython.pyx":171 +/* "blokus_cython.pyx":171 * # ------------------------------------------------------------------- * * cdef class Move: # <<<<<<<<<<<<<< * """A move in the game (piece, orientation, position).""" * */ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move { +struct __pyx_obj_13blokus_cython_Move { PyObject_HEAD int piece_id; int orientation_id; @@ -1904,14 +1904,14 @@ struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move { }; -/* "blokus_gym/core/blokus_cython.pyx":189 +/* "blokus_cython.pyx":189 * * * cdef class PieceOrientation: # <<<<<<<<<<<<<< * """A piece in a specific orientation (before placement on board).""" * */ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation { +struct __pyx_obj_13blokus_cython_PieceOrientation { PyObject_HEAD int piece_id; int orientation_id; @@ -1920,28 +1920,28 @@ struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation { }; -/* "blokus_gym/core/blokus_cython.pyx":204 +/* "blokus_cython.pyx":204 * * * cdef class Piece: # <<<<<<<<<<<<<< * """A polyomino piece defined by a set of (x, y) coordinates.""" * */ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece { +struct __pyx_obj_13blokus_cython_Piece { PyObject_HEAD PyObject *name; PyObject *squares; }; -/* "blokus_gym/core/blokus_cython.pyx":219 +/* "blokus_cython.pyx":219 * * * cdef class PieceSet: # <<<<<<<<<<<<<< * """A collection of pieces with pre-computed orientations.""" * */ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet { +struct __pyx_obj_13blokus_cython_PieceSet { PyObject_HEAD PyObject *pieces; PyObject *piece_names; @@ -1951,14 +1951,14 @@ struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet { }; -/* "blokus_gym/core/blokus_cython.pyx":373 +/* "blokus_cython.pyx":378 * # ------------------------------------------------------------------- * * cdef class PlayerState: # <<<<<<<<<<<<<< * """State for a single player.""" * */ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState { +struct __pyx_obj_13blokus_cython_PlayerState { PyObject_HEAD int idx; PyObject *available_pieces; @@ -1969,18 +1969,18 @@ struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState { }; -/* "blokus_gym/core/blokus_cython.pyx":396 +/* "blokus_cython.pyx":401 * # ------------------------------------------------------------------- * * cdef class BlokusGame: # <<<<<<<<<<<<<< * """Cython-optimized Blokus game engine.""" * */ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame { +struct __pyx_obj_13blokus_cython_BlokusGame { PyObject_HEAD - struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_vtab; + struct __pyx_vtabstruct_13blokus_cython_BlokusGame *__pyx_vtab; int board_size; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *piece_set; + struct __pyx_obj_13blokus_cython_PieceSet *piece_set; int num_players; int corner_rule; PyObject *board; @@ -1995,14 +1995,14 @@ struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame { }; -/* "blokus_gym/core/blokus_cython.pyx":241 +/* "blokus_cython.pyx":241 * self.orientations.append(orients) * * self.num_orientations = sum(len(o) for o in self.orientations) # <<<<<<<<<<<<<< * * @property */ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr { +struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr { PyObject_HEAD PyObject *__pyx_genexpr_arg_0; PyObject *__pyx_v_o; @@ -2011,14 +2011,14 @@ struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr }; -/* "blokus_gym/core/blokus_cython.pyx":351 +/* "blokus_cython.pyx":356 * cdef list normalize_squares_cython(list squares): * """Normalize squares to start at (0, 0).""" * cdef int min_x = min(x for x, _ in squares) # <<<<<<<<<<<<<< * cdef int min_y = min(y for _, y in squares) * */ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr { +struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr { PyObject_HEAD PyObject *__pyx_genexpr_arg_0; PyObject *__pyx_v__; @@ -2028,14 +2028,14 @@ struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr }; -/* "blokus_gym/core/blokus_cython.pyx":352 +/* "blokus_cython.pyx":357 * """Normalize squares to start at (0, 0).""" * cdef int min_x = min(x for x, _ in squares) * cdef int min_y = min(y for _, y in squares) # <<<<<<<<<<<<<< * * return [(x - min_x, y - min_y) for x, y in squares] */ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr { +struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr { PyObject_HEAD PyObject *__pyx_genexpr_arg_0; PyObject *__pyx_v__; @@ -2045,14 +2045,14 @@ struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr }; -/* "blokus_gym/core/blokus_cython.pyx":481 +/* "blokus_cython.pyx":486 * for orient_id, orient in enumerate(self.piece_set.get_orientations(piece_id)): * squares = orient.squares * max_x = max(x for x, _ in squares) # <<<<<<<<<<<<<< * max_y = max(y for _, y in squares) * */ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr { +struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr { PyObject_HEAD PyObject *__pyx_genexpr_arg_0; PyObject *__pyx_v__; @@ -2062,14 +2062,14 @@ struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr }; -/* "blokus_gym/core/blokus_cython.pyx":482 +/* "blokus_cython.pyx":487 * squares = orient.squares * max_x = max(x for x, _ in squares) * max_y = max(y for _, y in squares) # <<<<<<<<<<<<<< * * for px in range(self.board_size - max_x): */ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr { +struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr { PyObject_HEAD PyObject *__pyx_genexpr_arg_0; PyObject *__pyx_v__; @@ -2079,28 +2079,28 @@ struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr }; -/* "blokus_gym/core/blokus_cython.pyx":754 +/* "blokus_cython.pyx":767 * * # Game ends if all players can't move * if all(not p.can_move for p in self.players): # <<<<<<<<<<<<<< * self.game_over = True * elif all(p.has_started and not p.available_pieces for p in self.players): */ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr { +struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr { PyObject_HEAD PyObject *__pyx_genexpr_arg_0; PyObject *__pyx_v_p; }; -/* "blokus_gym/core/blokus_cython.pyx":756 +/* "blokus_cython.pyx":769 * if all(not p.can_move for p in self.players): * self.game_over = True * elif all(p.has_started and not p.available_pieces for p in self.players): # <<<<<<<<<<<<<< * # All pieces played * self.game_over = True */ -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr { +struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr { PyObject_HEAD PyObject *__pyx_genexpr_arg_0; PyObject *__pyx_v_p; @@ -2184,7 +2184,7 @@ struct __pyx_memoryviewslice_obj { -/* "blokus_gym/core/blokus_cython.pyx":17 +/* "blokus_cython.pyx":17 * # ------------------------------------------------------------------- * * cdef class Board: # <<<<<<<<<<<<<< @@ -2192,13 +2192,13 @@ struct __pyx_memoryviewslice_obj { * */ -struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_Board { - int (*is_cell_empty)(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *, int, int); +struct __pyx_vtabstruct_13blokus_cython_Board { + int (*is_cell_empty)(struct __pyx_obj_13blokus_cython_Board *, int, int); }; -static struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_Board *__pyx_vtabptr_10blokus_gym_4core_13blokus_cython_Board; +static struct __pyx_vtabstruct_13blokus_cython_Board *__pyx_vtabptr_13blokus_cython_Board; -/* "blokus_gym/core/blokus_cython.pyx":396 +/* "blokus_cython.pyx":401 * # ------------------------------------------------------------------- * * cdef class BlokusGame: # <<<<<<<<<<<<<< @@ -2206,15 +2206,17 @@ static struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_Board *__pyx_v * */ -struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame { - void (*_generate_action_space)(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *); - PyObject *(*_get_placed_squares)(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *); - PyObject *(*_get_placed_corners)(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *); - int (*valid_move)(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *, int, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *, int __pyx_skip_dispatch); - PyObject *(*get_valid_actions)(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *, int, int __pyx_skip_dispatch); - int (*has_valid_moves)(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *, int, int __pyx_skip_dispatch); +struct __pyx_vtabstruct_13blokus_cython_BlokusGame { + void (*_generate_action_space)(struct __pyx_obj_13blokus_cython_BlokusGame *); + PyObject *(*_get_placed_squares)(struct __pyx_obj_13blokus_cython_BlokusGame *, struct __pyx_obj_13blokus_cython_Move *); + PyObject *(*get_placed_squares)(struct __pyx_obj_13blokus_cython_BlokusGame *, struct __pyx_obj_13blokus_cython_Move *, int __pyx_skip_dispatch); + PyObject *(*_get_placed_corners)(struct __pyx_obj_13blokus_cython_BlokusGame *, struct __pyx_obj_13blokus_cython_Move *); + PyObject *(*get_placed_corners)(struct __pyx_obj_13blokus_cython_BlokusGame *, struct __pyx_obj_13blokus_cython_Move *, int __pyx_skip_dispatch); + int (*valid_move)(struct __pyx_obj_13blokus_cython_BlokusGame *, int, struct __pyx_obj_13blokus_cython_Move *, int __pyx_skip_dispatch); + PyObject *(*get_valid_actions)(struct __pyx_obj_13blokus_cython_BlokusGame *, int, int __pyx_skip_dispatch); + int (*has_valid_moves)(struct __pyx_obj_13blokus_cython_BlokusGame *, int, int __pyx_skip_dispatch); }; -static struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_vtabptr_10blokus_gym_4core_13blokus_cython_BlokusGame; +static struct __pyx_vtabstruct_13blokus_cython_BlokusGame *__pyx_vtabptr_13blokus_cython_BlokusGame; /* "View.MemoryView":118 @@ -3798,13 +3800,15 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayObject *__pyx_v_self); /* proto*/ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject *__pyx_v_self); /* proto*/ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__pyx_v_self); /* proto*/ -static int __pyx_f_10blokus_gym_4core_13blokus_cython_5Board_is_cell_empty(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y); /* proto*/ -static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_action_space(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto*/ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_placed_squares(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move); /* proto*/ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_placed_corners(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move); /* proto*/ -static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move, int __pyx_skip_dispatch); /* proto*/ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_valid_actions(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, int __pyx_skip_dispatch); /* proto*/ -static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_moves(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, int __pyx_skip_dispatch); /* proto*/ +static int __pyx_f_13blokus_cython_5Board_is_cell_empty(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y); /* proto*/ +static void __pyx_f_13blokus_cython_10BlokusGame__generate_action_space(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto*/ +static PyObject *__pyx_f_13blokus_cython_10BlokusGame__get_placed_squares(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move); /* proto*/ +static PyObject *__pyx_f_13blokus_cython_10BlokusGame_get_placed_squares(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move, int __pyx_skip_dispatch); /* proto*/ +static PyObject *__pyx_f_13blokus_cython_10BlokusGame__get_placed_corners(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move); /* proto*/ +static PyObject *__pyx_f_13blokus_cython_10BlokusGame_get_placed_corners(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move, int __pyx_skip_dispatch); /* proto*/ +static int __pyx_f_13blokus_cython_10BlokusGame_valid_move(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move, int __pyx_skip_dispatch); /* proto*/ +static PyObject *__pyx_f_13blokus_cython_10BlokusGame_get_valid_actions(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, int __pyx_skip_dispatch); /* proto*/ +static int __pyx_f_13blokus_cython_10BlokusGame_has_valid_moves(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, int __pyx_skip_dispatch); /* proto*/ /* Module declarations from "cython.view" */ @@ -3830,50 +3834,50 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov /* Module declarations from "numpy" */ -/* Module declarations from "blokus_gym.core.blokus_cython" */ -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__I1_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__I2_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__I3_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__V3_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__I4_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__L4_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__T4_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__S4_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__O4_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__I5_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__L5_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__Y5_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__N5_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__T5_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__U5_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__V5_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__W5_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__Z5_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__F5_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__X5_squares = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython__P5_squares = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__I1 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__I2 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__I3 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__V3 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__I4 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__L4 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__T4 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__S4 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__O4 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__I5 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__L5 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__Y5 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__N5 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__T5 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__U5 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__V5 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__W5 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__Z5 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__F5 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__X5 = 0; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_10blokus_gym_4core_13blokus_cython__P5 = 0; -static PyObject *__pyx_v_10blokus_gym_4core_13blokus_cython_STANDARD_PIECES = 0; +/* Module declarations from "blokus_cython" */ +static PyObject *__pyx_v_13blokus_cython__I1_squares = 0; +static PyObject *__pyx_v_13blokus_cython__I2_squares = 0; +static PyObject *__pyx_v_13blokus_cython__I3_squares = 0; +static PyObject *__pyx_v_13blokus_cython__V3_squares = 0; +static PyObject *__pyx_v_13blokus_cython__I4_squares = 0; +static PyObject *__pyx_v_13blokus_cython__L4_squares = 0; +static PyObject *__pyx_v_13blokus_cython__T4_squares = 0; +static PyObject *__pyx_v_13blokus_cython__S4_squares = 0; +static PyObject *__pyx_v_13blokus_cython__O4_squares = 0; +static PyObject *__pyx_v_13blokus_cython__I5_squares = 0; +static PyObject *__pyx_v_13blokus_cython__L5_squares = 0; +static PyObject *__pyx_v_13blokus_cython__Y5_squares = 0; +static PyObject *__pyx_v_13blokus_cython__N5_squares = 0; +static PyObject *__pyx_v_13blokus_cython__T5_squares = 0; +static PyObject *__pyx_v_13blokus_cython__U5_squares = 0; +static PyObject *__pyx_v_13blokus_cython__V5_squares = 0; +static PyObject *__pyx_v_13blokus_cython__W5_squares = 0; +static PyObject *__pyx_v_13blokus_cython__Z5_squares = 0; +static PyObject *__pyx_v_13blokus_cython__F5_squares = 0; +static PyObject *__pyx_v_13blokus_cython__X5_squares = 0; +static PyObject *__pyx_v_13blokus_cython__P5_squares = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__I1 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__I2 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__I3 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__V3 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__I4 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__L4 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__T4 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__S4 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__O4 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__I5 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__L5 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__Y5 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__N5 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__T5 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__U5 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__V5 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__W5 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__Z5 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__F5 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__X5 = 0; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_v_13blokus_cython__P5 = 0; +static PyObject *__pyx_v_13blokus_cython_STANDARD_PIECES = 0; static PyObject *__pyx_collections_abc_Sequence = 0; static PyObject *generic = 0; static PyObject *strided = 0; @@ -3882,17 +3886,17 @@ static PyObject *contiguous = 0; static PyObject *indirect_contiguous = 0; static int __pyx_memoryview_thread_locks_used; static PyThread_type_lock __pyx_memoryview_thread_locks[8]; -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_generate_orientations_cython(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *); /*proto*/ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cython(PyObject *, int); /*proto*/ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cython(PyObject *); /*proto*/ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cython(PyObject *); /*proto*/ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Board__set_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *, PyObject *); /*proto*/ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Move__set_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *, PyObject *); /*proto*/ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_PieceOrientation__set_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *, PyObject *); /*proto*/ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Piece__set_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *, PyObject *); /*proto*/ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_PieceSet__set_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *, PyObject *); /*proto*/ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_PlayerState__set_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *, PyObject *); /*proto*/ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_BlokusGame__set_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *, PyObject *); /*proto*/ +static PyObject *__pyx_f_13blokus_cython_generate_orientations_cython(struct __pyx_obj_13blokus_cython_Piece *); /*proto*/ +static PyObject *__pyx_f_13blokus_cython_rotate_squares_cython(PyObject *, int); /*proto*/ +static PyObject *__pyx_f_13blokus_cython_normalize_squares_cython(PyObject *); /*proto*/ +static PyObject *__pyx_f_13blokus_cython_compute_corners_cython(PyObject *); /*proto*/ +static PyObject *__pyx_f_13blokus_cython___pyx_unpickle_Board__set_state(struct __pyx_obj_13blokus_cython_Board *, PyObject *); /*proto*/ +static PyObject *__pyx_f_13blokus_cython___pyx_unpickle_Move__set_state(struct __pyx_obj_13blokus_cython_Move *, PyObject *); /*proto*/ +static PyObject *__pyx_f_13blokus_cython___pyx_unpickle_PieceOrientation__set_state(struct __pyx_obj_13blokus_cython_PieceOrientation *, PyObject *); /*proto*/ +static PyObject *__pyx_f_13blokus_cython___pyx_unpickle_Piece__set_state(struct __pyx_obj_13blokus_cython_Piece *, PyObject *); /*proto*/ +static PyObject *__pyx_f_13blokus_cython___pyx_unpickle_PieceSet__set_state(struct __pyx_obj_13blokus_cython_PieceSet *, PyObject *); /*proto*/ +static PyObject *__pyx_f_13blokus_cython___pyx_unpickle_PlayerState__set_state(struct __pyx_obj_13blokus_cython_PlayerState *, PyObject *); /*proto*/ +static PyObject *__pyx_f_13blokus_cython___pyx_unpickle_BlokusGame__set_state(struct __pyx_obj_13blokus_cython_BlokusGame *, PyObject *); /*proto*/ static int __pyx_array_allocate_buffer(struct __pyx_array_obj *); /*proto*/ static struct __pyx_array_obj *__pyx_array_new(PyObject *, Py_ssize_t, char *, char const *, char *); /*proto*/ static PyObject *__pyx_memoryview_new(PyObject *, int, int, __Pyx_TypeInfo const *); /*proto*/ @@ -3929,11 +3933,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *, /* #### Code section: typeinfo ### */ static const __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t = { "int8_t", NULL, sizeof(__pyx_t_5numpy_int8_t), { 0 }, 0, __PYX_IS_UNSIGNED(__pyx_t_5numpy_int8_t) ? 'U' : 'I', __PYX_IS_UNSIGNED(__pyx_t_5numpy_int8_t), 0 }; /* #### Code section: before_global_var ### */ -#define __Pyx_MODULE_NAME "blokus_gym.core.blokus_cython" -extern int __pyx_module_is_main_blokus_gym__core__blokus_cython; -int __pyx_module_is_main_blokus_gym__core__blokus_cython = 0; +#define __Pyx_MODULE_NAME "blokus_cython" +extern int __pyx_module_is_main_blokus_cython; +int __pyx_module_is_main_blokus_cython = 0; -/* Implementation of "blokus_gym.core.blokus_cython" */ +/* Implementation of "blokus_cython" */ /* #### Code section: global_var ### */ static PyObject *__pyx_builtin_enumerate; static PyObject *__pyx_builtin_sum; @@ -3995,178 +3999,184 @@ static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewsl static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self); /* proto */ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUSED struct __pyx_memoryviewslice_obj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board___init__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_size); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx, PyObject *__pyx_v_squares); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4clear(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_6is_empty(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_8in_bounds(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overlap(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_squares); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_12get_cell(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player_squares(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_16get_player_occupied(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player_corners(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupied(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4size___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4size_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4grid___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4grid_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_26__reduce_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_28__setstate_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move___init__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self, int __pyx_v_piece_id, int __pyx_v_orientation_id, int __pyx_v_x, int __pyx_v_y); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_2__repr__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_8piece_id___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_8piece_id_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_14orientation_id___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_14orientation_id_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1x___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1x_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1y___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1y_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_4__reduce_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_6__setstate_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation___init__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self, int __pyx_v_piece_id, int __pyx_v_orientation_id, PyObject *__pyx_v_squares, PyObject *__pyx_v_corners); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_8piece_id___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_8piece_id_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_14orientation_id___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_14orientation_id_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_2__reduce_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_4__setstate_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece___init__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_squares); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4size___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4name___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4name_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4name_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_7squares___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_7squares_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_7squares_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_2__reduce_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4__setstate_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_8__init___genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_pieces_list); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10num_pieces___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_2get_orientations(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, int __pyx_v_piece_id); /* proto */ -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_4get_piece(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, int __pyx_v_piece_id); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6get_piece_id(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_name); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_orientations___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_orientations_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_8__reduce_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10__setstate_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState___init__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_5score___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_5score_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_11has_started___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_11has_started_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_move___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_move_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_2__reduce_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_4__setstate_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_board_size, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_pieces, int __pyx_v_num_players, int __pyx_v_corner_rule); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_actions___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_2get_move(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_action); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_4get_action(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_8valid_move(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10get_valid_actions(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_12has_valid_moves(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14apply_move(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play_move(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, int __pyx_v_action); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next_player(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_check_game_over(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22get_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_24copy(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10board_size___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10board_size_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_players___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_players_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corner_rule___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corner_rule_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14current_player___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14current_player_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6rounds___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6rounds_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_over___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_over_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_26__reduce_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_28__setstate_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Board(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_2__pyx_unpickle_Move(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4__pyx_unpickle_PieceOrientation(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_6__pyx_unpickle_Piece(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8__pyx_unpickle_PieceSet(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10__pyx_unpickle_PlayerState(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_12__pyx_unpickle_BlokusGame(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_Board(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_Move(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_PieceOrientation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_Piece(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_PieceSet(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_PlayerState(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_BlokusGame(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static int __pyx_pf_13blokus_cython_5Board___init__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_size); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_2place(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx, PyObject *__pyx_v_squares); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_4clear(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_6is_empty(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_8in_bounds(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_10has_overlap(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_squares); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_12get_cell(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_14get_player_squares(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_16get_player_occupied(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_18get_player_corners(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_20get_occupied(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_22is_full(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_24coverage(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_4size___get__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_5Board_4size_2__set__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_4grid___get__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_5Board_4grid_2__set__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_15_occupied_cache___get__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_5Board_15_occupied_cache_2__set__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_5Board_15_occupied_cache_4__del__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_26__reduce_cython__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Board_28__setstate_cython__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_13blokus_cython_4Move___init__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self, int __pyx_v_piece_id, int __pyx_v_orientation_id, int __pyx_v_x, int __pyx_v_y); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_4Move_2__repr__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_4Move_8piece_id___get__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_4Move_8piece_id_2__set__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_4Move_14orientation_id___get__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_4Move_14orientation_id_2__set__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_4Move_1x___get__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_4Move_1x_2__set__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_4Move_1y___get__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_4Move_1y_2__set__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_4Move_4__reduce_cython__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_4Move_6__setstate_cython__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_13blokus_cython_16PieceOrientation___init__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self, int __pyx_v_piece_id, int __pyx_v_orientation_id, PyObject *__pyx_v_squares, PyObject *__pyx_v_corners); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_16PieceOrientation_8piece_id___get__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_16PieceOrientation_8piece_id_2__set__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_16PieceOrientation_14orientation_id___get__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_16PieceOrientation_14orientation_id_2__set__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_16PieceOrientation_7squares___get__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_16PieceOrientation_7squares_2__set__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_16PieceOrientation_7squares_4__del__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_16PieceOrientation_7corners___get__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_16PieceOrientation_7corners_2__set__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_16PieceOrientation_7corners_4__del__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_16PieceOrientation_2__reduce_cython__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_16PieceOrientation_4__setstate_cython__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_13blokus_cython_5Piece___init__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_squares); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Piece_4size___get__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Piece_4name___get__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_5Piece_4name_2__set__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_5Piece_4name_4__del__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Piece_7squares___get__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_5Piece_7squares_2__set__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_5Piece_7squares_4__del__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Piece_2__reduce_cython__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_5Piece_4__setstate_cython__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_8__init___genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ +static int __pyx_pf_13blokus_cython_8PieceSet___init__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_pieces_list); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_10num_pieces___get__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_2get_orientations(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, int __pyx_v_piece_id); /* proto */ +static struct __pyx_obj_13blokus_cython_Piece *__pyx_pf_13blokus_cython_8PieceSet_4get_piece(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, int __pyx_v_piece_id); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_6get_piece_id(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_name); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_6pieces___get__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_8PieceSet_6pieces_2__set__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_8PieceSet_6pieces_4__del__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_11piece_names___get__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_8PieceSet_11piece_names_2__set__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_8PieceSet_11piece_names_4__del__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_12piece_id_map___get__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_8PieceSet_12piece_id_map_2__set__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_8PieceSet_12piece_id_map_4__del__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_12orientations___get__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_8PieceSet_12orientations_2__set__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_8PieceSet_12orientations_4__del__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_16num_orientations___get__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_8PieceSet_16num_orientations_2__set__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_8__reduce_cython__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_10__setstate_cython__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_get_standard_pieces(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_24normalize_squares_cython_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_24normalize_squares_cython_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ +static int __pyx_pf_13blokus_cython_11PlayerState___init__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_3idx___get__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_11PlayerState_3idx_2__set__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_16available_pieces___get__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_11PlayerState_16available_pieces_2__set__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_11PlayerState_16available_pieces_4__del__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_7corners___get__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_11PlayerState_7corners_2__set__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_11PlayerState_7corners_4__del__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_5score___get__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_11PlayerState_5score_2__set__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_11has_started___get__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_11PlayerState_11has_started_2__set__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_8can_move___get__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_11PlayerState_8can_move_2__set__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_2__reduce_cython__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_4__setstate_cython__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame___init__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_board_size, struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_pieces, int __pyx_v_num_players, int __pyx_v_corner_rule); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_22_generate_action_space_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_22_generate_action_space_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_11num_actions___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static struct __pyx_obj_13blokus_cython_Move *__pyx_pf_13blokus_cython_10BlokusGame_2get_move(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_action); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_4get_action(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_6reset(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_8get_placed_squares(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_10get_placed_corners(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_12valid_move(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_14get_valid_actions(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_16has_valid_moves(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_18apply_move(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_20play_move(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, int __pyx_v_action); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_22next_player(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_16_check_game_over_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_16_check_game_over_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_24_check_game_over(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_26is_game_over(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_28get_scores(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_30get_winners(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_32get_state(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_pf_13blokus_cython_10BlokusGame_34copy(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_10board_size___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_10board_size_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_9piece_set___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_9piece_set_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_9piece_set_4__del__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_11num_players___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_11num_players_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_11corner_rule___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_11corner_rule_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_5board___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_5board_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_5board_4__del__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_7players___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_7players_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_7players_4__del__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_14current_player___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_14current_player_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_6rounds___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_6rounds_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_9game_over___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_9game_over_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_13_action_moves___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_13_action_moves_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_13_action_moves_4__del__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_15_move_to_action___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_15_move_to_action_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_15_move_to_action_4__del__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_17_actions_by_piece___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_17_actions_by_piece_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_17_actions_by_piece_4__del__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_17_starting_corners___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_17_starting_corners_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value); /* proto */ +static int __pyx_pf_13blokus_cython_10BlokusGame_17_starting_corners_4__del__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_36__reduce_cython__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_38__setstate_cython__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_2__pyx_unpickle_Board(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_4__pyx_unpickle_Move(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_6__pyx_unpickle_PieceOrientation(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_8__pyx_unpickle_Piece(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_10__pyx_unpickle_PieceSet(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_12__pyx_unpickle_PlayerState(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_13blokus_cython_14__pyx_unpickle_BlokusGame(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_tp_new_13blokus_cython_Board(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13blokus_cython_Move(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13blokus_cython_PieceOrientation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13blokus_cython_Piece(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13blokus_cython_PieceSet(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13blokus_cython_PlayerState(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13blokus_cython_BlokusGame(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13blokus_cython___pyx_scope_struct__genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13blokus_cython___pyx_scope_struct_1_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13blokus_cython___pyx_scope_struct_2_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13blokus_cython___pyx_scope_struct_3_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13blokus_cython___pyx_scope_struct_4_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13blokus_cython___pyx_scope_struct_5_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13blokus_cython___pyx_scope_struct_6_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ @@ -4207,38 +4217,38 @@ typedef struct { PyTypeObject *__pyx_ptype_5numpy_flexible; PyTypeObject *__pyx_ptype_5numpy_character; PyTypeObject *__pyx_ptype_5numpy_ufunc; - PyObject *__pyx_type_10blokus_gym_4core_13blokus_cython_Board; - PyObject *__pyx_type_10blokus_gym_4core_13blokus_cython_Move; - PyObject *__pyx_type_10blokus_gym_4core_13blokus_cython_PieceOrientation; - PyObject *__pyx_type_10blokus_gym_4core_13blokus_cython_Piece; - PyObject *__pyx_type_10blokus_gym_4core_13blokus_cython_PieceSet; - PyObject *__pyx_type_10blokus_gym_4core_13blokus_cython_PlayerState; - PyObject *__pyx_type_10blokus_gym_4core_13blokus_cython_BlokusGame; - PyObject *__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr; - PyObject *__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr; - PyObject *__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr; - PyObject *__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr; - PyObject *__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr; - PyObject *__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr; - PyObject *__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr; + PyObject *__pyx_type_13blokus_cython_Board; + PyObject *__pyx_type_13blokus_cython_Move; + PyObject *__pyx_type_13blokus_cython_PieceOrientation; + PyObject *__pyx_type_13blokus_cython_Piece; + PyObject *__pyx_type_13blokus_cython_PieceSet; + PyObject *__pyx_type_13blokus_cython_PlayerState; + PyObject *__pyx_type_13blokus_cython_BlokusGame; + PyObject *__pyx_type_13blokus_cython___pyx_scope_struct__genexpr; + PyObject *__pyx_type_13blokus_cython___pyx_scope_struct_1_genexpr; + PyObject *__pyx_type_13blokus_cython___pyx_scope_struct_2_genexpr; + PyObject *__pyx_type_13blokus_cython___pyx_scope_struct_3_genexpr; + PyObject *__pyx_type_13blokus_cython___pyx_scope_struct_4_genexpr; + PyObject *__pyx_type_13blokus_cython___pyx_scope_struct_5_genexpr; + PyObject *__pyx_type_13blokus_cython___pyx_scope_struct_6_genexpr; PyObject *__pyx_type___pyx_array; PyObject *__pyx_type___pyx_MemviewEnum; PyObject *__pyx_type___pyx_memoryview; PyObject *__pyx_type___pyx_memoryviewslice; - PyTypeObject *__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board; - PyTypeObject *__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move; - PyTypeObject *__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation; - PyTypeObject *__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece; - PyTypeObject *__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet; - PyTypeObject *__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState; - PyTypeObject *__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame; - PyTypeObject *__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr; - PyTypeObject *__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr; - PyTypeObject *__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr; - PyTypeObject *__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr; - PyTypeObject *__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr; - PyTypeObject *__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr; - PyTypeObject *__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr; + PyTypeObject *__pyx_ptype_13blokus_cython_Board; + PyTypeObject *__pyx_ptype_13blokus_cython_Move; + PyTypeObject *__pyx_ptype_13blokus_cython_PieceOrientation; + PyTypeObject *__pyx_ptype_13blokus_cython_Piece; + PyTypeObject *__pyx_ptype_13blokus_cython_PieceSet; + PyTypeObject *__pyx_ptype_13blokus_cython_PlayerState; + PyTypeObject *__pyx_ptype_13blokus_cython_BlokusGame; + PyTypeObject *__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr; + PyTypeObject *__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr; + PyTypeObject *__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr; + PyTypeObject *__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr; + PyTypeObject *__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr; + PyTypeObject *__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr; + PyTypeObject *__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr; PyTypeObject *__pyx_array_type; PyTypeObject *__pyx_MemviewEnum_type; PyTypeObject *__pyx_memoryview_type; @@ -4248,44 +4258,44 @@ typedef struct { __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values; PyObject *__pyx_slice[1]; PyObject *__pyx_tuple[41]; - PyObject *__pyx_codeobj_tab[55]; - PyObject *__pyx_string_tab[348]; + PyObject *__pyx_codeobj_tab[61]; + PyObject *__pyx_string_tab[370]; PyObject *__pyx_number_tab[14]; /* #### Code section: module_state_contents ### */ #if CYTHON_USE_FREELISTS -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr *__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr[8]; -int __pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr; +struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr *__pyx_freelist_13blokus_cython___pyx_scope_struct__genexpr[8]; +int __pyx_freecount_13blokus_cython___pyx_scope_struct__genexpr; #endif #if CYTHON_USE_FREELISTS -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr *__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr[8]; -int __pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr; +struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr *__pyx_freelist_13blokus_cython___pyx_scope_struct_1_genexpr[8]; +int __pyx_freecount_13blokus_cython___pyx_scope_struct_1_genexpr; #endif #if CYTHON_USE_FREELISTS -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr *__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr[8]; -int __pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr; +struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr *__pyx_freelist_13blokus_cython___pyx_scope_struct_2_genexpr[8]; +int __pyx_freecount_13blokus_cython___pyx_scope_struct_2_genexpr; #endif #if CYTHON_USE_FREELISTS -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr *__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr[8]; -int __pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr; +struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr *__pyx_freelist_13blokus_cython___pyx_scope_struct_3_genexpr[8]; +int __pyx_freecount_13blokus_cython___pyx_scope_struct_3_genexpr; #endif #if CYTHON_USE_FREELISTS -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr *__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr[8]; -int __pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr; +struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr *__pyx_freelist_13blokus_cython___pyx_scope_struct_4_genexpr[8]; +int __pyx_freecount_13blokus_cython___pyx_scope_struct_4_genexpr; #endif #if CYTHON_USE_FREELISTS -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr *__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr[8]; -int __pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr; +struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr *__pyx_freelist_13blokus_cython___pyx_scope_struct_5_genexpr[8]; +int __pyx_freecount_13blokus_cython___pyx_scope_struct_5_genexpr; #endif #if CYTHON_USE_FREELISTS -struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr *__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr[8]; -int __pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr; +struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr *__pyx_freelist_13blokus_cython___pyx_scope_struct_6_genexpr[8]; +int __pyx_freecount_13blokus_cython___pyx_scope_struct_6_genexpr; #endif /* CommonTypesMetaclass.module_state_decls */ PyTypeObject *__pyx_CommonTypesMetaclassType; @@ -4361,7 +4371,7 @@ static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_stati #define __pyx_kp_u_add_note __pyx_string_tab[24] #define __pyx_kp_u_and __pyx_string_tab[25] #define __pyx_kp_u_at_0x __pyx_string_tab[26] -#define __pyx_kp_u_blokus_gym_core_blokus_cython_py __pyx_string_tab[27] +#define __pyx_kp_u_blokus_cython_pyx __pyx_string_tab[27] #define __pyx_kp_u_collections_abc __pyx_string_tab[28] #define __pyx_kp_u_contiguous_and_direct __pyx_string_tab[29] #define __pyx_kp_u_contiguous_and_indirect __pyx_string_tab[30] @@ -4372,316 +4382,338 @@ static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_stati #define __pyx_kp_u_got_differing_extents_in_dimensi __pyx_string_tab[35] #define __pyx_kp_u_isenabled __pyx_string_tab[36] #define __pyx_kp_u_itemsize_0_for_cython_array __pyx_string_tab[37] -#define __pyx_kp_u_no_default___reduce___due_to_non __pyx_string_tab[38] -#define __pyx_kp_u_numpy__core_multiarray_failed_to __pyx_string_tab[39] -#define __pyx_kp_u_numpy__core_umath_failed_to_impo __pyx_string_tab[40] -#define __pyx_kp_u_object __pyx_string_tab[41] -#define __pyx_kp_u_orient __pyx_string_tab[42] -#define __pyx_kp_u_pos __pyx_string_tab[43] -#define __pyx_kp_u_strided_and_direct __pyx_string_tab[44] -#define __pyx_kp_u_strided_and_direct_or_indirect __pyx_string_tab[45] -#define __pyx_kp_u_strided_and_indirect __pyx_string_tab[46] -#define __pyx_kp_u_stringsource __pyx_string_tab[47] -#define __pyx_kp_u_unable_to_allocate_array_data __pyx_string_tab[48] -#define __pyx_kp_u_unable_to_allocate_shape_and_str __pyx_string_tab[49] -#define __pyx_n_u_ASCII __pyx_string_tab[50] -#define __pyx_n_u_BlokusGame __pyx_string_tab[51] -#define __pyx_n_u_BlokusGame___reduce_cython __pyx_string_tab[52] -#define __pyx_n_u_BlokusGame___setstate_cython __pyx_string_tab[53] -#define __pyx_n_u_BlokusGame__check_game_over __pyx_string_tab[54] -#define __pyx_n_u_BlokusGame__generate_action_spac __pyx_string_tab[55] -#define __pyx_n_u_BlokusGame_apply_move __pyx_string_tab[56] -#define __pyx_n_u_BlokusGame_copy __pyx_string_tab[57] -#define __pyx_n_u_BlokusGame_get_action __pyx_string_tab[58] -#define __pyx_n_u_BlokusGame_get_move __pyx_string_tab[59] -#define __pyx_n_u_BlokusGame_get_state __pyx_string_tab[60] -#define __pyx_n_u_BlokusGame_get_valid_actions __pyx_string_tab[61] -#define __pyx_n_u_BlokusGame_has_valid_moves __pyx_string_tab[62] -#define __pyx_n_u_BlokusGame_next_player __pyx_string_tab[63] -#define __pyx_n_u_BlokusGame_play_move __pyx_string_tab[64] -#define __pyx_n_u_BlokusGame_reset __pyx_string_tab[65] -#define __pyx_n_u_BlokusGame_valid_move __pyx_string_tab[66] -#define __pyx_n_u_Board __pyx_string_tab[67] -#define __pyx_n_u_Board___reduce_cython __pyx_string_tab[68] -#define __pyx_n_u_Board___setstate_cython __pyx_string_tab[69] -#define __pyx_n_u_Board_clear __pyx_string_tab[70] -#define __pyx_n_u_Board_coverage __pyx_string_tab[71] -#define __pyx_n_u_Board_get_cell __pyx_string_tab[72] -#define __pyx_n_u_Board_get_occupied __pyx_string_tab[73] -#define __pyx_n_u_Board_get_player_corners __pyx_string_tab[74] -#define __pyx_n_u_Board_get_player_occupied __pyx_string_tab[75] -#define __pyx_n_u_Board_get_player_squares __pyx_string_tab[76] -#define __pyx_n_u_Board_has_overlap __pyx_string_tab[77] -#define __pyx_n_u_Board_in_bounds __pyx_string_tab[78] -#define __pyx_n_u_Board_is_empty __pyx_string_tab[79] -#define __pyx_n_u_Board_is_full __pyx_string_tab[80] -#define __pyx_n_u_Board_place __pyx_string_tab[81] -#define __pyx_n_u_Ellipsis __pyx_string_tab[82] -#define __pyx_n_u_F5 __pyx_string_tab[83] -#define __pyx_n_u_I1 __pyx_string_tab[84] -#define __pyx_n_u_I2 __pyx_string_tab[85] -#define __pyx_n_u_I3 __pyx_string_tab[86] -#define __pyx_n_u_I4 __pyx_string_tab[87] -#define __pyx_n_u_I5 __pyx_string_tab[88] -#define __pyx_n_u_L4 __pyx_string_tab[89] -#define __pyx_n_u_L5 __pyx_string_tab[90] -#define __pyx_n_u_Move __pyx_string_tab[91] -#define __pyx_n_u_Move___reduce_cython __pyx_string_tab[92] -#define __pyx_n_u_Move___setstate_cython __pyx_string_tab[93] -#define __pyx_n_u_N5 __pyx_string_tab[94] -#define __pyx_n_u_None __pyx_string_tab[95] -#define __pyx_n_u_O4 __pyx_string_tab[96] -#define __pyx_n_u_P5 __pyx_string_tab[97] -#define __pyx_n_u_Piece __pyx_string_tab[98] -#define __pyx_n_u_PieceOrientation __pyx_string_tab[99] -#define __pyx_n_u_PieceOrientation___reduce_cython __pyx_string_tab[100] -#define __pyx_n_u_PieceOrientation___setstate_cyth __pyx_string_tab[101] -#define __pyx_n_u_PieceSet __pyx_string_tab[102] -#define __pyx_n_u_PieceSet___reduce_cython __pyx_string_tab[103] -#define __pyx_n_u_PieceSet___setstate_cython __pyx_string_tab[104] -#define __pyx_n_u_PieceSet_get_orientations __pyx_string_tab[105] -#define __pyx_n_u_PieceSet_get_piece __pyx_string_tab[106] -#define __pyx_n_u_PieceSet_get_piece_id __pyx_string_tab[107] -#define __pyx_n_u_Piece___reduce_cython __pyx_string_tab[108] -#define __pyx_n_u_Piece___setstate_cython __pyx_string_tab[109] -#define __pyx_n_u_PlayerState __pyx_string_tab[110] -#define __pyx_n_u_PlayerState___reduce_cython __pyx_string_tab[111] -#define __pyx_n_u_PlayerState___setstate_cython __pyx_string_tab[112] -#define __pyx_n_u_Pyx_PyDict_NextRef __pyx_string_tab[113] -#define __pyx_n_u_S4 __pyx_string_tab[114] -#define __pyx_n_u_Sequence __pyx_string_tab[115] -#define __pyx_n_u_T4 __pyx_string_tab[116] -#define __pyx_n_u_T5 __pyx_string_tab[117] -#define __pyx_n_u_U5 __pyx_string_tab[118] -#define __pyx_n_u_V3 __pyx_string_tab[119] -#define __pyx_n_u_V5 __pyx_string_tab[120] -#define __pyx_n_u_View_MemoryView __pyx_string_tab[121] -#define __pyx_n_u_W5 __pyx_string_tab[122] -#define __pyx_n_u_X5 __pyx_string_tab[123] -#define __pyx_n_u_Y5 __pyx_string_tab[124] -#define __pyx_n_u_Z5 __pyx_string_tab[125] -#define __pyx_n_u__10 __pyx_string_tab[126] -#define __pyx_n_u_abc __pyx_string_tab[127] -#define __pyx_n_u_action __pyx_string_tab[128] -#define __pyx_n_u_allocate_buffer __pyx_string_tab[129] -#define __pyx_n_u_annotate __pyx_string_tab[130] -#define __pyx_n_u_apply_move __pyx_string_tab[131] -#define __pyx_n_u_asyncio_coroutines __pyx_string_tab[132] -#define __pyx_n_u_available_pieces __pyx_string_tab[133] -#define __pyx_n_u_base __pyx_string_tab[134] -#define __pyx_n_u_bint __pyx_string_tab[135] -#define __pyx_n_u_blokus_gym_core_blokus_cython __pyx_string_tab[136] -#define __pyx_n_u_board_size __pyx_string_tab[137] -#define __pyx_n_u_bool __pyx_string_tab[138] -#define __pyx_n_u_c __pyx_string_tab[139] -#define __pyx_n_u_can_move __pyx_string_tab[140] -#define __pyx_n_u_check_game_over __pyx_string_tab[141] -#define __pyx_n_u_check_game_over_locals_genexpr __pyx_string_tab[142] -#define __pyx_n_u_class __pyx_string_tab[143] -#define __pyx_n_u_class_getitem __pyx_string_tab[144] -#define __pyx_n_u_clear __pyx_string_tab[145] -#define __pyx_n_u_cline_in_traceback __pyx_string_tab[146] -#define __pyx_n_u_close __pyx_string_tab[147] -#define __pyx_n_u_copy __pyx_string_tab[148] -#define __pyx_n_u_corner_rule __pyx_string_tab[149] -#define __pyx_n_u_corners __pyx_string_tab[150] -#define __pyx_n_u_count __pyx_string_tab[151] -#define __pyx_n_u_coverage __pyx_string_tab[152] -#define __pyx_n_u_current_player __pyx_string_tab[153] -#define __pyx_n_u_cx __pyx_string_tab[154] -#define __pyx_n_u_cy __pyx_string_tab[155] -#define __pyx_n_u_dict __pyx_string_tab[156] -#define __pyx_n_u_dict_2 __pyx_string_tab[157] -#define __pyx_n_u_dict_3 __pyx_string_tab[158] -#define __pyx_n_u_dtype __pyx_string_tab[159] -#define __pyx_n_u_dtype_is_object __pyx_string_tab[160] -#define __pyx_n_u_dx __pyx_string_tab[161] -#define __pyx_n_u_dy __pyx_string_tab[162] -#define __pyx_n_u_encode __pyx_string_tab[163] -#define __pyx_n_u_enumerate __pyx_string_tab[164] -#define __pyx_n_u_error __pyx_string_tab[165] -#define __pyx_n_u_fill __pyx_string_tab[166] -#define __pyx_n_u_flags __pyx_string_tab[167] -#define __pyx_n_u_float __pyx_string_tab[168] -#define __pyx_n_u_format __pyx_string_tab[169] -#define __pyx_n_u_fortran __pyx_string_tab[170] -#define __pyx_n_u_func __pyx_string_tab[171] -#define __pyx_n_u_game_over __pyx_string_tab[172] -#define __pyx_n_u_genexpr __pyx_string_tab[173] -#define __pyx_n_u_get_action __pyx_string_tab[174] -#define __pyx_n_u_get_cell __pyx_string_tab[175] -#define __pyx_n_u_get_move __pyx_string_tab[176] -#define __pyx_n_u_get_occupied __pyx_string_tab[177] -#define __pyx_n_u_get_orientations __pyx_string_tab[178] -#define __pyx_n_u_get_piece __pyx_string_tab[179] -#define __pyx_n_u_get_piece_id __pyx_string_tab[180] -#define __pyx_n_u_get_player_corners __pyx_string_tab[181] -#define __pyx_n_u_get_player_occupied __pyx_string_tab[182] -#define __pyx_n_u_get_player_squares __pyx_string_tab[183] -#define __pyx_n_u_get_state __pyx_string_tab[184] -#define __pyx_n_u_get_valid_actions __pyx_string_tab[185] -#define __pyx_n_u_getstate __pyx_string_tab[186] -#define __pyx_n_u_grid_view __pyx_string_tab[187] -#define __pyx_n_u_has_overlap __pyx_string_tab[188] -#define __pyx_n_u_has_started __pyx_string_tab[189] -#define __pyx_n_u_has_valid_moves __pyx_string_tab[190] -#define __pyx_n_u_i __pyx_string_tab[191] -#define __pyx_n_u_id __pyx_string_tab[192] -#define __pyx_n_u_idx __pyx_string_tab[193] -#define __pyx_n_u_import __pyx_string_tab[194] -#define __pyx_n_u_in_bounds __pyx_string_tab[195] -#define __pyx_n_u_index __pyx_string_tab[196] -#define __pyx_n_u_init___locals_genexpr __pyx_string_tab[197] -#define __pyx_n_u_int __pyx_string_tab[198] -#define __pyx_n_u_int8 __pyx_string_tab[199] -#define __pyx_n_u_is_coroutine __pyx_string_tab[200] -#define __pyx_n_u_is_empty __pyx_string_tab[201] -#define __pyx_n_u_is_full __pyx_string_tab[202] -#define __pyx_n_u_items __pyx_string_tab[203] -#define __pyx_n_u_itemsize __pyx_string_tab[204] -#define __pyx_n_u_list __pyx_string_tab[205] -#define __pyx_n_u_main __pyx_string_tab[206] -#define __pyx_n_u_max __pyx_string_tab[207] -#define __pyx_n_u_memview __pyx_string_tab[208] -#define __pyx_n_u_min __pyx_string_tab[209] -#define __pyx_n_u_mode __pyx_string_tab[210] -#define __pyx_n_u_module __pyx_string_tab[211] -#define __pyx_n_u_move __pyx_string_tab[212] -#define __pyx_n_u_name __pyx_string_tab[213] -#define __pyx_n_u_name_2 __pyx_string_tab[214] -#define __pyx_n_u_ndim __pyx_string_tab[215] -#define __pyx_n_u_new __pyx_string_tab[216] -#define __pyx_n_u_new_game __pyx_string_tab[217] -#define __pyx_n_u_next __pyx_string_tab[218] -#define __pyx_n_u_next_idx __pyx_string_tab[219] -#define __pyx_n_u_next_player __pyx_string_tab[220] -#define __pyx_n_u_normalize_squares_cython_locals __pyx_string_tab[221] -#define __pyx_n_u_np __pyx_string_tab[222] -#define __pyx_n_u_num_actions __pyx_string_tab[223] -#define __pyx_n_u_num_pieces __pyx_string_tab[224] -#define __pyx_n_u_num_players __pyx_string_tab[225] -#define __pyx_n_u_numpy __pyx_string_tab[226] -#define __pyx_n_u_o __pyx_string_tab[227] -#define __pyx_n_u_obj __pyx_string_tab[228] -#define __pyx_n_u_offset __pyx_string_tab[229] -#define __pyx_n_u_orientation_id __pyx_string_tab[230] -#define __pyx_n_u_p __pyx_string_tab[231] -#define __pyx_n_u_pack __pyx_string_tab[232] -#define __pyx_n_u_piece __pyx_string_tab[233] -#define __pyx_n_u_piece_id __pyx_string_tab[234] -#define __pyx_n_u_pieces __pyx_string_tab[235] -#define __pyx_n_u_pieces_list __pyx_string_tab[236] -#define __pyx_n_u_place __pyx_string_tab[237] -#define __pyx_n_u_placed_corners __pyx_string_tab[238] -#define __pyx_n_u_placed_squares __pyx_string_tab[239] -#define __pyx_n_u_play_move __pyx_string_tab[240] -#define __pyx_n_u_player __pyx_string_tab[241] -#define __pyx_n_u_player_idx __pyx_string_tab[242] -#define __pyx_n_u_player_squares __pyx_string_tab[243] -#define __pyx_n_u_players __pyx_string_tab[244] -#define __pyx_n_u_pop __pyx_string_tab[245] -#define __pyx_n_u_pyx_checksum __pyx_string_tab[246] -#define __pyx_n_u_pyx_result __pyx_string_tab[247] -#define __pyx_n_u_pyx_state __pyx_string_tab[248] -#define __pyx_n_u_pyx_type __pyx_string_tab[249] -#define __pyx_n_u_pyx_unpickle_BlokusGame __pyx_string_tab[250] -#define __pyx_n_u_pyx_unpickle_Board __pyx_string_tab[251] -#define __pyx_n_u_pyx_unpickle_Enum __pyx_string_tab[252] -#define __pyx_n_u_pyx_unpickle_Move __pyx_string_tab[253] -#define __pyx_n_u_pyx_unpickle_Piece __pyx_string_tab[254] -#define __pyx_n_u_pyx_unpickle_PieceOrientation __pyx_string_tab[255] -#define __pyx_n_u_pyx_unpickle_PieceSet __pyx_string_tab[256] -#define __pyx_n_u_pyx_unpickle_PlayerState __pyx_string_tab[257] -#define __pyx_n_u_pyx_vtable __pyx_string_tab[258] -#define __pyx_n_u_qualname __pyx_string_tab[259] -#define __pyx_n_u_reduce __pyx_string_tab[260] -#define __pyx_n_u_reduce_cython __pyx_string_tab[261] -#define __pyx_n_u_reduce_ex __pyx_string_tab[262] -#define __pyx_n_u_register __pyx_string_tab[263] -#define __pyx_n_u_reset __pyx_string_tab[264] -#define __pyx_n_u_result __pyx_string_tab[265] -#define __pyx_n_u_return __pyx_string_tab[266] -#define __pyx_n_u_rounds __pyx_string_tab[267] -#define __pyx_n_u_score __pyx_string_tab[268] -#define __pyx_n_u_self __pyx_string_tab[269] -#define __pyx_n_u_send __pyx_string_tab[270] -#define __pyx_n_u_set __pyx_string_tab[271] -#define __pyx_n_u_set_name __pyx_string_tab[272] -#define __pyx_n_u_setdefault __pyx_string_tab[273] -#define __pyx_n_u_setstate __pyx_string_tab[274] -#define __pyx_n_u_setstate_cython __pyx_string_tab[275] -#define __pyx_n_u_shape __pyx_string_tab[276] -#define __pyx_n_u_size __pyx_string_tab[277] -#define __pyx_n_u_squares __pyx_string_tab[278] -#define __pyx_n_u_start __pyx_string_tab[279] -#define __pyx_n_u_state __pyx_string_tab[280] -#define __pyx_n_u_step __pyx_string_tab[281] -#define __pyx_n_u_stop __pyx_string_tab[282] -#define __pyx_n_u_struct __pyx_string_tab[283] -#define __pyx_n_u_sum __pyx_string_tab[284] -#define __pyx_n_u_test __pyx_string_tab[285] -#define __pyx_n_u_throw __pyx_string_tab[286] -#define __pyx_n_u_unpack __pyx_string_tab[287] -#define __pyx_n_u_update __pyx_string_tab[288] -#define __pyx_n_u_use_setstate __pyx_string_tab[289] -#define __pyx_n_u_valid_move __pyx_string_tab[290] -#define __pyx_n_u_value __pyx_string_tab[291] -#define __pyx_n_u_values __pyx_string_tab[292] -#define __pyx_n_u_x __pyx_string_tab[293] -#define __pyx_n_u_y __pyx_string_tab[294] -#define __pyx_n_u_zeros __pyx_string_tab[295] -#define __pyx_kp_b_iso88591_0_t __pyx_string_tab[296] -#define __pyx_kp_b_iso88591_1F __pyx_string_tab[297] -#define __pyx_kp_b_iso88591_1_a_4q_d_d_Q_q_1A_AQa_Qa_1A_E_Q __pyx_string_tab[298] -#define __pyx_kp_b_iso88591_1_a_A_CuA_uBc_U_b_4vS_S_1_q_q __pyx_string_tab[299] -#define __pyx_kp_b_iso88591_4A_a_A_1_E_aq_U_1_9AS_3a_3a_q __pyx_string_tab[300] -#define __pyx_kp_b_iso88591_4A_a_A_a_4_1_CuA_F_AT_d_q_5_1_E __pyx_string_tab[301] -#define __pyx_kp_b_iso88591_5Q_gT_s_47J_1_t_1A __pyx_string_tab[302] -#define __pyx_kp_b_iso88591_6 __pyx_string_tab[303] -#define __pyx_kp_b_iso88591_7q_1A_4t_a_1_1_Kq_A_q __pyx_string_tab[304] -#define __pyx_kp_b_iso88591_7q_haq_4z_1D_4_1A_F_Bc_xq_Q_j_Q __pyx_string_tab[305] -#define __pyx_kp_b_iso88591_A __pyx_string_tab[306] -#define __pyx_kp_b_iso88591_A_4q_4q_Je1Ct_Bhb_A_haq_D_AQ_a_q __pyx_string_tab[307] -#define __pyx_kp_b_iso88591_A_a_A_CuA_r_D_T_3d_U_c_Q_G1A __pyx_string_tab[308] -#define __pyx_kp_b_iso88591_A_haq_4z_1D_4_1A_4_1A_Kr_5_gV1_1 __pyx_string_tab[309] -#define __pyx_kp_b_iso88591_A_haq_6_Rq_HF_wat_1_4vQ_1_4v_T_q __pyx_string_tab[310] -#define __pyx_kp_b_iso88591_A_haq_HF_wat_1_4vQ_1_L_d_4AQ_4_t __pyx_string_tab[311] -#define __pyx_kp_b_iso88591_A_r_D_T_3d __pyx_string_tab[312] -#define __pyx_kp_b_iso88591_L_1D_t4_q_l_q_Q_Q __pyx_string_tab[313] -#define __pyx_kp_b_iso88591_T_4_0_Kt1_G1F_a_vWE_Q_q_t9G5_4y __pyx_string_tab[314] -#define __pyx_kp_b_iso88591_T_4wd_G1F_a_vWE_Q_q_t_G1_q_d_7 __pyx_string_tab[315] -#define __pyx_kp_b_iso88591_T_9_OtSggkkssw_x_E_E_I_I_W_W_l __pyx_string_tab[316] -#define __pyx_kp_b_iso88591_T_A_G1F_a_vWE_Q_q_t6_S_IWA_q_d __pyx_string_tab[317] -#define __pyx_kp_b_iso88591_T_D_4z_SWW_aab_G1F_a_vWE_Q_q_t __pyx_string_tab[318] -#define __pyx_kp_b_iso88591_T_D_t_n_a_G1F_a_vWE_Q_q_t_S_N_Q __pyx_string_tab[319] -#define __pyx_kp_b_iso88591_T_k_T_Q_G1F_a_vWE_Q_q_q_q_T_G1 __pyx_string_tab[320] -#define __pyx_kp_b_iso88591__11 __pyx_string_tab[321] -#define __pyx_kp_b_iso88591__9 __pyx_string_tab[322] -#define __pyx_kp_b_iso88591_a_A_2S_E_Rs_a_9AS_3a_q __pyx_string_tab[323] -#define __pyx_kp_b_iso88591_a_A_2S_E_Rs_a_9AS_q __pyx_string_tab[324] -#define __pyx_kp_b_iso88591_a_A_E_aq_U_1_9AS_3a_1_q __pyx_string_tab[325] -#define __pyx_kp_b_iso88591_a_A_E_aq_U_1_9AS_3a_Q_vS_Rq __pyx_string_tab[326] -#define __pyx_kp_b_iso88591_a_Q_t1_4q_A_A_V5_a_a_T_CuIQd_HA __pyx_string_tab[327] -#define __pyx_kp_b_iso88591_a_a_A_Q_E_aq_U_1_9AS_3a_b_1_q __pyx_string_tab[328] -#define __pyx_kp_b_iso88591_a_t __pyx_string_tab[329] -#define __pyx_kp_b_iso88591_avQ __pyx_string_tab[330] -#define __pyx_kp_b_iso88591_avQ_2 __pyx_string_tab[331] -#define __pyx_kp_b_iso88591_q __pyx_string_tab[332] -#define __pyx_kp_b_iso88591_q_0_kQR_4xq_7_awnA_1 __pyx_string_tab[333] -#define __pyx_kp_b_iso88591_q_0_kQR_5_7_q_a_1 __pyx_string_tab[334] -#define __pyx_kp_b_iso88591_q_0_kQR_81A_7_2_3FnTU_1 __pyx_string_tab[335] -#define __pyx_kp_b_iso88591_q_0_kQR_881A_7_nA_1 __pyx_string_tab[336] -#define __pyx_kp_b_iso88591_q_0_kQR_XQa_7_A_1 __pyx_string_tab[337] -#define __pyx_kp_b_iso88591_q_0_kQR_haq_7_QnN_1 __pyx_string_tab[338] -#define __pyx_kp_b_iso88591_q_2 __pyx_string_tab[339] -#define __pyx_kp_b_iso88591_q_3 __pyx_string_tab[340] -#define __pyx_kp_b_iso88591_q_4 __pyx_string_tab[341] -#define __pyx_kp_b_iso88591_q_E_aq __pyx_string_tab[342] -#define __pyx_kp_b_iso88591_q_IU_4q_Kq_a_Ja_M_E_at1_c_j_t_B __pyx_string_tab[343] -#define __pyx_kp_b_iso88591_q_t_2T_D8I_TQUUV __pyx_string_tab[344] -#define __pyx_kp_b_iso88591_t __pyx_string_tab[345] -#define __pyx_kp_b_iso88591_t7_1 __pyx_string_tab[346] -#define __pyx_n_b_O __pyx_string_tab[347] +#define __pyx_kp_u_list_None __pyx_string_tab[38] +#define __pyx_kp_u_no_default___reduce___due_to_non __pyx_string_tab[39] +#define __pyx_kp_u_numpy__core_multiarray_failed_to __pyx_string_tab[40] +#define __pyx_kp_u_numpy__core_umath_failed_to_impo __pyx_string_tab[41] +#define __pyx_kp_u_object __pyx_string_tab[42] +#define __pyx_kp_u_orient __pyx_string_tab[43] +#define __pyx_kp_u_pos __pyx_string_tab[44] +#define __pyx_kp_u_strided_and_direct __pyx_string_tab[45] +#define __pyx_kp_u_strided_and_direct_or_indirect __pyx_string_tab[46] +#define __pyx_kp_u_strided_and_indirect __pyx_string_tab[47] +#define __pyx_kp_u_stringsource __pyx_string_tab[48] +#define __pyx_kp_u_unable_to_allocate_array_data __pyx_string_tab[49] +#define __pyx_kp_u_unable_to_allocate_shape_and_str __pyx_string_tab[50] +#define __pyx_n_u_ASCII __pyx_string_tab[51] +#define __pyx_n_u_BlokusGame __pyx_string_tab[52] +#define __pyx_n_u_BlokusGame___reduce_cython __pyx_string_tab[53] +#define __pyx_n_u_BlokusGame___setstate_cython __pyx_string_tab[54] +#define __pyx_n_u_BlokusGame__check_game_over __pyx_string_tab[55] +#define __pyx_n_u_BlokusGame__generate_action_spac __pyx_string_tab[56] +#define __pyx_n_u_BlokusGame_apply_move __pyx_string_tab[57] +#define __pyx_n_u_BlokusGame_copy __pyx_string_tab[58] +#define __pyx_n_u_BlokusGame_get_action __pyx_string_tab[59] +#define __pyx_n_u_BlokusGame_get_move __pyx_string_tab[60] +#define __pyx_n_u_BlokusGame_get_placed_corners __pyx_string_tab[61] +#define __pyx_n_u_BlokusGame_get_placed_squares __pyx_string_tab[62] +#define __pyx_n_u_BlokusGame_get_scores __pyx_string_tab[63] +#define __pyx_n_u_BlokusGame_get_state __pyx_string_tab[64] +#define __pyx_n_u_BlokusGame_get_valid_actions __pyx_string_tab[65] +#define __pyx_n_u_BlokusGame_get_winners __pyx_string_tab[66] +#define __pyx_n_u_BlokusGame_has_valid_moves __pyx_string_tab[67] +#define __pyx_n_u_BlokusGame_is_game_over __pyx_string_tab[68] +#define __pyx_n_u_BlokusGame_next_player __pyx_string_tab[69] +#define __pyx_n_u_BlokusGame_play_move __pyx_string_tab[70] +#define __pyx_n_u_BlokusGame_reset __pyx_string_tab[71] +#define __pyx_n_u_BlokusGame_valid_move __pyx_string_tab[72] +#define __pyx_n_u_Board __pyx_string_tab[73] +#define __pyx_n_u_Board___reduce_cython __pyx_string_tab[74] +#define __pyx_n_u_Board___setstate_cython __pyx_string_tab[75] +#define __pyx_n_u_Board_clear __pyx_string_tab[76] +#define __pyx_n_u_Board_coverage __pyx_string_tab[77] +#define __pyx_n_u_Board_get_cell __pyx_string_tab[78] +#define __pyx_n_u_Board_get_occupied __pyx_string_tab[79] +#define __pyx_n_u_Board_get_player_corners __pyx_string_tab[80] +#define __pyx_n_u_Board_get_player_occupied __pyx_string_tab[81] +#define __pyx_n_u_Board_get_player_squares __pyx_string_tab[82] +#define __pyx_n_u_Board_has_overlap __pyx_string_tab[83] +#define __pyx_n_u_Board_in_bounds __pyx_string_tab[84] +#define __pyx_n_u_Board_is_empty __pyx_string_tab[85] +#define __pyx_n_u_Board_is_full __pyx_string_tab[86] +#define __pyx_n_u_Board_place __pyx_string_tab[87] +#define __pyx_n_u_Ellipsis __pyx_string_tab[88] +#define __pyx_n_u_F5 __pyx_string_tab[89] +#define __pyx_n_u_I1 __pyx_string_tab[90] +#define __pyx_n_u_I2 __pyx_string_tab[91] +#define __pyx_n_u_I3 __pyx_string_tab[92] +#define __pyx_n_u_I4 __pyx_string_tab[93] +#define __pyx_n_u_I5 __pyx_string_tab[94] +#define __pyx_n_u_L4 __pyx_string_tab[95] +#define __pyx_n_u_L5 __pyx_string_tab[96] +#define __pyx_n_u_Move __pyx_string_tab[97] +#define __pyx_n_u_Move___reduce_cython __pyx_string_tab[98] +#define __pyx_n_u_Move___setstate_cython __pyx_string_tab[99] +#define __pyx_n_u_N5 __pyx_string_tab[100] +#define __pyx_n_u_None __pyx_string_tab[101] +#define __pyx_n_u_O4 __pyx_string_tab[102] +#define __pyx_n_u_P5 __pyx_string_tab[103] +#define __pyx_n_u_Piece __pyx_string_tab[104] +#define __pyx_n_u_PieceOrientation __pyx_string_tab[105] +#define __pyx_n_u_PieceOrientation___reduce_cython __pyx_string_tab[106] +#define __pyx_n_u_PieceOrientation___setstate_cyth __pyx_string_tab[107] +#define __pyx_n_u_PieceSet __pyx_string_tab[108] +#define __pyx_n_u_PieceSet___reduce_cython __pyx_string_tab[109] +#define __pyx_n_u_PieceSet___setstate_cython __pyx_string_tab[110] +#define __pyx_n_u_PieceSet_get_orientations __pyx_string_tab[111] +#define __pyx_n_u_PieceSet_get_piece __pyx_string_tab[112] +#define __pyx_n_u_PieceSet_get_piece_id __pyx_string_tab[113] +#define __pyx_n_u_Piece___reduce_cython __pyx_string_tab[114] +#define __pyx_n_u_Piece___setstate_cython __pyx_string_tab[115] +#define __pyx_n_u_PlayerState __pyx_string_tab[116] +#define __pyx_n_u_PlayerState___reduce_cython __pyx_string_tab[117] +#define __pyx_n_u_PlayerState___setstate_cython __pyx_string_tab[118] +#define __pyx_n_u_Pyx_PyDict_NextRef __pyx_string_tab[119] +#define __pyx_n_u_S4 __pyx_string_tab[120] +#define __pyx_n_u_Sequence __pyx_string_tab[121] +#define __pyx_n_u_T4 __pyx_string_tab[122] +#define __pyx_n_u_T5 __pyx_string_tab[123] +#define __pyx_n_u_U5 __pyx_string_tab[124] +#define __pyx_n_u_V3 __pyx_string_tab[125] +#define __pyx_n_u_V5 __pyx_string_tab[126] +#define __pyx_n_u_View_MemoryView __pyx_string_tab[127] +#define __pyx_n_u_W5 __pyx_string_tab[128] +#define __pyx_n_u_X5 __pyx_string_tab[129] +#define __pyx_n_u_Y5 __pyx_string_tab[130] +#define __pyx_n_u_Z5 __pyx_string_tab[131] +#define __pyx_n_u__10 __pyx_string_tab[132] +#define __pyx_n_u_abc __pyx_string_tab[133] +#define __pyx_n_u_action __pyx_string_tab[134] +#define __pyx_n_u_allocate_buffer __pyx_string_tab[135] +#define __pyx_n_u_annotate __pyx_string_tab[136] +#define __pyx_n_u_apply_move __pyx_string_tab[137] +#define __pyx_n_u_asyncio_coroutines __pyx_string_tab[138] +#define __pyx_n_u_available_pieces __pyx_string_tab[139] +#define __pyx_n_u_base __pyx_string_tab[140] +#define __pyx_n_u_bint __pyx_string_tab[141] +#define __pyx_n_u_blokus_cython __pyx_string_tab[142] +#define __pyx_n_u_board_size __pyx_string_tab[143] +#define __pyx_n_u_bool __pyx_string_tab[144] +#define __pyx_n_u_c __pyx_string_tab[145] +#define __pyx_n_u_can_move __pyx_string_tab[146] +#define __pyx_n_u_check_game_over __pyx_string_tab[147] +#define __pyx_n_u_check_game_over_locals_genexpr __pyx_string_tab[148] +#define __pyx_n_u_class __pyx_string_tab[149] +#define __pyx_n_u_class_getitem __pyx_string_tab[150] +#define __pyx_n_u_clear __pyx_string_tab[151] +#define __pyx_n_u_cline_in_traceback __pyx_string_tab[152] +#define __pyx_n_u_close __pyx_string_tab[153] +#define __pyx_n_u_copy __pyx_string_tab[154] +#define __pyx_n_u_corner_rule __pyx_string_tab[155] +#define __pyx_n_u_corners __pyx_string_tab[156] +#define __pyx_n_u_count __pyx_string_tab[157] +#define __pyx_n_u_coverage __pyx_string_tab[158] +#define __pyx_n_u_current_player __pyx_string_tab[159] +#define __pyx_n_u_cx __pyx_string_tab[160] +#define __pyx_n_u_cy __pyx_string_tab[161] +#define __pyx_n_u_dict __pyx_string_tab[162] +#define __pyx_n_u_dict_2 __pyx_string_tab[163] +#define __pyx_n_u_dict_3 __pyx_string_tab[164] +#define __pyx_n_u_dtype __pyx_string_tab[165] +#define __pyx_n_u_dtype_is_object __pyx_string_tab[166] +#define __pyx_n_u_dx __pyx_string_tab[167] +#define __pyx_n_u_dy __pyx_string_tab[168] +#define __pyx_n_u_encode __pyx_string_tab[169] +#define __pyx_n_u_enumerate __pyx_string_tab[170] +#define __pyx_n_u_error __pyx_string_tab[171] +#define __pyx_n_u_fill __pyx_string_tab[172] +#define __pyx_n_u_flags __pyx_string_tab[173] +#define __pyx_n_u_float __pyx_string_tab[174] +#define __pyx_n_u_format __pyx_string_tab[175] +#define __pyx_n_u_fortran __pyx_string_tab[176] +#define __pyx_n_u_func __pyx_string_tab[177] +#define __pyx_n_u_game_over __pyx_string_tab[178] +#define __pyx_n_u_genexpr __pyx_string_tab[179] +#define __pyx_n_u_get_action __pyx_string_tab[180] +#define __pyx_n_u_get_cell __pyx_string_tab[181] +#define __pyx_n_u_get_move __pyx_string_tab[182] +#define __pyx_n_u_get_occupied __pyx_string_tab[183] +#define __pyx_n_u_get_orientations __pyx_string_tab[184] +#define __pyx_n_u_get_piece __pyx_string_tab[185] +#define __pyx_n_u_get_piece_id __pyx_string_tab[186] +#define __pyx_n_u_get_placed_corners __pyx_string_tab[187] +#define __pyx_n_u_get_placed_squares __pyx_string_tab[188] +#define __pyx_n_u_get_player_corners __pyx_string_tab[189] +#define __pyx_n_u_get_player_occupied __pyx_string_tab[190] +#define __pyx_n_u_get_player_squares __pyx_string_tab[191] +#define __pyx_n_u_get_scores __pyx_string_tab[192] +#define __pyx_n_u_get_standard_pieces __pyx_string_tab[193] +#define __pyx_n_u_get_state __pyx_string_tab[194] +#define __pyx_n_u_get_valid_actions __pyx_string_tab[195] +#define __pyx_n_u_get_winners __pyx_string_tab[196] +#define __pyx_n_u_getstate __pyx_string_tab[197] +#define __pyx_n_u_grid_view __pyx_string_tab[198] +#define __pyx_n_u_has_overlap __pyx_string_tab[199] +#define __pyx_n_u_has_started __pyx_string_tab[200] +#define __pyx_n_u_has_valid_moves __pyx_string_tab[201] +#define __pyx_n_u_i __pyx_string_tab[202] +#define __pyx_n_u_id __pyx_string_tab[203] +#define __pyx_n_u_idx __pyx_string_tab[204] +#define __pyx_n_u_import __pyx_string_tab[205] +#define __pyx_n_u_in_bounds __pyx_string_tab[206] +#define __pyx_n_u_index __pyx_string_tab[207] +#define __pyx_n_u_init___locals_genexpr __pyx_string_tab[208] +#define __pyx_n_u_int __pyx_string_tab[209] +#define __pyx_n_u_int8 __pyx_string_tab[210] +#define __pyx_n_u_is_coroutine __pyx_string_tab[211] +#define __pyx_n_u_is_empty __pyx_string_tab[212] +#define __pyx_n_u_is_full __pyx_string_tab[213] +#define __pyx_n_u_is_game_over __pyx_string_tab[214] +#define __pyx_n_u_items __pyx_string_tab[215] +#define __pyx_n_u_itemsize __pyx_string_tab[216] +#define __pyx_n_u_list __pyx_string_tab[217] +#define __pyx_n_u_main __pyx_string_tab[218] +#define __pyx_n_u_max __pyx_string_tab[219] +#define __pyx_n_u_max_score __pyx_string_tab[220] +#define __pyx_n_u_memview __pyx_string_tab[221] +#define __pyx_n_u_min __pyx_string_tab[222] +#define __pyx_n_u_mode __pyx_string_tab[223] +#define __pyx_n_u_module __pyx_string_tab[224] +#define __pyx_n_u_move __pyx_string_tab[225] +#define __pyx_n_u_name __pyx_string_tab[226] +#define __pyx_n_u_name_2 __pyx_string_tab[227] +#define __pyx_n_u_ndim __pyx_string_tab[228] +#define __pyx_n_u_new __pyx_string_tab[229] +#define __pyx_n_u_new_game __pyx_string_tab[230] +#define __pyx_n_u_next __pyx_string_tab[231] +#define __pyx_n_u_next_idx __pyx_string_tab[232] +#define __pyx_n_u_next_player __pyx_string_tab[233] +#define __pyx_n_u_normalize_squares_cython_locals __pyx_string_tab[234] +#define __pyx_n_u_np __pyx_string_tab[235] +#define __pyx_n_u_num_actions __pyx_string_tab[236] +#define __pyx_n_u_num_pieces __pyx_string_tab[237] +#define __pyx_n_u_num_players __pyx_string_tab[238] +#define __pyx_n_u_numpy __pyx_string_tab[239] +#define __pyx_n_u_o __pyx_string_tab[240] +#define __pyx_n_u_obj __pyx_string_tab[241] +#define __pyx_n_u_offset __pyx_string_tab[242] +#define __pyx_n_u_orientation_id __pyx_string_tab[243] +#define __pyx_n_u_p __pyx_string_tab[244] +#define __pyx_n_u_pack __pyx_string_tab[245] +#define __pyx_n_u_pid __pyx_string_tab[246] +#define __pyx_n_u_piece __pyx_string_tab[247] +#define __pyx_n_u_piece_id __pyx_string_tab[248] +#define __pyx_n_u_pieces __pyx_string_tab[249] +#define __pyx_n_u_pieces_list __pyx_string_tab[250] +#define __pyx_n_u_place __pyx_string_tab[251] +#define __pyx_n_u_placed_corners __pyx_string_tab[252] +#define __pyx_n_u_placed_squares __pyx_string_tab[253] +#define __pyx_n_u_play_move __pyx_string_tab[254] +#define __pyx_n_u_player __pyx_string_tab[255] +#define __pyx_n_u_player_idx __pyx_string_tab[256] +#define __pyx_n_u_player_squares __pyx_string_tab[257] +#define __pyx_n_u_players __pyx_string_tab[258] +#define __pyx_n_u_pop __pyx_string_tab[259] +#define __pyx_n_u_pyx_checksum __pyx_string_tab[260] +#define __pyx_n_u_pyx_result __pyx_string_tab[261] +#define __pyx_n_u_pyx_state __pyx_string_tab[262] +#define __pyx_n_u_pyx_type __pyx_string_tab[263] +#define __pyx_n_u_pyx_unpickle_BlokusGame __pyx_string_tab[264] +#define __pyx_n_u_pyx_unpickle_Board __pyx_string_tab[265] +#define __pyx_n_u_pyx_unpickle_Enum __pyx_string_tab[266] +#define __pyx_n_u_pyx_unpickle_Move __pyx_string_tab[267] +#define __pyx_n_u_pyx_unpickle_Piece __pyx_string_tab[268] +#define __pyx_n_u_pyx_unpickle_PieceOrientation __pyx_string_tab[269] +#define __pyx_n_u_pyx_unpickle_PieceSet __pyx_string_tab[270] +#define __pyx_n_u_pyx_unpickle_PlayerState __pyx_string_tab[271] +#define __pyx_n_u_pyx_vtable __pyx_string_tab[272] +#define __pyx_n_u_qualname __pyx_string_tab[273] +#define __pyx_n_u_reduce __pyx_string_tab[274] +#define __pyx_n_u_reduce_cython __pyx_string_tab[275] +#define __pyx_n_u_reduce_ex __pyx_string_tab[276] +#define __pyx_n_u_register __pyx_string_tab[277] +#define __pyx_n_u_reset __pyx_string_tab[278] +#define __pyx_n_u_result __pyx_string_tab[279] +#define __pyx_n_u_return __pyx_string_tab[280] +#define __pyx_n_u_rounds __pyx_string_tab[281] +#define __pyx_n_u_s __pyx_string_tab[282] +#define __pyx_n_u_score __pyx_string_tab[283] +#define __pyx_n_u_scores __pyx_string_tab[284] +#define __pyx_n_u_self __pyx_string_tab[285] +#define __pyx_n_u_send __pyx_string_tab[286] +#define __pyx_n_u_set __pyx_string_tab[287] +#define __pyx_n_u_set_name __pyx_string_tab[288] +#define __pyx_n_u_setdefault __pyx_string_tab[289] +#define __pyx_n_u_setstate __pyx_string_tab[290] +#define __pyx_n_u_setstate_cython __pyx_string_tab[291] +#define __pyx_n_u_shape __pyx_string_tab[292] +#define __pyx_n_u_size __pyx_string_tab[293] +#define __pyx_n_u_squares __pyx_string_tab[294] +#define __pyx_n_u_start __pyx_string_tab[295] +#define __pyx_n_u_state __pyx_string_tab[296] +#define __pyx_n_u_step __pyx_string_tab[297] +#define __pyx_n_u_stop __pyx_string_tab[298] +#define __pyx_n_u_struct __pyx_string_tab[299] +#define __pyx_n_u_sum __pyx_string_tab[300] +#define __pyx_n_u_test __pyx_string_tab[301] +#define __pyx_n_u_throw __pyx_string_tab[302] +#define __pyx_n_u_unpack __pyx_string_tab[303] +#define __pyx_n_u_unplaced __pyx_string_tab[304] +#define __pyx_n_u_update __pyx_string_tab[305] +#define __pyx_n_u_use_setstate __pyx_string_tab[306] +#define __pyx_n_u_valid_move __pyx_string_tab[307] +#define __pyx_n_u_value __pyx_string_tab[308] +#define __pyx_n_u_values __pyx_string_tab[309] +#define __pyx_n_u_x __pyx_string_tab[310] +#define __pyx_n_u_y __pyx_string_tab[311] +#define __pyx_n_u_zeros __pyx_string_tab[312] +#define __pyx_kp_b_iso88591_0_t __pyx_string_tab[313] +#define __pyx_kp_b_iso88591_1F __pyx_string_tab[314] +#define __pyx_kp_b_iso88591_1_a_4q_d_d_Q_q_1A_AQa_Qa_1A_E_Q __pyx_string_tab[315] +#define __pyx_kp_b_iso88591_1_a_A_CuA_uBc_U_b_4vS_S_1_q_q __pyx_string_tab[316] +#define __pyx_kp_b_iso88591_4A_a_A_1_E_aq_U_1_9AS_3a_3a_q __pyx_string_tab[317] +#define __pyx_kp_b_iso88591_4A_a_A_a_4_1_CuA_F_AT_d_q_5_1_E __pyx_string_tab[318] +#define __pyx_kp_b_iso88591_4q __pyx_string_tab[319] +#define __pyx_kp_b_iso88591_5Q_gT_s_47J_1_t_1A __pyx_string_tab[320] +#define __pyx_kp_b_iso88591_6 __pyx_string_tab[321] +#define __pyx_kp_b_iso88591_7q_1A_4t_a_1_1_Kq_A_q __pyx_string_tab[322] +#define __pyx_kp_b_iso88591_7q_haq_4z_1D_4_1A_F_Bc_xq_Q_j_Q __pyx_string_tab[323] +#define __pyx_kp_b_iso88591_A __pyx_string_tab[324] +#define __pyx_kp_b_iso88591_A_1_Jd_q_uAT_1_Jj_5_c_q_Q_F_1_s __pyx_string_tab[325] +#define __pyx_kp_b_iso88591_A_4q_4q_Je1Ct_Bhb_A_haq_D_AQ_a_q __pyx_string_tab[326] +#define __pyx_kp_b_iso88591_A_a_A_CuA_r_D_T_3d_U_c_Q_G1A __pyx_string_tab[327] +#define __pyx_kp_b_iso88591_A_haq_4z_1D_4_1A_4_1A_Kr_5_gV1_1 __pyx_string_tab[328] +#define __pyx_kp_b_iso88591_A_haq_6_Rq_HF_wat_1_4vQ_1_4v_T_q __pyx_string_tab[329] +#define __pyx_kp_b_iso88591_A_haq_HF_wat_1_4vQ_1_L_d_4AQ_4_t __pyx_string_tab[330] +#define __pyx_kp_b_iso88591_A_r_D_T_3d __pyx_string_tab[331] +#define __pyx_kp_b_iso88591_A_t_q __pyx_string_tab[332] +#define __pyx_kp_b_iso88591_L_1D_t4_q_l_q_Q_Q __pyx_string_tab[333] +#define __pyx_kp_b_iso88591_Q_4t_1_4_S_q_c_iq_2S __pyx_string_tab[334] +#define __pyx_kp_b_iso88591_T_4_0_Kt1_G1F_a_vWE_Q_q_t9G5_4y __pyx_string_tab[335] +#define __pyx_kp_b_iso88591_T_4wd_G1F_a_vWE_Q_q_t_G1_q_d_7 __pyx_string_tab[336] +#define __pyx_kp_b_iso88591_T_9_OtSggkkssw_x_E_E_I_I_W_W_l __pyx_string_tab[337] +#define __pyx_kp_b_iso88591_T_A_G1F_a_vWE_Q_q_t6_S_IWA_q_d __pyx_string_tab[338] +#define __pyx_kp_b_iso88591_T_D_4z_SWW_aab_G1F_a_vWE_Q_q_t __pyx_string_tab[339] +#define __pyx_kp_b_iso88591_T_D_t_n_a_G1F_a_vWE_Q_q_t_S_N_Q __pyx_string_tab[340] +#define __pyx_kp_b_iso88591_T_k_T_Q_G1F_a_vWE_Q_q_q_q_T_G1 __pyx_string_tab[341] +#define __pyx_kp_b_iso88591__11 __pyx_string_tab[342] +#define __pyx_kp_b_iso88591__9 __pyx_string_tab[343] +#define __pyx_kp_b_iso88591_a_4q_1_E_at1_t81Bj_D0_q_M_q __pyx_string_tab[344] +#define __pyx_kp_b_iso88591_a_A_2S_E_Rs_a_9AS_3a_q __pyx_string_tab[345] +#define __pyx_kp_b_iso88591_a_A_2S_E_Rs_a_9AS_q __pyx_string_tab[346] +#define __pyx_kp_b_iso88591_a_A_E_aq_U_1_9AS_3a_1_q __pyx_string_tab[347] +#define __pyx_kp_b_iso88591_a_A_E_aq_U_1_9AS_3a_Q_vS_Rq __pyx_string_tab[348] +#define __pyx_kp_b_iso88591_a_Q_t1_4q_A_A_V5_a_a_T_CuIQd_HA __pyx_string_tab[349] +#define __pyx_kp_b_iso88591_a_a_A_Q_E_aq_U_1_9AS_3a_b_1_q __pyx_string_tab[350] +#define __pyx_kp_b_iso88591_a_t __pyx_string_tab[351] +#define __pyx_kp_b_iso88591_avQ __pyx_string_tab[352] +#define __pyx_kp_b_iso88591_avQ_2 __pyx_string_tab[353] +#define __pyx_kp_b_iso88591_q __pyx_string_tab[354] +#define __pyx_kp_b_iso88591_q_0_kQR_4xq_7_awnA_1 __pyx_string_tab[355] +#define __pyx_kp_b_iso88591_q_0_kQR_5_7_q_a_1 __pyx_string_tab[356] +#define __pyx_kp_b_iso88591_q_0_kQR_81A_7_2_3FnTU_1 __pyx_string_tab[357] +#define __pyx_kp_b_iso88591_q_0_kQR_881A_7_nA_1 __pyx_string_tab[358] +#define __pyx_kp_b_iso88591_q_0_kQR_XQa_7_A_1 __pyx_string_tab[359] +#define __pyx_kp_b_iso88591_q_0_kQR_haq_7_QnN_1 __pyx_string_tab[360] +#define __pyx_kp_b_iso88591_q_2 __pyx_string_tab[361] +#define __pyx_kp_b_iso88591_q_3 __pyx_string_tab[362] +#define __pyx_kp_b_iso88591_q_4 __pyx_string_tab[363] +#define __pyx_kp_b_iso88591_q_E_aq __pyx_string_tab[364] +#define __pyx_kp_b_iso88591_q_IU_4q_Kq_a_Ja_M_E_at1_c_j_t_B __pyx_string_tab[365] +#define __pyx_kp_b_iso88591_q_t_2T_D8I_TQUUV __pyx_string_tab[366] +#define __pyx_kp_b_iso88591_t __pyx_string_tab[367] +#define __pyx_kp_b_iso88591_t7_1 __pyx_string_tab[368] +#define __pyx_n_b_O __pyx_string_tab[369] #define __pyx_int_0 __pyx_number_tab[0] #define __pyx_int_neg_1 __pyx_number_tab[1] #define __pyx_int_1 __pyx_number_tab[2] @@ -4726,34 +4758,34 @@ static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) { Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_flexible); Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_character); Py_CLEAR(clear_module_state->__pyx_ptype_5numpy_ufunc); - Py_CLEAR(clear_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board); - Py_CLEAR(clear_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython_Board); - Py_CLEAR(clear_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move); - Py_CLEAR(clear_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython_Move); - Py_CLEAR(clear_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation); - Py_CLEAR(clear_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython_PieceOrientation); - Py_CLEAR(clear_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece); - Py_CLEAR(clear_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython_Piece); - Py_CLEAR(clear_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet); - Py_CLEAR(clear_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython_PieceSet); - Py_CLEAR(clear_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState); - Py_CLEAR(clear_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython_PlayerState); - Py_CLEAR(clear_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame); - Py_CLEAR(clear_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython_BlokusGame); - Py_CLEAR(clear_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr); - Py_CLEAR(clear_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr); - Py_CLEAR(clear_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr); - Py_CLEAR(clear_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr); - Py_CLEAR(clear_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr); - Py_CLEAR(clear_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr); - Py_CLEAR(clear_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr); - Py_CLEAR(clear_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr); - Py_CLEAR(clear_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr); - Py_CLEAR(clear_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr); - Py_CLEAR(clear_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr); - Py_CLEAR(clear_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr); - Py_CLEAR(clear_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr); - Py_CLEAR(clear_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr); + Py_CLEAR(clear_module_state->__pyx_ptype_13blokus_cython_Board); + Py_CLEAR(clear_module_state->__pyx_type_13blokus_cython_Board); + Py_CLEAR(clear_module_state->__pyx_ptype_13blokus_cython_Move); + Py_CLEAR(clear_module_state->__pyx_type_13blokus_cython_Move); + Py_CLEAR(clear_module_state->__pyx_ptype_13blokus_cython_PieceOrientation); + Py_CLEAR(clear_module_state->__pyx_type_13blokus_cython_PieceOrientation); + Py_CLEAR(clear_module_state->__pyx_ptype_13blokus_cython_Piece); + Py_CLEAR(clear_module_state->__pyx_type_13blokus_cython_Piece); + Py_CLEAR(clear_module_state->__pyx_ptype_13blokus_cython_PieceSet); + Py_CLEAR(clear_module_state->__pyx_type_13blokus_cython_PieceSet); + Py_CLEAR(clear_module_state->__pyx_ptype_13blokus_cython_PlayerState); + Py_CLEAR(clear_module_state->__pyx_type_13blokus_cython_PlayerState); + Py_CLEAR(clear_module_state->__pyx_ptype_13blokus_cython_BlokusGame); + Py_CLEAR(clear_module_state->__pyx_type_13blokus_cython_BlokusGame); + Py_CLEAR(clear_module_state->__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr); + Py_CLEAR(clear_module_state->__pyx_type_13blokus_cython___pyx_scope_struct__genexpr); + Py_CLEAR(clear_module_state->__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr); + Py_CLEAR(clear_module_state->__pyx_type_13blokus_cython___pyx_scope_struct_1_genexpr); + Py_CLEAR(clear_module_state->__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr); + Py_CLEAR(clear_module_state->__pyx_type_13blokus_cython___pyx_scope_struct_2_genexpr); + Py_CLEAR(clear_module_state->__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr); + Py_CLEAR(clear_module_state->__pyx_type_13blokus_cython___pyx_scope_struct_3_genexpr); + Py_CLEAR(clear_module_state->__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr); + Py_CLEAR(clear_module_state->__pyx_type_13blokus_cython___pyx_scope_struct_4_genexpr); + Py_CLEAR(clear_module_state->__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr); + Py_CLEAR(clear_module_state->__pyx_type_13blokus_cython___pyx_scope_struct_5_genexpr); + Py_CLEAR(clear_module_state->__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr); + Py_CLEAR(clear_module_state->__pyx_type_13blokus_cython___pyx_scope_struct_6_genexpr); Py_CLEAR(clear_module_state->__pyx_array_type); Py_CLEAR(clear_module_state->__pyx_type___pyx_array); Py_CLEAR(clear_module_state->__pyx_MemviewEnum_type); @@ -4764,8 +4796,8 @@ static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) { Py_CLEAR(clear_module_state->__pyx_type___pyx_memoryviewslice); for (int i=0; i<1; ++i) { Py_CLEAR(clear_module_state->__pyx_slice[i]); } for (int i=0; i<41; ++i) { Py_CLEAR(clear_module_state->__pyx_tuple[i]); } - for (int i=0; i<55; ++i) { Py_CLEAR(clear_module_state->__pyx_codeobj_tab[i]); } - for (int i=0; i<348; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); } + for (int i=0; i<61; ++i) { Py_CLEAR(clear_module_state->__pyx_codeobj_tab[i]); } + for (int i=0; i<370; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); } for (int i=0; i<14; ++i) { Py_CLEAR(clear_module_state->__pyx_number_tab[i]); } /* #### Code section: module_state_clear_contents ### */ /* CommonTypesMetaclass.module_state_clear */ @@ -4808,34 +4840,34 @@ static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_flexible); Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_character); Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_ufunc); - Py_VISIT(traverse_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board); - Py_VISIT(traverse_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython_Board); - Py_VISIT(traverse_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move); - Py_VISIT(traverse_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython_Move); - Py_VISIT(traverse_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation); - Py_VISIT(traverse_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython_PieceOrientation); - Py_VISIT(traverse_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece); - Py_VISIT(traverse_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython_Piece); - Py_VISIT(traverse_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet); - Py_VISIT(traverse_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython_PieceSet); - Py_VISIT(traverse_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState); - Py_VISIT(traverse_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython_PlayerState); - Py_VISIT(traverse_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame); - Py_VISIT(traverse_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython_BlokusGame); - Py_VISIT(traverse_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr); - Py_VISIT(traverse_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr); - Py_VISIT(traverse_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr); - Py_VISIT(traverse_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr); - Py_VISIT(traverse_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr); - Py_VISIT(traverse_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr); - Py_VISIT(traverse_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr); - Py_VISIT(traverse_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr); - Py_VISIT(traverse_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr); - Py_VISIT(traverse_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr); - Py_VISIT(traverse_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr); - Py_VISIT(traverse_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr); - Py_VISIT(traverse_module_state->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr); - Py_VISIT(traverse_module_state->__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr); + Py_VISIT(traverse_module_state->__pyx_ptype_13blokus_cython_Board); + Py_VISIT(traverse_module_state->__pyx_type_13blokus_cython_Board); + Py_VISIT(traverse_module_state->__pyx_ptype_13blokus_cython_Move); + Py_VISIT(traverse_module_state->__pyx_type_13blokus_cython_Move); + Py_VISIT(traverse_module_state->__pyx_ptype_13blokus_cython_PieceOrientation); + Py_VISIT(traverse_module_state->__pyx_type_13blokus_cython_PieceOrientation); + Py_VISIT(traverse_module_state->__pyx_ptype_13blokus_cython_Piece); + Py_VISIT(traverse_module_state->__pyx_type_13blokus_cython_Piece); + Py_VISIT(traverse_module_state->__pyx_ptype_13blokus_cython_PieceSet); + Py_VISIT(traverse_module_state->__pyx_type_13blokus_cython_PieceSet); + Py_VISIT(traverse_module_state->__pyx_ptype_13blokus_cython_PlayerState); + Py_VISIT(traverse_module_state->__pyx_type_13blokus_cython_PlayerState); + Py_VISIT(traverse_module_state->__pyx_ptype_13blokus_cython_BlokusGame); + Py_VISIT(traverse_module_state->__pyx_type_13blokus_cython_BlokusGame); + Py_VISIT(traverse_module_state->__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr); + Py_VISIT(traverse_module_state->__pyx_type_13blokus_cython___pyx_scope_struct__genexpr); + Py_VISIT(traverse_module_state->__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr); + Py_VISIT(traverse_module_state->__pyx_type_13blokus_cython___pyx_scope_struct_1_genexpr); + Py_VISIT(traverse_module_state->__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr); + Py_VISIT(traverse_module_state->__pyx_type_13blokus_cython___pyx_scope_struct_2_genexpr); + Py_VISIT(traverse_module_state->__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr); + Py_VISIT(traverse_module_state->__pyx_type_13blokus_cython___pyx_scope_struct_3_genexpr); + Py_VISIT(traverse_module_state->__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr); + Py_VISIT(traverse_module_state->__pyx_type_13blokus_cython___pyx_scope_struct_4_genexpr); + Py_VISIT(traverse_module_state->__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr); + Py_VISIT(traverse_module_state->__pyx_type_13blokus_cython___pyx_scope_struct_5_genexpr); + Py_VISIT(traverse_module_state->__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr); + Py_VISIT(traverse_module_state->__pyx_type_13blokus_cython___pyx_scope_struct_6_genexpr); Py_VISIT(traverse_module_state->__pyx_array_type); Py_VISIT(traverse_module_state->__pyx_type___pyx_array); Py_VISIT(traverse_module_state->__pyx_MemviewEnum_type); @@ -4846,8 +4878,8 @@ static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void Py_VISIT(traverse_module_state->__pyx_type___pyx_memoryviewslice); for (int i=0; i<1; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_slice[i]); } for (int i=0; i<41; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_tuple[i]); } - for (int i=0; i<55; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_codeobj_tab[i]); } - for (int i=0; i<348; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); } + for (int i=0; i<61; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_codeobj_tab[i]); } + for (int i=0; i<370; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); } for (int i=0; i<14; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_number_tab[i]); } /* #### Code section: module_state_traverse_contents ### */ /* CommonTypesMetaclass.module_state_traverse */ @@ -17352,7 +17384,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":242 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":242 * cdef int type_num * * @property # <<<<<<<<<<<<<< @@ -17363,7 +17395,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_Descr *__pyx_v_self) { npy_intp __pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":244 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":244 * @property * cdef inline npy_intp itemsize(self) noexcept nogil: * return PyDataType_ELSIZE(self) # <<<<<<<<<<<<<< @@ -17373,7 +17405,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D __pyx_r = PyDataType_ELSIZE(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":242 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":242 * cdef int type_num * * @property # <<<<<<<<<<<<<< @@ -17386,7 +17418,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":246 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":246 * return PyDataType_ELSIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17397,7 +17429,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray_Descr *__pyx_v_self) { npy_intp __pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":248 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":248 * @property * cdef inline npy_intp alignment(self) noexcept nogil: * return PyDataType_ALIGNMENT(self) # <<<<<<<<<<<<<< @@ -17407,7 +17439,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray __pyx_r = PyDataType_ALIGNMENT(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":246 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":246 * return PyDataType_ELSIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17420,7 +17452,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":252 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":252 * # Use fields/names with care as they may be NULL. You must check * # for this using PyDataType_HASFIELDS. * @property # <<<<<<<<<<<<<< @@ -17434,7 +17466,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc PyObject *__pyx_t_1; __Pyx_RefNannySetupContext("fields", 0); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":254 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":254 * @property * cdef inline object fields(self): * return PyDataType_FIELDS(self) # <<<<<<<<<<<<<< @@ -17447,7 +17479,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc __pyx_r = ((PyObject *)__pyx_t_1); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":252 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":252 * # Use fields/names with care as they may be NULL. You must check * # for this using PyDataType_HASFIELDS. * @property # <<<<<<<<<<<<<< @@ -17462,7 +17494,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":256 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":256 * return PyDataType_FIELDS(self) * * @property # <<<<<<<<<<<<<< @@ -17476,7 +17508,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr PyObject *__pyx_t_1; __Pyx_RefNannySetupContext("names", 0); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":258 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":258 * @property * cdef inline tuple names(self): * return PyDataType_NAMES(self) # <<<<<<<<<<<<<< @@ -17489,7 +17521,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr __pyx_r = ((PyObject*)__pyx_t_1); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":256 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":256 * return PyDataType_FIELDS(self) * * @property # <<<<<<<<<<<<<< @@ -17504,7 +17536,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":263 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":263 * # valid (the pointer can be NULL). Most users should access * # this field via the inline helper method PyDataType_SHAPE. * @property # <<<<<<<<<<<<<< @@ -17515,7 +17547,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarray(PyArray_Descr *__pyx_v_self) { PyArray_ArrayDescr *__pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265 * @property * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil: * return PyDataType_SUBARRAY(self) # <<<<<<<<<<<<<< @@ -17525,7 +17557,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra __pyx_r = PyDataType_SUBARRAY(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":263 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":263 * # valid (the pointer can be NULL). Most users should access * # this field via the inline helper method PyDataType_SHAPE. * @property # <<<<<<<<<<<<<< @@ -17538,7 +17570,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":267 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":267 * return PyDataType_SUBARRAY(self) * * @property # <<<<<<<<<<<<<< @@ -17549,7 +17581,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr *__pyx_v_self) { npy_uint64 __pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":270 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":270 * cdef inline npy_uint64 flags(self) noexcept nogil: * """The data types flags.""" * return PyDataType_FLAGS(self) # <<<<<<<<<<<<<< @@ -17559,7 +17591,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr __pyx_r = PyDataType_FLAGS(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":267 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":267 * return PyDataType_SUBARRAY(self) * * @property # <<<<<<<<<<<<<< @@ -17572,7 +17604,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":279 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":279 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]: * * @property # <<<<<<<<<<<<<< @@ -17583,7 +17615,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMultiIterObject *__pyx_v_self) { int __pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":282 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":282 * cdef inline int numiter(self) noexcept nogil: * """The number of arrays that need to be broadcast to the same shape.""" * return PyArray_MultiIter_NUMITER(self) # <<<<<<<<<<<<<< @@ -17593,7 +17625,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti __pyx_r = PyArray_MultiIter_NUMITER(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":279 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":279 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]: * * @property # <<<<<<<<<<<<<< @@ -17606,7 +17638,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":284 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":284 * return PyArray_MultiIter_NUMITER(self) * * @property # <<<<<<<<<<<<<< @@ -17617,7 +17649,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiIterObject *__pyx_v_self) { npy_intp __pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":287 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":287 * cdef inline npy_intp size(self) noexcept nogil: * """The total broadcasted size.""" * return PyArray_MultiIter_SIZE(self) # <<<<<<<<<<<<<< @@ -17627,7 +17659,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI __pyx_r = PyArray_MultiIter_SIZE(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":284 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":284 * return PyArray_MultiIter_NUMITER(self) * * @property # <<<<<<<<<<<<<< @@ -17640,7 +17672,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":289 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":289 * return PyArray_MultiIter_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17651,7 +17683,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMultiIterObject *__pyx_v_self) { npy_intp __pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292 * cdef inline npy_intp index(self) noexcept nogil: * """The current (1-d) index into the broadcasted result.""" * return PyArray_MultiIter_INDEX(self) # <<<<<<<<<<<<<< @@ -17661,7 +17693,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult __pyx_r = PyArray_MultiIter_INDEX(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":289 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":289 * return PyArray_MultiIter_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17674,7 +17706,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":294 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":294 * return PyArray_MultiIter_INDEX(self) * * @property # <<<<<<<<<<<<<< @@ -17685,7 +17717,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject *__pyx_v_self) { int __pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297 * cdef inline int nd(self) noexcept nogil: * """The number of dimensions in the broadcasted result.""" * return PyArray_MultiIter_NDIM(self) # <<<<<<<<<<<<<< @@ -17695,7 +17727,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject __pyx_r = PyArray_MultiIter_NDIM(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":294 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":294 * return PyArray_MultiIter_INDEX(self) * * @property # <<<<<<<<<<<<<< @@ -17708,7 +17740,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":299 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":299 * return PyArray_MultiIter_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17719,7 +17751,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions(PyArrayMultiIterObject *__pyx_v_self) { npy_intp *__pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302 * cdef inline npy_intp* dimensions(self) noexcept nogil: * """The shape of the broadcasted result.""" * return PyArray_MultiIter_DIMS(self) # <<<<<<<<<<<<<< @@ -17729,7 +17761,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions __pyx_r = PyArray_MultiIter_DIMS(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":299 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":299 * return PyArray_MultiIter_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17742,7 +17774,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":304 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":304 * return PyArray_MultiIter_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17753,7 +17785,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiIterObject *__pyx_v_self) { void **__pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":308 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":308 * """An array of iterator objects that holds the iterators for the arrays to be broadcast together. * On return, the iterators are adjusted for broadcasting.""" * return PyArray_MultiIter_ITERS(self) # <<<<<<<<<<<<<< @@ -17763,7 +17795,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI __pyx_r = PyArray_MultiIter_ITERS(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":304 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":304 * return PyArray_MultiIter_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17776,7 +17808,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":322 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":322 * # Instead, we use properties that map to the corresponding C-API functions. * * @property # <<<<<<<<<<<<<< @@ -17787,7 +17819,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject *__pyx_v_self) { PyObject *__pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":326 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":326 * """Returns a borrowed reference to the object owning the data/memory. * """ * return PyArray_BASE(self) # <<<<<<<<<<<<<< @@ -17797,7 +17829,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject __pyx_r = PyArray_BASE(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":322 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":322 * # Instead, we use properties that map to the corresponding C-API functions. * * @property # <<<<<<<<<<<<<< @@ -17810,7 +17842,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":328 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":328 * return PyArray_BASE(self) * * @property # <<<<<<<<<<<<<< @@ -17824,7 +17856,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray PyArray_Descr *__pyx_t_1; __Pyx_RefNannySetupContext("descr", 0); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":332 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":332 * """Returns an owned reference to the dtype of the array. * """ * return PyArray_DESCR(self) # <<<<<<<<<<<<<< @@ -17837,7 +17869,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray __pyx_r = ((PyArray_Descr *)__pyx_t_1); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":328 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":328 * return PyArray_BASE(self) * * @property # <<<<<<<<<<<<<< @@ -17852,7 +17884,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":334 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":334 * return PyArray_DESCR(self) * * @property # <<<<<<<<<<<<<< @@ -17863,7 +17895,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx_v_self) { int __pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":338 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":338 * """Returns the number of dimensions in the array. * """ * return PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -17873,7 +17905,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx __pyx_r = PyArray_NDIM(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":334 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":334 * return PyArray_DESCR(self) * * @property # <<<<<<<<<<<<<< @@ -17886,7 +17918,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":340 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":340 * return PyArray_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17897,7 +17929,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObject *__pyx_v_self) { npy_intp *__pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":346 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":346 * Can return NULL for 0-dimensional arrays. * """ * return PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -17907,7 +17939,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec __pyx_r = PyArray_DIMS(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":340 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":340 * return PyArray_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17920,7 +17952,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":348 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":348 * return PyArray_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17931,7 +17963,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayObject *__pyx_v_self) { npy_intp *__pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353 * The number of elements matches the number of dimensions of the array (ndim). * """ * return PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -17941,7 +17973,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO __pyx_r = PyArray_STRIDES(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":348 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":348 * return PyArray_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17954,7 +17986,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":355 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":355 * return PyArray_STRIDES(self) * * @property # <<<<<<<<<<<<<< @@ -17965,7 +17997,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject *__pyx_v_self) { npy_intp __pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":359 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":359 * """Returns the total size (in number of elements) of the array. * """ * return PyArray_SIZE(self) # <<<<<<<<<<<<<< @@ -17975,7 +18007,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * __pyx_r = PyArray_SIZE(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":355 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":355 * return PyArray_STRIDES(self) * * @property # <<<<<<<<<<<<<< @@ -17988,7 +18020,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361 * return PyArray_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17999,7 +18031,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__pyx_v_self) { char *__pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368 * of `PyArray_DATA()` instead, which returns a 'void*'. * """ * return PyArray_BYTES(self) # <<<<<<<<<<<<<< @@ -18009,7 +18041,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__p __pyx_r = PyArray_BYTES(__pyx_v_self); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361 * return PyArray_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -18022,7 +18054,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__p return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":776 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":776 * ctypedef long double complex clongdouble_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -18039,7 +18071,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -18053,7 +18085,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":776 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":776 * ctypedef long double complex clongdouble_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -18072,7 +18104,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -18089,7 +18121,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -18103,7 +18135,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -18122,7 +18154,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":782 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":782 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -18139,7 +18171,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -18153,7 +18185,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":782 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":782 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -18172,7 +18204,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -18189,7 +18221,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -18203,7 +18235,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -18222,7 +18254,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":788 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":788 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -18239,7 +18271,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":789 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":789 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -18253,7 +18285,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":788 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":788 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -18272,7 +18304,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":791 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":791 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -18287,7 +18319,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ PyObject *__pyx_t_2; __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -18297,7 +18329,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_t_1 = PyDataType_HASSUBARRAY(__pyx_v_d); if (__pyx_t_1) { - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape # <<<<<<<<<<<<<< @@ -18310,7 +18342,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_r = ((PyObject*)__pyx_t_2); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -18319,7 +18351,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ */ } - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":795 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":795 * return d.subarray.shape * else: * return () # <<<<<<<<<<<<<< @@ -18333,7 +18365,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ goto __pyx_L0; } - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":791 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":791 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -18348,7 +18380,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":994 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":994 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<< @@ -18362,7 +18394,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":995 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":995 * * cdef inline void set_array_base(ndarray arr, object base) except *: * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< @@ -18371,7 +18403,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":996 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":996 * cdef inline void set_array_base(ndarray arr, object base) except *: * Py_INCREF(base) # important to do this before stealing the reference below! * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< @@ -18380,7 +18412,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 996, __pyx_L1_error) - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":994 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":994 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<< @@ -18395,7 +18427,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_L0:; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":998 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":998 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -18410,7 +18442,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":999 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":999 * * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< @@ -18419,7 +18451,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ __pyx_v_base = PyArray_BASE(__pyx_v_arr); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1000 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1000 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -18429,7 +18461,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = (__pyx_v_base == NULL); if (__pyx_t_1) { - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1001 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1001 * base = PyArray_BASE(arr) * if base is NULL: * return None # <<<<<<<<<<<<<< @@ -18440,7 +18472,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1000 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1000 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -18449,7 +18481,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1002 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1002 * if base is NULL: * return None * return base # <<<<<<<<<<<<<< @@ -18461,7 +18493,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = ((PyObject *)__pyx_v_base); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":998 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":998 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -18476,7 +18508,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1006 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1006 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -18502,7 +18534,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_array", 0); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18518,7 +18550,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 * cdef inline int import_array() except -1: * try: * __pyx_import_array() # <<<<<<<<<<<<<< @@ -18527,7 +18559,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { */ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1008, __pyx_L3_error) - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18541,7 +18573,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1009 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1009 * try: * __pyx_import_array() * except Exception: # <<<<<<<<<<<<<< @@ -18556,7 +18588,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1010 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1010 * __pyx_import_array() * except Exception: * raise ImportError("numpy._core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -18578,7 +18610,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { } goto __pyx_L5_except_error; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18594,7 +18626,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_L8_try_end:; } - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1006 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1006 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -18618,7 +18650,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1012 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1012 * raise ImportError("numpy._core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -18644,7 +18676,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_umath", 0); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18660,7 +18692,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -18669,7 +18701,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1014, __pyx_L3_error) - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18683,7 +18715,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1015 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1015 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -18698,7 +18730,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1016 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1016 * _import_umath() * except Exception: * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<< @@ -18720,7 +18752,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { } goto __pyx_L5_except_error; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18736,7 +18768,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_L8_try_end:; } - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1012 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1012 * raise ImportError("numpy._core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -18760,7 +18792,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1018 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1018 * raise ImportError("numpy._core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18786,7 +18818,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18802,7 +18834,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -18811,7 +18843,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1020, __pyx_L3_error) - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18825,7 +18857,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1021 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1021 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -18840,7 +18872,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022 * _import_umath() * except Exception: * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<< @@ -18862,7 +18894,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { } goto __pyx_L5_except_error; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18878,7 +18910,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_L8_try_end:; } - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1018 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1018 * raise ImportError("numpy._core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18902,7 +18934,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1025 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1025 * * * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18913,7 +18945,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) { int __pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1037 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1037 * bool * """ * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<< @@ -18923,7 +18955,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type)); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1025 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1025 * * * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18936,7 +18968,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1040 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1040 * * * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18947,7 +18979,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) { int __pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1052 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1052 * bool * """ * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<< @@ -18957,7 +18989,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type)); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1040 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1040 * * * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18970,7 +19002,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1055 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1055 * * * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18981,7 +19013,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) { npy_datetime __pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1062 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1062 * also needed. That can be found using `get_datetime64_unit`. * """ * return (obj).obval # <<<<<<<<<<<<<< @@ -18991,7 +19023,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval; goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1055 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1055 * * * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -19004,7 +19036,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -19015,7 +19047,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) { npy_timedelta __pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069 * returns the int64 value underlying scalar numpy timedelta64 object * """ * return (obj).obval # <<<<<<<<<<<<<< @@ -19025,7 +19057,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval; goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -19038,7 +19070,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject return __pyx_r; } -/* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1072 +/* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1072 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -19049,7 +19081,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) { NPY_DATETIMEUNIT __pyx_r; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1076 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1076 * returns the unit part of the dtype for a numpy datetime64 object. * """ * return (obj).obmeta.base # <<<<<<<<<<<<<< @@ -19059,7 +19091,7 @@ static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObjec __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base); goto __pyx_L0; - /* "../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1072 + /* "../../../../../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1072 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -19072,7 +19104,7 @@ static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObjec return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":30 +/* "blokus_cython.pyx":30 * cdef public dict _occupied_cache * * def __init__(self, int size): # <<<<<<<<<<<<<< @@ -19081,8 +19113,8 @@ static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObjec */ /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static int __pyx_pw_13blokus_cython_5Board_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_13blokus_cython_5Board_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_v_size; CYTHON_UNUSED Py_ssize_t __pyx_nargs; CYTHON_UNUSED PyObject *const *__pyx_kwvalues; @@ -19134,11 +19166,11 @@ static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_1__init__(PyObject for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board___init__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self), __pyx_v_size); + __pyx_r = __pyx_pf_13blokus_cython_5Board___init__(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self), __pyx_v_size); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -19148,7 +19180,7 @@ static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_1__init__(PyObject return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board___init__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_size) { +static int __pyx_pf_13blokus_cython_5Board___init__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_size) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -19164,7 +19196,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board___init__(struct __ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); - /* "blokus_gym/core/blokus_cython.pyx":31 + /* "blokus_cython.pyx":31 * * def __init__(self, int size): * self.size = size # <<<<<<<<<<<<<< @@ -19173,7 +19205,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board___init__(struct __ */ __pyx_v_self->size = __pyx_v_size; - /* "blokus_gym/core/blokus_cython.pyx":32 + /* "blokus_cython.pyx":32 * def __init__(self, int size): * self.size = size * self.grid = np.zeros((size, size), dtype=np.int8) # <<<<<<<<<<<<<< @@ -19236,7 +19268,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board___init__(struct __ __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; - /* "blokus_gym/core/blokus_cython.pyx":33 + /* "blokus_cython.pyx":33 * self.size = size * self.grid = np.zeros((size, size), dtype=np.int8) * self._occupied_cache = {} # <<<<<<<<<<<<<< @@ -19251,7 +19283,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board___init__(struct __ __pyx_v_self->_occupied_cache = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":30 + /* "blokus_cython.pyx":30 * cdef public dict _occupied_cache * * def __init__(self, int size): # <<<<<<<<<<<<<< @@ -19270,14 +19302,14 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board___init__(struct __ __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __PYX_XCLEAR_MEMVIEW(&__pyx_t_8, 1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":35 +/* "blokus_cython.pyx":35 * self._occupied_cache = {} * * def place(self, int player_idx, list squares): # <<<<<<<<<<<<<< @@ -19286,16 +19318,16 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board___init__(struct __ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_3place(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Board_3place(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_2place, "Place a player's piece on the board."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_3place = {"place", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_3place, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_2place}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_3place(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_5Board_2place, "Place a player's piece on the board."); +static PyMethodDef __pyx_mdef_13blokus_cython_5Board_3place = {"place", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_3place, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_2place}; +static PyObject *__pyx_pw_13blokus_cython_5Board_3place(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -19365,12 +19397,12 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.place", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.place", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_squares), (&PyList_Type), 1, "squares", 1))) __PYX_ERR(0, 35, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self), __pyx_v_player_idx, __pyx_v_squares); + __pyx_r = __pyx_pf_13blokus_cython_5Board_2place(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self), __pyx_v_player_idx, __pyx_v_squares); /* function exit code */ goto __pyx_L0; @@ -19389,7 +19421,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx, PyObject *__pyx_v_squares) { +static PyObject *__pyx_pf_13blokus_cython_5Board_2place(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx, PyObject *__pyx_v_squares) { int __pyx_v_x; int __pyx_v_y; __Pyx_memviewslice __pyx_v_grid_view = { 0, 0, { 0 }, { 0 }, { 0 } }; @@ -19416,7 +19448,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struc int __pyx_clineno = 0; __Pyx_RefNannySetupContext("place", 0); - /* "blokus_gym/core/blokus_cython.pyx":38 + /* "blokus_cython.pyx":38 * """Place a player's piece on the board.""" * cdef int x, y * cdef cnp.int8_t[:, :] grid_view = self.grid # <<<<<<<<<<<<<< @@ -19430,7 +19462,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struc __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL; - /* "blokus_gym/core/blokus_cython.pyx":39 + /* "blokus_cython.pyx":39 * cdef int x, y * cdef cnp.int8_t[:, :] grid_view = self.grid * cdef int size = self.size # <<<<<<<<<<<<<< @@ -19440,7 +19472,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struc __pyx_t_2 = __pyx_v_self->size; __pyx_v_size = __pyx_t_2; - /* "blokus_gym/core/blokus_cython.pyx":41 + /* "blokus_cython.pyx":41 * cdef int size = self.size * * for x, y in squares: # <<<<<<<<<<<<<< @@ -19522,7 +19554,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struc __pyx_v_x = __pyx_t_2; __pyx_v_y = __pyx_t_10; - /* "blokus_gym/core/blokus_cython.pyx":42 + /* "blokus_cython.pyx":42 * * for x, y in squares: * if 0 <= x < size and 0 <= y < size: # <<<<<<<<<<<<<< @@ -19546,7 +19578,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struc __pyx_L8_bool_binop_done:; if (__pyx_t_11) { - /* "blokus_gym/core/blokus_cython.pyx":43 + /* "blokus_cython.pyx":43 * for x, y in squares: * if 0 <= x < size and 0 <= y < size: * grid_view[y, x] = player_idx # <<<<<<<<<<<<<< @@ -19570,7 +19602,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struc } *((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_grid_view.data + __pyx_t_13 * __pyx_v_grid_view.strides[0]) ) + __pyx_t_14 * __pyx_v_grid_view.strides[1]) )) = __pyx_v_player_idx; - /* "blokus_gym/core/blokus_cython.pyx":42 + /* "blokus_cython.pyx":42 * * for x, y in squares: * if 0 <= x < size and 0 <= y < size: # <<<<<<<<<<<<<< @@ -19579,7 +19611,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struc */ } - /* "blokus_gym/core/blokus_cython.pyx":41 + /* "blokus_cython.pyx":41 * cdef int size = self.size * * for x, y in squares: # <<<<<<<<<<<<<< @@ -19589,7 +19621,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struc } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":46 + /* "blokus_cython.pyx":46 * * # Update occupied cache incrementally * if player_idx in self._occupied_cache: # <<<<<<<<<<<<<< @@ -19606,7 +19638,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struc __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_11) { - /* "blokus_gym/core/blokus_cython.pyx":47 + /* "blokus_cython.pyx":47 * # Update occupied cache incrementally * if player_idx in self._occupied_cache: * self._occupied_cache[player_idx].update(squares) # <<<<<<<<<<<<<< @@ -19635,7 +19667,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struc } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":46 + /* "blokus_cython.pyx":46 * * # Update occupied cache incrementally * if player_idx in self._occupied_cache: # <<<<<<<<<<<<<< @@ -19644,7 +19676,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struc */ } - /* "blokus_gym/core/blokus_cython.pyx":35 + /* "blokus_cython.pyx":35 * self._occupied_cache = {} * * def place(self, int player_idx, list squares): # <<<<<<<<<<<<<< @@ -19662,7 +19694,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struc __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.place", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.place", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XCLEAR_MEMVIEW(&__pyx_v_grid_view, 1); @@ -19671,7 +19703,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struc return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":49 +/* "blokus_cython.pyx":49 * self._occupied_cache[player_idx].update(squares) * * def clear(self) -> None: # <<<<<<<<<<<<<< @@ -19680,16 +19712,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_2place(struc */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_5clear(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Board_5clear(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_4clear, "Reset the board to empty."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_5clear = {"clear", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_5clear, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_4clear}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_5clear(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_5Board_4clear, "Reset the board to empty."); +static PyMethodDef __pyx_mdef_13blokus_cython_5Board_5clear = {"clear", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_5clear, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_4clear}; +static PyObject *__pyx_pw_13blokus_cython_5Board_5clear(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -19715,14 +19747,14 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("clear", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4clear(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Board_4clear(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4clear(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_5Board_4clear(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -19734,7 +19766,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4clear(struc int __pyx_clineno = 0; __Pyx_RefNannySetupContext("clear", 0); - /* "blokus_gym/core/blokus_cython.pyx":51 + /* "blokus_cython.pyx":51 * def clear(self) -> None: * """Reset the board to empty.""" * self.grid.fill(0) # <<<<<<<<<<<<<< @@ -19757,7 +19789,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4clear(struc } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":49 + /* "blokus_cython.pyx":49 * self._occupied_cache[player_idx].update(squares) * * def clear(self) -> None: # <<<<<<<<<<<<<< @@ -19772,7 +19804,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4clear(struc __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.clear", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.clear", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -19780,7 +19812,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4clear(struc return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":53 +/* "blokus_cython.pyx":53 * self.grid.fill(0) * * def is_empty(self, int x, int y) -> bool: # <<<<<<<<<<<<<< @@ -19789,16 +19821,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4clear(struc */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_7is_empty(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Board_7is_empty(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_6is_empty, "Check if a cell is empty (C-level fast)."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_7is_empty = {"is_empty", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_7is_empty, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_6is_empty}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_7is_empty(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_5Board_6is_empty, "Check if a cell is empty (C-level fast)."); +static PyMethodDef __pyx_mdef_13blokus_cython_5Board_7is_empty = {"is_empty", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_7is_empty, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_6is_empty}; +static PyObject *__pyx_pw_13blokus_cython_5Board_7is_empty(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -19868,11 +19900,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.is_empty", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.is_empty", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_6is_empty(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self), __pyx_v_x, __pyx_v_y); + __pyx_r = __pyx_pf_13blokus_cython_5Board_6is_empty(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self), __pyx_v_x, __pyx_v_y); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -19882,7 +19914,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_6is_empty(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y) { +static PyObject *__pyx_pf_13blokus_cython_5Board_6is_empty(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y) { __Pyx_memviewslice __pyx_v_grid_view = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_size; PyObject *__pyx_r = NULL; @@ -19899,7 +19931,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_6is_empty(st int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_empty", 0); - /* "blokus_gym/core/blokus_cython.pyx":55 + /* "blokus_cython.pyx":55 * def is_empty(self, int x, int y) -> bool: * """Check if a cell is empty (C-level fast).""" * cdef cnp.int8_t[:, :] grid_view = self.grid # <<<<<<<<<<<<<< @@ -19913,7 +19945,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_6is_empty(st __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL; - /* "blokus_gym/core/blokus_cython.pyx":56 + /* "blokus_cython.pyx":56 * """Check if a cell is empty (C-level fast).""" * cdef cnp.int8_t[:, :] grid_view = self.grid * cdef int size = self.size # <<<<<<<<<<<<<< @@ -19923,7 +19955,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_6is_empty(st __pyx_t_2 = __pyx_v_self->size; __pyx_v_size = __pyx_t_2; - /* "blokus_gym/core/blokus_cython.pyx":58 + /* "blokus_cython.pyx":58 * cdef int size = self.size * * if 0 <= x < size and 0 <= y < size: # <<<<<<<<<<<<<< @@ -19947,7 +19979,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_6is_empty(st __pyx_L4_bool_binop_done:; if (__pyx_t_3) { - /* "blokus_gym/core/blokus_cython.pyx":59 + /* "blokus_cython.pyx":59 * * if 0 <= x < size and 0 <= y < size: * return grid_view[y, x] == 0 # <<<<<<<<<<<<<< @@ -19976,7 +20008,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_6is_empty(st __pyx_t_7 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":58 + /* "blokus_cython.pyx":58 * cdef int size = self.size * * if 0 <= x < size and 0 <= y < size: # <<<<<<<<<<<<<< @@ -19985,7 +20017,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_6is_empty(st */ } - /* "blokus_gym/core/blokus_cython.pyx":60 + /* "blokus_cython.pyx":60 * if 0 <= x < size and 0 <= y < size: * return grid_view[y, x] == 0 * return False # <<<<<<<<<<<<<< @@ -19997,7 +20029,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_6is_empty(st __pyx_r = Py_False; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":53 + /* "blokus_cython.pyx":53 * self.grid.fill(0) * * def is_empty(self, int x, int y) -> bool: # <<<<<<<<<<<<<< @@ -20009,7 +20041,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_6is_empty(st __pyx_L1_error:; __PYX_XCLEAR_MEMVIEW(&__pyx_t_1, 1); __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.is_empty", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.is_empty", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XCLEAR_MEMVIEW(&__pyx_v_grid_view, 1); @@ -20018,7 +20050,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_6is_empty(st return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":62 +/* "blokus_cython.pyx":62 * return False * * def in_bounds(self, int x, int y) -> bool: # <<<<<<<<<<<<<< @@ -20027,16 +20059,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_6is_empty(st */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_9in_bounds(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Board_9in_bounds(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_8in_bounds, "Check if coordinates are within the board (C-level fast)."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_9in_bounds = {"in_bounds", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_9in_bounds, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_8in_bounds}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_9in_bounds(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_5Board_8in_bounds, "Check if coordinates are within the board (C-level fast)."); +static PyMethodDef __pyx_mdef_13blokus_cython_5Board_9in_bounds = {"in_bounds", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_9in_bounds, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_8in_bounds}; +static PyObject *__pyx_pw_13blokus_cython_5Board_9in_bounds(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -20106,11 +20138,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.in_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.in_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_8in_bounds(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self), __pyx_v_x, __pyx_v_y); + __pyx_r = __pyx_pf_13blokus_cython_5Board_8in_bounds(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self), __pyx_v_x, __pyx_v_y); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -20120,7 +20152,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_8in_bounds(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y) { +static PyObject *__pyx_pf_13blokus_cython_5Board_8in_bounds(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y) { int __pyx_v_size; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -20133,7 +20165,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_8in_bounds(s int __pyx_clineno = 0; __Pyx_RefNannySetupContext("in_bounds", 0); - /* "blokus_gym/core/blokus_cython.pyx":64 + /* "blokus_cython.pyx":64 * def in_bounds(self, int x, int y) -> bool: * """Check if coordinates are within the board (C-level fast).""" * cdef int size = self.size # <<<<<<<<<<<<<< @@ -20143,7 +20175,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_8in_bounds(s __pyx_t_1 = __pyx_v_self->size; __pyx_v_size = __pyx_t_1; - /* "blokus_gym/core/blokus_cython.pyx":65 + /* "blokus_cython.pyx":65 * """Check if coordinates are within the board (C-level fast).""" * cdef int size = self.size * return 0 <= x < size and 0 <= y < size # <<<<<<<<<<<<<< @@ -20176,7 +20208,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_8in_bounds(s __pyx_t_2 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":62 + /* "blokus_cython.pyx":62 * return False * * def in_bounds(self, int x, int y) -> bool: # <<<<<<<<<<<<<< @@ -20188,7 +20220,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_8in_bounds(s __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.in_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.in_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -20196,7 +20228,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_8in_bounds(s return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":67 +/* "blokus_cython.pyx":67 * return 0 <= x < size and 0 <= y < size * * def has_overlap(self, list squares) -> bool: # <<<<<<<<<<<<<< @@ -20205,16 +20237,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_8in_bounds(s */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_11has_overlap(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Board_11has_overlap(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_10has_overlap, "Check if any square is already occupied (C-level fast)."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_11has_overlap = {"has_overlap", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_11has_overlap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_10has_overlap}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_11has_overlap(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_5Board_10has_overlap, "Check if any square is already occupied (C-level fast)."); +static PyMethodDef __pyx_mdef_13blokus_cython_5Board_11has_overlap = {"has_overlap", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_11has_overlap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_10has_overlap}; +static PyObject *__pyx_pw_13blokus_cython_5Board_11has_overlap(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -20276,12 +20308,12 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.has_overlap", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.has_overlap", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_squares), (&PyList_Type), 1, "squares", 1))) __PYX_ERR(0, 67, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overlap(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self), __pyx_v_squares); + __pyx_r = __pyx_pf_13blokus_cython_5Board_10has_overlap(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self), __pyx_v_squares); /* function exit code */ goto __pyx_L0; @@ -20300,7 +20332,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overlap(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_squares) { +static PyObject *__pyx_pf_13blokus_cython_5Board_10has_overlap(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_squares) { int __pyx_v_x; int __pyx_v_y; __Pyx_memviewslice __pyx_v_grid_view = { 0, 0, { 0 }, { 0 }, { 0 } }; @@ -20327,7 +20359,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overla int __pyx_clineno = 0; __Pyx_RefNannySetupContext("has_overlap", 0); - /* "blokus_gym/core/blokus_cython.pyx":70 + /* "blokus_cython.pyx":70 * """Check if any square is already occupied (C-level fast).""" * cdef int x, y * cdef cnp.int8_t[:, :] grid_view = self.grid # <<<<<<<<<<<<<< @@ -20341,7 +20373,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overla __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL; - /* "blokus_gym/core/blokus_cython.pyx":71 + /* "blokus_cython.pyx":71 * cdef int x, y * cdef cnp.int8_t[:, :] grid_view = self.grid * cdef int size = self.size # <<<<<<<<<<<<<< @@ -20351,7 +20383,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overla __pyx_t_2 = __pyx_v_self->size; __pyx_v_size = __pyx_t_2; - /* "blokus_gym/core/blokus_cython.pyx":73 + /* "blokus_cython.pyx":73 * cdef int size = self.size * * for x, y in squares: # <<<<<<<<<<<<<< @@ -20433,7 +20465,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overla __pyx_v_x = __pyx_t_2; __pyx_v_y = __pyx_t_10; - /* "blokus_gym/core/blokus_cython.pyx":74 + /* "blokus_cython.pyx":74 * * for x, y in squares: * if not (0 <= x < size and 0 <= y < size) or grid_view[y, x] != 0: # <<<<<<<<<<<<<< @@ -20481,7 +20513,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overla __pyx_L8_bool_binop_done:; if (__pyx_t_11) { - /* "blokus_gym/core/blokus_cython.pyx":75 + /* "blokus_cython.pyx":75 * for x, y in squares: * if not (0 <= x < size and 0 <= y < size) or grid_view[y, x] != 0: * return True # <<<<<<<<<<<<<< @@ -20494,7 +20526,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overla __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":74 + /* "blokus_cython.pyx":74 * * for x, y in squares: * if not (0 <= x < size and 0 <= y < size) or grid_view[y, x] != 0: # <<<<<<<<<<<<<< @@ -20503,7 +20535,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overla */ } - /* "blokus_gym/core/blokus_cython.pyx":73 + /* "blokus_cython.pyx":73 * cdef int size = self.size * * for x, y in squares: # <<<<<<<<<<<<<< @@ -20513,7 +20545,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overla } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":76 + /* "blokus_cython.pyx":76 * if not (0 <= x < size and 0 <= y < size) or grid_view[y, x] != 0: * return True * return False # <<<<<<<<<<<<<< @@ -20525,7 +20557,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overla __pyx_r = Py_False; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":67 + /* "blokus_cython.pyx":67 * return 0 <= x < size and 0 <= y < size * * def has_overlap(self, list squares) -> bool: # <<<<<<<<<<<<<< @@ -20541,7 +20573,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overla __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.has_overlap", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.has_overlap", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XCLEAR_MEMVIEW(&__pyx_v_grid_view, 1); @@ -20550,7 +20582,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overla return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":78 +/* "blokus_cython.pyx":78 * return False * * cdef bint is_cell_empty(self, int x, int y): # <<<<<<<<<<<<<< @@ -20558,7 +20590,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_10has_overla * cdef cnp.int8_t[:, :] grid_view = self.grid */ -static int __pyx_f_10blokus_gym_4core_13blokus_cython_5Board_is_cell_empty(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y) { +static int __pyx_f_13blokus_cython_5Board_is_cell_empty(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y) { __Pyx_memviewslice __pyx_v_grid_view = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_size; int __pyx_r; @@ -20572,7 +20604,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_5Board_is_cell_empty(struc const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* "blokus_gym/core/blokus_cython.pyx":80 + /* "blokus_cython.pyx":80 * cdef bint is_cell_empty(self, int x, int y): * """Check if a cell is empty (C-level fast, inlineable).""" * cdef cnp.int8_t[:, :] grid_view = self.grid # <<<<<<<<<<<<<< @@ -20586,7 +20618,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_5Board_is_cell_empty(struc __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL; - /* "blokus_gym/core/blokus_cython.pyx":81 + /* "blokus_cython.pyx":81 * """Check if a cell is empty (C-level fast, inlineable).""" * cdef cnp.int8_t[:, :] grid_view = self.grid * cdef int size = self.size # <<<<<<<<<<<<<< @@ -20596,7 +20628,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_5Board_is_cell_empty(struc __pyx_t_2 = __pyx_v_self->size; __pyx_v_size = __pyx_t_2; - /* "blokus_gym/core/blokus_cython.pyx":83 + /* "blokus_cython.pyx":83 * cdef int size = self.size * * return 0 <= x < size and 0 <= y < size and grid_view[y, x] == 0 # <<<<<<<<<<<<<< @@ -20642,7 +20674,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_5Board_is_cell_empty(struc __pyx_r = __pyx_t_3; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":78 + /* "blokus_cython.pyx":78 * return False * * cdef bint is_cell_empty(self, int x, int y): # <<<<<<<<<<<<<< @@ -20653,14 +20685,14 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_5Board_is_cell_empty(struc /* function exit code */ __pyx_L1_error:; __PYX_XCLEAR_MEMVIEW(&__pyx_t_1, 1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.is_cell_empty", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.is_cell_empty", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __PYX_XCLEAR_MEMVIEW(&__pyx_v_grid_view, 1); return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":85 +/* "blokus_cython.pyx":85 * return 0 <= x < size and 0 <= y < size and grid_view[y, x] == 0 * * def get_cell(self, int x, int y) -> int: # <<<<<<<<<<<<<< @@ -20669,16 +20701,16 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_5Board_is_cell_empty(struc */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_13get_cell(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Board_13get_cell(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_12get_cell, "Get the player index at a cell (0 = empty)."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_13get_cell = {"get_cell", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_13get_cell, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_12get_cell}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_13get_cell(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_5Board_12get_cell, "Get the player index at a cell (0 = empty)."); +static PyMethodDef __pyx_mdef_13blokus_cython_5Board_13get_cell = {"get_cell", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_13get_cell, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_12get_cell}; +static PyObject *__pyx_pw_13blokus_cython_5Board_13get_cell(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -20748,11 +20780,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.get_cell", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.get_cell", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_12get_cell(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self), __pyx_v_x, __pyx_v_y); + __pyx_r = __pyx_pf_13blokus_cython_5Board_12get_cell(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self), __pyx_v_x, __pyx_v_y); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -20762,7 +20794,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_12get_cell(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y) { +static PyObject *__pyx_pf_13blokus_cython_5Board_12get_cell(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_x, int __pyx_v_y) { __Pyx_memviewslice __pyx_v_grid_view = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_size; PyObject *__pyx_r = NULL; @@ -20779,7 +20811,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_12get_cell(s int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_cell", 0); - /* "blokus_gym/core/blokus_cython.pyx":87 + /* "blokus_cython.pyx":87 * def get_cell(self, int x, int y) -> int: * """Get the player index at a cell (0 = empty).""" * cdef cnp.int8_t[:, :] grid_view = self.grid # <<<<<<<<<<<<<< @@ -20793,7 +20825,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_12get_cell(s __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL; - /* "blokus_gym/core/blokus_cython.pyx":88 + /* "blokus_cython.pyx":88 * """Get the player index at a cell (0 = empty).""" * cdef cnp.int8_t[:, :] grid_view = self.grid * cdef int size = self.size # <<<<<<<<<<<<<< @@ -20803,7 +20835,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_12get_cell(s __pyx_t_2 = __pyx_v_self->size; __pyx_v_size = __pyx_t_2; - /* "blokus_gym/core/blokus_cython.pyx":90 + /* "blokus_cython.pyx":90 * cdef int size = self.size * * if 0 <= x < size and 0 <= y < size: # <<<<<<<<<<<<<< @@ -20827,7 +20859,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_12get_cell(s __pyx_L4_bool_binop_done:; if (__pyx_t_3) { - /* "blokus_gym/core/blokus_cython.pyx":91 + /* "blokus_cython.pyx":91 * * if 0 <= x < size and 0 <= y < size: * return grid_view[y, x] # <<<<<<<<<<<<<< @@ -20857,7 +20889,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_12get_cell(s __pyx_t_7 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":90 + /* "blokus_cython.pyx":90 * cdef int size = self.size * * if 0 <= x < size and 0 <= y < size: # <<<<<<<<<<<<<< @@ -20866,7 +20898,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_12get_cell(s */ } - /* "blokus_gym/core/blokus_cython.pyx":92 + /* "blokus_cython.pyx":92 * if 0 <= x < size and 0 <= y < size: * return grid_view[y, x] * return 0 # <<<<<<<<<<<<<< @@ -20878,7 +20910,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_12get_cell(s __pyx_r = __pyx_mstate_global->__pyx_int_0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":85 + /* "blokus_cython.pyx":85 * return 0 <= x < size and 0 <= y < size and grid_view[y, x] == 0 * * def get_cell(self, int x, int y) -> int: # <<<<<<<<<<<<<< @@ -20890,7 +20922,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_12get_cell(s __pyx_L1_error:; __PYX_XCLEAR_MEMVIEW(&__pyx_t_1, 1); __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.get_cell", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.get_cell", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XCLEAR_MEMVIEW(&__pyx_v_grid_view, 1); @@ -20899,7 +20931,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_12get_cell(s return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":94 +/* "blokus_cython.pyx":94 * return 0 * * def get_player_squares(self, int player_idx) -> list: # <<<<<<<<<<<<<< @@ -20908,16 +20940,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_12get_cell(s */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_15get_player_squares(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Board_15get_player_squares(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_14get_player_squares, "Get all squares occupied by a player."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_15get_player_squares = {"get_player_squares", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_15get_player_squares, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_14get_player_squares}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_15get_player_squares(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_5Board_14get_player_squares, "Get all squares occupied by a player."); +static PyMethodDef __pyx_mdef_13blokus_cython_5Board_15get_player_squares = {"get_player_squares", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_15get_player_squares, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_14get_player_squares}; +static PyObject *__pyx_pw_13blokus_cython_5Board_15get_player_squares(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -20979,11 +21011,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.get_player_squares", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.get_player_squares", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player_squares(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self), __pyx_v_player_idx); + __pyx_r = __pyx_pf_13blokus_cython_5Board_14get_player_squares(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self), __pyx_v_player_idx); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -20993,7 +21025,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player_squares(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx) { +static PyObject *__pyx_pf_13blokus_cython_5Board_14get_player_squares(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx) { __Pyx_memviewslice __pyx_v_grid_view = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_size; PyObject *__pyx_v_result = 0; @@ -21021,7 +21053,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_player_squares", 0); - /* "blokus_gym/core/blokus_cython.pyx":96 + /* "blokus_cython.pyx":96 * def get_player_squares(self, int player_idx) -> list: * """Get all squares occupied by a player.""" * cdef cnp.int8_t[:, :] grid_view = self.grid # <<<<<<<<<<<<<< @@ -21035,7 +21067,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL; - /* "blokus_gym/core/blokus_cython.pyx":97 + /* "blokus_cython.pyx":97 * """Get all squares occupied by a player.""" * cdef cnp.int8_t[:, :] grid_view = self.grid * cdef int size = self.size # <<<<<<<<<<<<<< @@ -21045,7 +21077,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player __pyx_t_2 = __pyx_v_self->size; __pyx_v_size = __pyx_t_2; - /* "blokus_gym/core/blokus_cython.pyx":98 + /* "blokus_cython.pyx":98 * cdef cnp.int8_t[:, :] grid_view = self.grid * cdef int size = self.size * cdef list result = [] # <<<<<<<<<<<<<< @@ -21057,7 +21089,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player __pyx_v_result = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":101 + /* "blokus_cython.pyx":101 * cdef int x, y * * for y in range(size): # <<<<<<<<<<<<<< @@ -21069,7 +21101,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_y = __pyx_t_5; - /* "blokus_gym/core/blokus_cython.pyx":102 + /* "blokus_cython.pyx":102 * * for y in range(size): * for x in range(size): # <<<<<<<<<<<<<< @@ -21081,7 +21113,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_x = __pyx_t_8; - /* "blokus_gym/core/blokus_cython.pyx":103 + /* "blokus_cython.pyx":103 * for y in range(size): * for x in range(size): * if grid_view[y, x] == player_idx: # <<<<<<<<<<<<<< @@ -21106,7 +21138,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player __pyx_t_12 = ((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_grid_view.data + __pyx_t_9 * __pyx_v_grid_view.strides[0]) ) + __pyx_t_10 * __pyx_v_grid_view.strides[1]) ))) == __pyx_v_player_idx); if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":104 + /* "blokus_cython.pyx":104 * for x in range(size): * if grid_view[y, x] == player_idx: * result.append((x, y)) # <<<<<<<<<<<<<< @@ -21128,7 +21160,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_14); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 104, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - /* "blokus_gym/core/blokus_cython.pyx":103 + /* "blokus_cython.pyx":103 * for y in range(size): * for x in range(size): * if grid_view[y, x] == player_idx: # <<<<<<<<<<<<<< @@ -21139,7 +21171,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player } } - /* "blokus_gym/core/blokus_cython.pyx":105 + /* "blokus_cython.pyx":105 * if grid_view[y, x] == player_idx: * result.append((x, y)) * return result # <<<<<<<<<<<<<< @@ -21151,7 +21183,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player __pyx_r = __pyx_v_result; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":94 + /* "blokus_cython.pyx":94 * return 0 * * def get_player_squares(self, int player_idx) -> list: # <<<<<<<<<<<<<< @@ -21165,7 +21197,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_13); __Pyx_XDECREF(__pyx_t_14); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.get_player_squares", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.get_player_squares", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XCLEAR_MEMVIEW(&__pyx_v_grid_view, 1); @@ -21175,7 +21207,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":107 +/* "blokus_cython.pyx":107 * return result * * def get_player_occupied(self, int player_idx) -> set: # <<<<<<<<<<<<<< @@ -21184,16 +21216,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_14get_player */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_17get_player_occupied(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Board_17get_player_occupied(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_16get_player_occupied, "Get all squares occupied by a player as a set."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_17get_player_occupied = {"get_player_occupied", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_17get_player_occupied, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_16get_player_occupied}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_17get_player_occupied(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_5Board_16get_player_occupied, "Get all squares occupied by a player as a set."); +static PyMethodDef __pyx_mdef_13blokus_cython_5Board_17get_player_occupied = {"get_player_occupied", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_17get_player_occupied, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_16get_player_occupied}; +static PyObject *__pyx_pw_13blokus_cython_5Board_17get_player_occupied(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -21255,11 +21287,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.get_player_occupied", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.get_player_occupied", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_16get_player_occupied(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self), __pyx_v_player_idx); + __pyx_r = __pyx_pf_13blokus_cython_5Board_16get_player_occupied(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self), __pyx_v_player_idx); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -21269,7 +21301,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_16get_player_occupied(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx) { +static PyObject *__pyx_pf_13blokus_cython_5Board_16get_player_occupied(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -21282,7 +21314,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_16get_player int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_player_occupied", 0); - /* "blokus_gym/core/blokus_cython.pyx":109 + /* "blokus_cython.pyx":109 * def get_player_occupied(self, int player_idx) -> set: * """Get all squares occupied by a player as a set.""" * if player_idx not in self._occupied_cache: # <<<<<<<<<<<<<< @@ -21299,7 +21331,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_16get_player __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { - /* "blokus_gym/core/blokus_cython.pyx":110 + /* "blokus_cython.pyx":110 * """Get all squares occupied by a player as a set.""" * if player_idx not in self._occupied_cache: * self._occupied_cache[player_idx] = set(self.get_player_squares(player_idx)) # <<<<<<<<<<<<<< @@ -21332,7 +21364,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_16get_player __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":109 + /* "blokus_cython.pyx":109 * def get_player_occupied(self, int player_idx) -> set: * """Get all squares occupied by a player as a set.""" * if player_idx not in self._occupied_cache: # <<<<<<<<<<<<<< @@ -21341,7 +21373,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_16get_player */ } - /* "blokus_gym/core/blokus_cython.pyx":111 + /* "blokus_cython.pyx":111 * if player_idx not in self._occupied_cache: * self._occupied_cache[player_idx] = set(self.get_player_squares(player_idx)) * return self._occupied_cache[player_idx] # <<<<<<<<<<<<<< @@ -21363,7 +21395,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_16get_player __pyx_t_1 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":107 + /* "blokus_cython.pyx":107 * return result * * def get_player_occupied(self, int player_idx) -> set: # <<<<<<<<<<<<<< @@ -21376,7 +21408,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_16get_player __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.get_player_occupied", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.get_player_occupied", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -21384,7 +21416,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_16get_player return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":113 +/* "blokus_cython.pyx":113 * return self._occupied_cache[player_idx] * * def get_player_corners(self, int player_idx) -> set: # <<<<<<<<<<<<<< @@ -21393,16 +21425,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_16get_player */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_19get_player_corners(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Board_19get_player_corners(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_18get_player_corners, "Get all corner cells adjacent to a player's pieces."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_19get_player_corners = {"get_player_corners", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_19get_player_corners, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_18get_player_corners}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_19get_player_corners(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_5Board_18get_player_corners, "Get all corner cells adjacent to a player's pieces."); +static PyMethodDef __pyx_mdef_13blokus_cython_5Board_19get_player_corners = {"get_player_corners", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_19get_player_corners, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_18get_player_corners}; +static PyObject *__pyx_pw_13blokus_cython_5Board_19get_player_corners(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -21464,11 +21496,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.get_player_corners", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.get_player_corners", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player_corners(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self), __pyx_v_player_idx); + __pyx_r = __pyx_pf_13blokus_cython_5Board_18get_player_corners(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self), __pyx_v_player_idx); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -21478,7 +21510,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player_corners(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx) { +static PyObject *__pyx_pf_13blokus_cython_5Board_18get_player_corners(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, int __pyx_v_player_idx) { __Pyx_memviewslice __pyx_v_grid_view = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_size; PyObject *__pyx_v_corners = 0; @@ -21513,7 +21545,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_player_corners", 0); - /* "blokus_gym/core/blokus_cython.pyx":115 + /* "blokus_cython.pyx":115 * def get_player_corners(self, int player_idx) -> set: * """Get all corner cells adjacent to a player's pieces.""" * cdef cnp.int8_t[:, :] grid_view = self.grid # <<<<<<<<<<<<<< @@ -21527,7 +21559,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL; - /* "blokus_gym/core/blokus_cython.pyx":116 + /* "blokus_cython.pyx":116 * """Get all corner cells adjacent to a player's pieces.""" * cdef cnp.int8_t[:, :] grid_view = self.grid * cdef int size = self.size # <<<<<<<<<<<<<< @@ -21537,7 +21569,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player __pyx_t_2 = __pyx_v_self->size; __pyx_v_size = __pyx_t_2; - /* "blokus_gym/core/blokus_cython.pyx":117 + /* "blokus_cython.pyx":117 * cdef cnp.int8_t[:, :] grid_view = self.grid * cdef int size = self.size * cdef set corners = set() # <<<<<<<<<<<<<< @@ -21549,7 +21581,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player __pyx_v_corners = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":118 + /* "blokus_cython.pyx":118 * cdef int size = self.size * cdef set corners = set() * cdef list player_squares = self.get_player_squares(player_idx) # <<<<<<<<<<<<<< @@ -21573,7 +21605,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player __pyx_v_player_squares = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":121 + /* "blokus_cython.pyx":121 * cdef int x, y, dx, dy, cx, cy * * for x, y in player_squares: # <<<<<<<<<<<<<< @@ -21655,7 +21687,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player __pyx_v_x = __pyx_t_2; __pyx_v_y = __pyx_t_11; - /* "blokus_gym/core/blokus_cython.pyx":122 + /* "blokus_cython.pyx":122 * * for x, y in player_squares: * for dx, dy in [(-1, -1), (1, -1), (-1, 1), (1, 1)]: # <<<<<<<<<<<<<< @@ -21704,7 +21736,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player __pyx_v_dx = __pyx_t_11; __pyx_v_dy = __pyx_t_2; - /* "blokus_gym/core/blokus_cython.pyx":123 + /* "blokus_cython.pyx":123 * for x, y in player_squares: * for dx, dy in [(-1, -1), (1, -1), (-1, 1), (1, 1)]: * cx, cy = x + dx, y + dy # <<<<<<<<<<<<<< @@ -21716,7 +21748,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player __pyx_v_cx = __pyx_t_2; __pyx_v_cy = __pyx_t_11; - /* "blokus_gym/core/blokus_cython.pyx":124 + /* "blokus_cython.pyx":124 * for dx, dy in [(-1, -1), (1, -1), (-1, 1), (1, 1)]: * cx, cy = x + dx, y + dy * if 0 <= cx < size and 0 <= cy < size and grid_view[cy, cx] == 0: # <<<<<<<<<<<<<< @@ -21761,7 +21793,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player __pyx_L10_bool_binop_done:; if (__pyx_t_13) { - /* "blokus_gym/core/blokus_cython.pyx":125 + /* "blokus_cython.pyx":125 * cx, cy = x + dx, y + dy * if 0 <= cx < size and 0 <= cy < size and grid_view[cy, cx] == 0: * corners.add((cx, cy)) # <<<<<<<<<<<<<< @@ -21783,7 +21815,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player __pyx_t_17 = PySet_Add(__pyx_v_corners, __pyx_t_4); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":124 + /* "blokus_cython.pyx":124 * for dx, dy in [(-1, -1), (1, -1), (-1, 1), (1, 1)]: * cx, cy = x + dx, y + dy * if 0 <= cx < size and 0 <= cy < size and grid_view[cy, cx] == 0: # <<<<<<<<<<<<<< @@ -21792,7 +21824,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player */ } - /* "blokus_gym/core/blokus_cython.pyx":122 + /* "blokus_cython.pyx":122 * * for x, y in player_squares: * for dx, dy in [(-1, -1), (1, -1), (-1, 1), (1, 1)]: # <<<<<<<<<<<<<< @@ -21802,7 +21834,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":121 + /* "blokus_cython.pyx":121 * cdef int x, y, dx, dy, cx, cy * * for x, y in player_squares: # <<<<<<<<<<<<<< @@ -21812,7 +21844,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":126 + /* "blokus_cython.pyx":126 * if 0 <= cx < size and 0 <= cy < size and grid_view[cy, cx] == 0: * corners.add((cx, cy)) * return corners # <<<<<<<<<<<<<< @@ -21824,7 +21856,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player __pyx_r = __pyx_v_corners; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":113 + /* "blokus_cython.pyx":113 * return self._occupied_cache[player_idx] * * def get_player_corners(self, int player_idx) -> set: # <<<<<<<<<<<<<< @@ -21840,7 +21872,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.get_player_corners", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.get_player_corners", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XCLEAR_MEMVIEW(&__pyx_v_grid_view, 1); @@ -21851,7 +21883,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":128 +/* "blokus_cython.pyx":128 * return corners * * def get_occupied(self) -> set: # <<<<<<<<<<<<<< @@ -21860,16 +21892,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_18get_player */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_21get_occupied(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Board_21get_occupied(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_20get_occupied, "Get all occupied cells."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_21get_occupied = {"get_occupied", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_21get_occupied, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_20get_occupied}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_21get_occupied(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_5Board_20get_occupied, "Get all occupied cells."); +static PyMethodDef __pyx_mdef_13blokus_cython_5Board_21get_occupied = {"get_occupied", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_21get_occupied, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_20get_occupied}; +static PyObject *__pyx_pw_13blokus_cython_5Board_21get_occupied(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -21895,14 +21927,14 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("get_occupied", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupied(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Board_20get_occupied(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupied(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_5Board_20get_occupied(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self) { __Pyx_memviewslice __pyx_v_grid_view = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_size; PyObject *__pyx_v_result = 0; @@ -21930,7 +21962,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupi int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_occupied", 0); - /* "blokus_gym/core/blokus_cython.pyx":130 + /* "blokus_cython.pyx":130 * def get_occupied(self) -> set: * """Get all occupied cells.""" * cdef cnp.int8_t[:, :] grid_view = self.grid # <<<<<<<<<<<<<< @@ -21944,7 +21976,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupi __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL; - /* "blokus_gym/core/blokus_cython.pyx":131 + /* "blokus_cython.pyx":131 * """Get all occupied cells.""" * cdef cnp.int8_t[:, :] grid_view = self.grid * cdef int size = self.size # <<<<<<<<<<<<<< @@ -21954,7 +21986,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupi __pyx_t_2 = __pyx_v_self->size; __pyx_v_size = __pyx_t_2; - /* "blokus_gym/core/blokus_cython.pyx":132 + /* "blokus_cython.pyx":132 * cdef cnp.int8_t[:, :] grid_view = self.grid * cdef int size = self.size * cdef set result = set() # <<<<<<<<<<<<<< @@ -21966,7 +21998,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupi __pyx_v_result = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":135 + /* "blokus_cython.pyx":135 * cdef int x, y * * for y in range(size): # <<<<<<<<<<<<<< @@ -21978,7 +22010,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupi for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_y = __pyx_t_5; - /* "blokus_gym/core/blokus_cython.pyx":136 + /* "blokus_cython.pyx":136 * * for y in range(size): * for x in range(size): # <<<<<<<<<<<<<< @@ -21990,7 +22022,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupi for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_x = __pyx_t_8; - /* "blokus_gym/core/blokus_cython.pyx":137 + /* "blokus_cython.pyx":137 * for y in range(size): * for x in range(size): * if grid_view[y, x] != 0: # <<<<<<<<<<<<<< @@ -22015,7 +22047,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupi __pyx_t_12 = ((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_grid_view.data + __pyx_t_9 * __pyx_v_grid_view.strides[0]) ) + __pyx_t_10 * __pyx_v_grid_view.strides[1]) ))) != 0); if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":138 + /* "blokus_cython.pyx":138 * for x in range(size): * if grid_view[y, x] != 0: * result.add((x, y)) # <<<<<<<<<<<<<< @@ -22037,7 +22069,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupi __pyx_t_15 = PySet_Add(__pyx_v_result, __pyx_t_14); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 138, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - /* "blokus_gym/core/blokus_cython.pyx":137 + /* "blokus_cython.pyx":137 * for y in range(size): * for x in range(size): * if grid_view[y, x] != 0: # <<<<<<<<<<<<<< @@ -22048,7 +22080,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupi } } - /* "blokus_gym/core/blokus_cython.pyx":139 + /* "blokus_cython.pyx":139 * if grid_view[y, x] != 0: * result.add((x, y)) * return result # <<<<<<<<<<<<<< @@ -22060,7 +22092,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupi __pyx_r = __pyx_v_result; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":128 + /* "blokus_cython.pyx":128 * return corners * * def get_occupied(self) -> set: # <<<<<<<<<<<<<< @@ -22074,7 +22106,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupi __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_13); __Pyx_XDECREF(__pyx_t_14); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.get_occupied", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.get_occupied", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XCLEAR_MEMVIEW(&__pyx_v_grid_view, 1); @@ -22084,7 +22116,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupi return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":141 +/* "blokus_cython.pyx":141 * return result * * def is_full(self) -> bool: # <<<<<<<<<<<<<< @@ -22093,16 +22125,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_20get_occupi */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_23is_full(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Board_23is_full(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_22is_full, "Check if the board is completely full."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_23is_full = {"is_full", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_23is_full, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_22is_full}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_23is_full(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_5Board_22is_full, "Check if the board is completely full."); +static PyMethodDef __pyx_mdef_13blokus_cython_5Board_23is_full = {"is_full", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_23is_full, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_22is_full}; +static PyObject *__pyx_pw_13blokus_cython_5Board_23is_full(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -22128,14 +22160,14 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_full", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Board_22is_full(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_5Board_22is_full(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self) { __Pyx_memviewslice __pyx_v_grid_view = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_size; int __pyx_v_x; @@ -22158,7 +22190,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(st int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_full", 0); - /* "blokus_gym/core/blokus_cython.pyx":143 + /* "blokus_cython.pyx":143 * def is_full(self) -> bool: * """Check if the board is completely full.""" * cdef cnp.int8_t[:, :] grid_view = self.grid # <<<<<<<<<<<<<< @@ -22172,7 +22204,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(st __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL; - /* "blokus_gym/core/blokus_cython.pyx":144 + /* "blokus_cython.pyx":144 * """Check if the board is completely full.""" * cdef cnp.int8_t[:, :] grid_view = self.grid * cdef int size = self.size # <<<<<<<<<<<<<< @@ -22182,7 +22214,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(st __pyx_t_2 = __pyx_v_self->size; __pyx_v_size = __pyx_t_2; - /* "blokus_gym/core/blokus_cython.pyx":147 + /* "blokus_cython.pyx":147 * cdef int x, y * * for y in range(size): # <<<<<<<<<<<<<< @@ -22194,7 +22226,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(st for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_y = __pyx_t_4; - /* "blokus_gym/core/blokus_cython.pyx":148 + /* "blokus_cython.pyx":148 * * for y in range(size): * for x in range(size): # <<<<<<<<<<<<<< @@ -22206,7 +22238,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(st for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_v_x = __pyx_t_7; - /* "blokus_gym/core/blokus_cython.pyx":149 + /* "blokus_cython.pyx":149 * for y in range(size): * for x in range(size): * if grid_view[y, x] == 0: # <<<<<<<<<<<<<< @@ -22231,7 +22263,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(st __pyx_t_11 = ((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_grid_view.data + __pyx_t_8 * __pyx_v_grid_view.strides[0]) ) + __pyx_t_9 * __pyx_v_grid_view.strides[1]) ))) == 0); if (__pyx_t_11) { - /* "blokus_gym/core/blokus_cython.pyx":150 + /* "blokus_cython.pyx":150 * for x in range(size): * if grid_view[y, x] == 0: * return False # <<<<<<<<<<<<<< @@ -22243,7 +22275,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(st __pyx_r = Py_False; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":149 + /* "blokus_cython.pyx":149 * for y in range(size): * for x in range(size): * if grid_view[y, x] == 0: # <<<<<<<<<<<<<< @@ -22254,7 +22286,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(st } } - /* "blokus_gym/core/blokus_cython.pyx":151 + /* "blokus_cython.pyx":151 * if grid_view[y, x] == 0: * return False * return True # <<<<<<<<<<<<<< @@ -22266,7 +22298,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(st __pyx_r = Py_True; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":141 + /* "blokus_cython.pyx":141 * return result * * def is_full(self) -> bool: # <<<<<<<<<<<<<< @@ -22277,7 +22309,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(st /* function exit code */ __pyx_L1_error:; __PYX_XCLEAR_MEMVIEW(&__pyx_t_1, 1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.is_full", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.is_full", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XCLEAR_MEMVIEW(&__pyx_v_grid_view, 1); @@ -22286,7 +22318,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(st return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":153 +/* "blokus_cython.pyx":153 * return True * * def coverage(self) -> float: # <<<<<<<<<<<<<< @@ -22295,16 +22327,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_22is_full(st */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_25coverage(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Board_25coverage(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_24coverage, "Get the fraction of the board that is occupied."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_25coverage = {"coverage", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_25coverage, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_24coverage}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_25coverage(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_5Board_24coverage, "Get the fraction of the board that is occupied."); +static PyMethodDef __pyx_mdef_13blokus_cython_5Board_25coverage = {"coverage", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_25coverage, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_24coverage}; +static PyObject *__pyx_pw_13blokus_cython_5Board_25coverage(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -22330,14 +22362,14 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("coverage", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Board_24coverage(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_5Board_24coverage(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self) { __Pyx_memviewslice __pyx_v_grid_view = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_v_size; int __pyx_v_count; @@ -22362,7 +22394,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(s int __pyx_clineno = 0; __Pyx_RefNannySetupContext("coverage", 0); - /* "blokus_gym/core/blokus_cython.pyx":155 + /* "blokus_cython.pyx":155 * def coverage(self) -> float: * """Get the fraction of the board that is occupied.""" * cdef cnp.int8_t[:, :] grid_view = self.grid # <<<<<<<<<<<<<< @@ -22376,7 +22408,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(s __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL; - /* "blokus_gym/core/blokus_cython.pyx":156 + /* "blokus_cython.pyx":156 * """Get the fraction of the board that is occupied.""" * cdef cnp.int8_t[:, :] grid_view = self.grid * cdef int size = self.size # <<<<<<<<<<<<<< @@ -22386,7 +22418,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(s __pyx_t_2 = __pyx_v_self->size; __pyx_v_size = __pyx_t_2; - /* "blokus_gym/core/blokus_cython.pyx":157 + /* "blokus_cython.pyx":157 * cdef cnp.int8_t[:, :] grid_view = self.grid * cdef int size = self.size * cdef int count = 0 # <<<<<<<<<<<<<< @@ -22395,7 +22427,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(s */ __pyx_v_count = 0; - /* "blokus_gym/core/blokus_cython.pyx":160 + /* "blokus_cython.pyx":160 * cdef int x, y * * for y in range(size): # <<<<<<<<<<<<<< @@ -22407,7 +22439,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(s for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_y = __pyx_t_4; - /* "blokus_gym/core/blokus_cython.pyx":161 + /* "blokus_cython.pyx":161 * * for y in range(size): * for x in range(size): # <<<<<<<<<<<<<< @@ -22419,7 +22451,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(s for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_v_x = __pyx_t_7; - /* "blokus_gym/core/blokus_cython.pyx":162 + /* "blokus_cython.pyx":162 * for y in range(size): * for x in range(size): * if grid_view[y, x] != 0: # <<<<<<<<<<<<<< @@ -22444,7 +22476,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(s __pyx_t_11 = ((*((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_grid_view.data + __pyx_t_8 * __pyx_v_grid_view.strides[0]) ) + __pyx_t_9 * __pyx_v_grid_view.strides[1]) ))) != 0); if (__pyx_t_11) { - /* "blokus_gym/core/blokus_cython.pyx":163 + /* "blokus_cython.pyx":163 * for x in range(size): * if grid_view[y, x] != 0: * count += 1 # <<<<<<<<<<<<<< @@ -22453,7 +22485,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(s */ __pyx_v_count = (__pyx_v_count + 1); - /* "blokus_gym/core/blokus_cython.pyx":162 + /* "blokus_cython.pyx":162 * for y in range(size): * for x in range(size): * if grid_view[y, x] != 0: # <<<<<<<<<<<<<< @@ -22464,7 +22496,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(s } } - /* "blokus_gym/core/blokus_cython.pyx":164 + /* "blokus_cython.pyx":164 * if grid_view[y, x] != 0: * count += 1 * return count / (size * size) # <<<<<<<<<<<<<< @@ -22483,7 +22515,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(s __pyx_t_12 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":153 + /* "blokus_cython.pyx":153 * return True * * def coverage(self) -> float: # <<<<<<<<<<<<<< @@ -22495,7 +22527,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(s __pyx_L1_error:; __PYX_XCLEAR_MEMVIEW(&__pyx_t_1, 1); __Pyx_XDECREF(__pyx_t_12); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.coverage", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.coverage", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __PYX_XCLEAR_MEMVIEW(&__pyx_v_grid_view, 1); @@ -22504,7 +22536,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(s return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":26 +/* "blokus_cython.pyx":26 * """ * * cdef public int size # <<<<<<<<<<<<<< @@ -22513,21 +22545,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_24coverage(s */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_4size_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_4size_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_5Board_4size_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_5Board_4size_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4size___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Board_4size___get__(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4size___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_5Board_4size___get__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -22545,7 +22577,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4size___get_ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -22554,21 +22586,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4size___get_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_4size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_4size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_5Board_4size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_5Board_4size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4size_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_5Board_4size_2__set__(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4size_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_5Board_4size_2__set__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; @@ -22581,13 +22613,13 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4size_2__set__(str __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.size.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.size.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":27 +/* "blokus_cython.pyx":27 * * cdef public int size * cdef public cnp.int8_t[:, :] grid # <<<<<<<<<<<<<< @@ -22596,21 +22628,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4size_2__set__(str */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_4grid_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_4grid_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_5Board_4grid_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_5Board_4grid_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4grid___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Board_4grid___get__(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4grid___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_5Board_4grid___get__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -22629,7 +22661,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4grid___get_ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.grid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.grid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -22638,21 +22670,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4grid___get_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_4grid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_4grid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_5Board_4grid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_5Board_4grid_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4grid_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_5Board_4grid_2__set__(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4grid_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_5Board_4grid_2__set__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_memviewslice __pyx_t_1 = { 0, 0, { 0 }, { 0 }, { 0 } }; int __pyx_lineno = 0; @@ -22669,13 +22701,13 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4grid_2__set__(str goto __pyx_L0; __pyx_L1_error:; __PYX_XCLEAR_MEMVIEW(&__pyx_t_1, 1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.grid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.grid.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":28 +/* "blokus_cython.pyx":28 * cdef public int size * cdef public cnp.int8_t[:, :] grid * cdef public dict _occupied_cache # <<<<<<<<<<<<<< @@ -22684,21 +22716,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_4grid_2__set__(str */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_5Board_15_occupied_cache_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_5Board_15_occupied_cache_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Board_15_occupied_cache___get__(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_5Board_15_occupied_cache___get__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -22715,21 +22747,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_5Board_15_occupied_cache_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_5Board_15_occupied_cache_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_5Board_15_occupied_cache_2__set__(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_5Board_15_occupied_cache_2__set__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -22751,7 +22783,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board._occupied_cache.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board._occupied_cache.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -22759,21 +22791,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_5Board_15_occupied_cache_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_5Board_15_occupied_cache_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Board_15_occupied_cache_4__del__(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_5Board_15_occupied_cache_4__del__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -22796,15 +22828,15 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_27__reduce_cython__(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Board_27__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_27__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_27__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_27__reduce_cython__(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_5Board_27__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_27__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_5Board_27__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -22830,14 +22862,14 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_26__reduce_cython__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Board_26__reduce_cython__(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_26__reduce_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_5Board_26__reduce_cython__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self) { PyObject *__pyx_v_state = 0; PyObject *__pyx_v__dict = 0; int __pyx_v_use_setstate; @@ -23059,7 +23091,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_26__reduce_c __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_state); @@ -23077,15 +23109,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_26__reduce_c */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_29__setstate_cython__(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Board_29__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_29__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_29__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_29__setstate_cython__(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_5Board_29__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_29__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_5Board_29__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -23147,11 +23179,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_28__setstate_cython__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v_self), __pyx_v___pyx_state); + __pyx_r = __pyx_pf_13blokus_cython_5Board_28__setstate_cython__(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -23161,7 +23193,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_28__setstate_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_pf_13blokus_cython_5Board_28__setstate_cython__(struct __pyx_obj_13blokus_cython_Board *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -23183,7 +23215,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_28__setstate PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); __PYX_ERR(1, 17, __pyx_L1_error) } - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Board__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython___pyx_unpickle_Board__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -23201,7 +23233,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_28__setstate __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Board.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Board.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -23209,7 +23241,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_28__setstate return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":179 +/* "blokus_cython.pyx":179 * cdef public int y * * def __init__(self, int piece_id, int orientation_id, int x, int y): # <<<<<<<<<<<<<< @@ -23218,8 +23250,8 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Board_28__setstate */ /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static int __pyx_pw_13blokus_cython_4Move_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_13blokus_cython_4Move_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_v_piece_id; int __pyx_v_orientation_id; int __pyx_v_x; @@ -23295,11 +23327,11 @@ static int __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1__init__(PyObject for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Move.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Move.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move___init__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_v_self), __pyx_v_piece_id, __pyx_v_orientation_id, __pyx_v_x, __pyx_v_y); + __pyx_r = __pyx_pf_13blokus_cython_4Move___init__(((struct __pyx_obj_13blokus_cython_Move *)__pyx_v_self), __pyx_v_piece_id, __pyx_v_orientation_id, __pyx_v_x, __pyx_v_y); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -23309,10 +23341,10 @@ static int __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1__init__(PyObject return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move___init__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self, int __pyx_v_piece_id, int __pyx_v_orientation_id, int __pyx_v_x, int __pyx_v_y) { +static int __pyx_pf_13blokus_cython_4Move___init__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self, int __pyx_v_piece_id, int __pyx_v_orientation_id, int __pyx_v_x, int __pyx_v_y) { int __pyx_r; - /* "blokus_gym/core/blokus_cython.pyx":180 + /* "blokus_cython.pyx":180 * * def __init__(self, int piece_id, int orientation_id, int x, int y): * self.piece_id = piece_id # <<<<<<<<<<<<<< @@ -23321,7 +23353,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move___init__(struct __p */ __pyx_v_self->piece_id = __pyx_v_piece_id; - /* "blokus_gym/core/blokus_cython.pyx":181 + /* "blokus_cython.pyx":181 * def __init__(self, int piece_id, int orientation_id, int x, int y): * self.piece_id = piece_id * self.orientation_id = orientation_id # <<<<<<<<<<<<<< @@ -23330,7 +23362,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move___init__(struct __p */ __pyx_v_self->orientation_id = __pyx_v_orientation_id; - /* "blokus_gym/core/blokus_cython.pyx":182 + /* "blokus_cython.pyx":182 * self.piece_id = piece_id * self.orientation_id = orientation_id * self.x = x # <<<<<<<<<<<<<< @@ -23339,7 +23371,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move___init__(struct __p */ __pyx_v_self->x = __pyx_v_x; - /* "blokus_gym/core/blokus_cython.pyx":183 + /* "blokus_cython.pyx":183 * self.orientation_id = orientation_id * self.x = x * self.y = y # <<<<<<<<<<<<<< @@ -23348,7 +23380,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move___init__(struct __p */ __pyx_v_self->y = __pyx_v_y; - /* "blokus_gym/core/blokus_cython.pyx":179 + /* "blokus_cython.pyx":179 * cdef public int y * * def __init__(self, int piece_id, int orientation_id, int x, int y): # <<<<<<<<<<<<<< @@ -23361,7 +23393,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move___init__(struct __p return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":185 +/* "blokus_cython.pyx":185 * self.y = y * * def __repr__(self): # <<<<<<<<<<<<<< @@ -23370,21 +23402,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move___init__(struct __p */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_3__repr__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_3__repr__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_4Move_3__repr__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_4Move_3__repr__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_2__repr__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_4Move_2__repr__(((struct __pyx_obj_13blokus_cython_Move *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_2__repr__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_4Move_2__repr__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -23398,7 +23430,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_2__repr__(str int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); - /* "blokus_gym/core/blokus_cython.pyx":186 + /* "blokus_cython.pyx":186 * * def __repr__(self): * return f"Move(piece={self.piece_id}, orient={self.orientation_id}, pos=({self.x}, {self.y}))" # <<<<<<<<<<<<<< @@ -23434,7 +23466,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_2__repr__(str __pyx_t_6 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":185 + /* "blokus_cython.pyx":185 * self.y = y * * def __repr__(self): # <<<<<<<<<<<<<< @@ -23449,7 +23481,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_2__repr__(str __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Move.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Move.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -23457,7 +23489,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_2__repr__(str return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":174 +/* "blokus_cython.pyx":174 * """A move in the game (piece, orientation, position).""" * * cdef public int piece_id # <<<<<<<<<<<<<< @@ -23466,21 +23498,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_2__repr__(str */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_8piece_id_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_8piece_id_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_4Move_8piece_id_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_4Move_8piece_id_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_8piece_id___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_4Move_8piece_id___get__(((struct __pyx_obj_13blokus_cython_Move *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_8piece_id___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_4Move_8piece_id___get__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -23498,7 +23530,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_8piece_id___g /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Move.piece_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Move.piece_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -23507,21 +23539,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_8piece_id___g } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_8piece_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_8piece_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_4Move_8piece_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_4Move_8piece_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_8piece_id_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_4Move_8piece_id_2__set__(((struct __pyx_obj_13blokus_cython_Move *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_8piece_id_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_4Move_8piece_id_2__set__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; @@ -23534,13 +23566,13 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_8piece_id_2__set__( __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Move.piece_id.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Move.piece_id.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":175 +/* "blokus_cython.pyx":175 * * cdef public int piece_id * cdef public int orientation_id # <<<<<<<<<<<<<< @@ -23549,21 +23581,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_8piece_id_2__set__( */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_14orientation_id_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_14orientation_id_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_4Move_14orientation_id_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_4Move_14orientation_id_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_14orientation_id___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_4Move_14orientation_id___get__(((struct __pyx_obj_13blokus_cython_Move *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_14orientation_id___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_4Move_14orientation_id___get__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -23581,7 +23613,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_14orientation /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Move.orientation_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Move.orientation_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -23590,21 +23622,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_14orientation } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_14orientation_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_14orientation_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_4Move_14orientation_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_4Move_14orientation_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_14orientation_id_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_4Move_14orientation_id_2__set__(((struct __pyx_obj_13blokus_cython_Move *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_14orientation_id_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_4Move_14orientation_id_2__set__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; @@ -23617,13 +23649,13 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_14orientation_id_2_ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Move.orientation_id.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Move.orientation_id.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":176 +/* "blokus_cython.pyx":176 * cdef public int piece_id * cdef public int orientation_id * cdef public int x # <<<<<<<<<<<<<< @@ -23632,21 +23664,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_14orientation_id_2_ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1x_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1x_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_4Move_1x_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_4Move_1x_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1x___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_4Move_1x___get__(((struct __pyx_obj_13blokus_cython_Move *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1x___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_4Move_1x___get__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -23664,7 +23696,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1x___get__(st /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Move.x.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Move.x.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -23673,21 +23705,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1x___get__(st } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1x_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1x_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_4Move_1x_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_4Move_1x_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1x_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_4Move_1x_2__set__(((struct __pyx_obj_13blokus_cython_Move *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1x_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_4Move_1x_2__set__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; @@ -23700,13 +23732,13 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1x_2__set__(struct __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Move.x.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Move.x.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":177 +/* "blokus_cython.pyx":177 * cdef public int orientation_id * cdef public int x * cdef public int y # <<<<<<<<<<<<<< @@ -23715,21 +23747,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1x_2__set__(struct */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1y_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1y_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_4Move_1y_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_4Move_1y_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1y___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_4Move_1y___get__(((struct __pyx_obj_13blokus_cython_Move *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1y___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_4Move_1y___get__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -23747,7 +23779,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1y___get__(st /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Move.y.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Move.y.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -23756,21 +23788,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1y___get__(st } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1y_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1y_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_4Move_1y_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_4Move_1y_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1y_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_4Move_1y_2__set__(((struct __pyx_obj_13blokus_cython_Move *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1y_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_4Move_1y_2__set__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; @@ -23783,7 +23815,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1y_2__set__(struct __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Move.y.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Move.y.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; @@ -23796,15 +23828,15 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_1y_2__set__(struct */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_5__reduce_cython__(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_4Move_5__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_4Move_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_5__reduce_cython__(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_4Move_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_4Move_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_4Move_5__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -23830,14 +23862,14 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_4__reduce_cython__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_4Move_4__reduce_cython__(((struct __pyx_obj_13blokus_cython_Move *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_4__reduce_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_4Move_4__reduce_cython__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self) { PyObject *__pyx_v_state = 0; PyObject *__pyx_v__dict = 0; int __pyx_v_use_setstate; @@ -24068,7 +24100,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_4__reduce_cyt __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Move.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Move.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_state); @@ -24086,15 +24118,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_4__reduce_cyt */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_7__setstate_cython__(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_4Move_7__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_4Move_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_7__setstate_cython__(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_4Move_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_4Move_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_4Move_7__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -24156,11 +24188,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Move.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Move.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_6__setstate_cython__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_v_self), __pyx_v___pyx_state); + __pyx_r = __pyx_pf_13blokus_cython_4Move_6__setstate_cython__(((struct __pyx_obj_13blokus_cython_Move *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -24170,7 +24202,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_6__setstate_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_pf_13blokus_cython_4Move_6__setstate_cython__(struct __pyx_obj_13blokus_cython_Move *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -24192,7 +24224,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_6__setstate_c PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); __PYX_ERR(1, 17, __pyx_L1_error) } - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Move__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython___pyx_unpickle_Move__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -24210,7 +24242,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_6__setstate_c __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Move.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Move.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -24218,7 +24250,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_6__setstate_c return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":197 +/* "blokus_cython.pyx":197 * cdef public list corners * * def __init__(self, int piece_id, int orientation_id, list squares, list corners): # <<<<<<<<<<<<<< @@ -24227,8 +24259,8 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4Move_6__setstate_c */ /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static int __pyx_pw_13blokus_cython_16PieceOrientation_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_13blokus_cython_16PieceOrientation_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_v_piece_id; int __pyx_v_orientation_id; PyObject *__pyx_v_squares = 0; @@ -24304,13 +24336,13 @@ static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_1__ini for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceOrientation.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceOrientation.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_squares), (&PyList_Type), 1, "squares", 1))) __PYX_ERR(0, 197, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_corners), (&PyList_Type), 1, "corners", 1))) __PYX_ERR(0, 197, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation___init__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_v_self), __pyx_v_piece_id, __pyx_v_orientation_id, __pyx_v_squares, __pyx_v_corners); + __pyx_r = __pyx_pf_13blokus_cython_16PieceOrientation___init__(((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_v_self), __pyx_v_piece_id, __pyx_v_orientation_id, __pyx_v_squares, __pyx_v_corners); /* function exit code */ goto __pyx_L0; @@ -24329,12 +24361,12 @@ static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_1__ini return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation___init__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self, int __pyx_v_piece_id, int __pyx_v_orientation_id, PyObject *__pyx_v_squares, PyObject *__pyx_v_corners) { +static int __pyx_pf_13blokus_cython_16PieceOrientation___init__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self, int __pyx_v_piece_id, int __pyx_v_orientation_id, PyObject *__pyx_v_squares, PyObject *__pyx_v_corners) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__", 0); - /* "blokus_gym/core/blokus_cython.pyx":198 + /* "blokus_cython.pyx":198 * * def __init__(self, int piece_id, int orientation_id, list squares, list corners): * self.piece_id = piece_id # <<<<<<<<<<<<<< @@ -24343,7 +24375,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation___init */ __pyx_v_self->piece_id = __pyx_v_piece_id; - /* "blokus_gym/core/blokus_cython.pyx":199 + /* "blokus_cython.pyx":199 * def __init__(self, int piece_id, int orientation_id, list squares, list corners): * self.piece_id = piece_id * self.orientation_id = orientation_id # <<<<<<<<<<<<<< @@ -24352,7 +24384,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation___init */ __pyx_v_self->orientation_id = __pyx_v_orientation_id; - /* "blokus_gym/core/blokus_cython.pyx":200 + /* "blokus_cython.pyx":200 * self.piece_id = piece_id * self.orientation_id = orientation_id * self.squares = squares # <<<<<<<<<<<<<< @@ -24365,7 +24397,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation___init __Pyx_DECREF(__pyx_v_self->squares); __pyx_v_self->squares = __pyx_v_squares; - /* "blokus_gym/core/blokus_cython.pyx":201 + /* "blokus_cython.pyx":201 * self.orientation_id = orientation_id * self.squares = squares * self.corners = corners # <<<<<<<<<<<<<< @@ -24378,7 +24410,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation___init __Pyx_DECREF(__pyx_v_self->corners); __pyx_v_self->corners = __pyx_v_corners; - /* "blokus_gym/core/blokus_cython.pyx":197 + /* "blokus_cython.pyx":197 * cdef public list corners * * def __init__(self, int piece_id, int orientation_id, list squares, list corners): # <<<<<<<<<<<<<< @@ -24392,7 +24424,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation___init return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":192 +/* "blokus_cython.pyx":192 * """A piece in a specific orientation (before placement on board).""" * * cdef public int piece_id # <<<<<<<<<<<<<< @@ -24401,21 +24433,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation___init */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_8piece_id_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_8piece_id_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_16PieceOrientation_8piece_id_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_16PieceOrientation_8piece_id_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_8piece_id___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_16PieceOrientation_8piece_id___get__(((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_8piece_id___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_16PieceOrientation_8piece_id___get__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -24433,7 +24465,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceOrientation.piece_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceOrientation.piece_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -24442,21 +24474,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_8piece_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_8piece_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_16PieceOrientation_8piece_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_16PieceOrientation_8piece_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_8piece_id_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_16PieceOrientation_8piece_id_2__set__(((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_8piece_id_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_16PieceOrientation_8piece_id_2__set__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; @@ -24469,13 +24501,13 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_8piece __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceOrientation.piece_id.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceOrientation.piece_id.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":193 +/* "blokus_cython.pyx":193 * * cdef public int piece_id * cdef public int orientation_id # <<<<<<<<<<<<<< @@ -24484,21 +24516,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_8piece */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_14orientation_id_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_14orientation_id_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_16PieceOrientation_14orientation_id_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_16PieceOrientation_14orientation_id_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_14orientation_id___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_16PieceOrientation_14orientation_id___get__(((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_14orientation_id___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_16PieceOrientation_14orientation_id___get__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -24516,7 +24548,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceOrientation.orientation_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceOrientation.orientation_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -24525,21 +24557,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_14orientation_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_14orientation_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_16PieceOrientation_14orientation_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_16PieceOrientation_14orientation_id_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_14orientation_id_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_16PieceOrientation_14orientation_id_2__set__(((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_14orientation_id_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_16PieceOrientation_14orientation_id_2__set__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; @@ -24552,13 +24584,13 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_14orie __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceOrientation.orientation_id.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceOrientation.orientation_id.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":194 +/* "blokus_cython.pyx":194 * cdef public int piece_id * cdef public int orientation_id * cdef public list squares # <<<<<<<<<<<<<< @@ -24567,21 +24599,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_14orie */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_16PieceOrientation_7squares_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_16PieceOrientation_7squares_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_16PieceOrientation_7squares___get__(((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_16PieceOrientation_7squares___get__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -24598,21 +24630,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_16PieceOrientation_7squares_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_16PieceOrientation_7squares_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_16PieceOrientation_7squares_2__set__(((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_16PieceOrientation_7squares_2__set__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -24634,7 +24666,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squar goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceOrientation.squares.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceOrientation.squares.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -24642,21 +24674,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squar } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_16PieceOrientation_7squares_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_16PieceOrientation_7squares_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_16PieceOrientation_7squares_4__del__(((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_16PieceOrientation_7squares_4__del__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -24672,7 +24704,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squar return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":195 +/* "blokus_cython.pyx":195 * cdef public int orientation_id * cdef public list squares * cdef public list corners # <<<<<<<<<<<<<< @@ -24681,21 +24713,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squar */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_16PieceOrientation_7corners_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_16PieceOrientation_7corners_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_16PieceOrientation_7corners___get__(((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_16PieceOrientation_7corners___get__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -24712,21 +24744,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_16PieceOrientation_7corners_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_16PieceOrientation_7corners_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_16PieceOrientation_7corners_2__set__(((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_16PieceOrientation_7corners_2__set__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -24748,7 +24780,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corne goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceOrientation.corners.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceOrientation.corners.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -24756,21 +24788,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corne } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_16PieceOrientation_7corners_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_16PieceOrientation_7corners_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_16PieceOrientation_7corners_4__del__(((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_16PieceOrientation_7corners_4__del__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -24793,15 +24825,15 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corne */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_3__reduce_cython__(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_16PieceOrientation_3__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_16PieceOrientation_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_3__reduce_cython__(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_16PieceOrientation_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_16PieceOrientation_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_16PieceOrientation_3__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -24827,14 +24859,14 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_2__reduce_cython__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_16PieceOrientation_2__reduce_cython__(((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_2__reduce_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_16PieceOrientation_2__reduce_cython__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self) { PyObject *__pyx_v_state = 0; PyObject *__pyx_v__dict = 0; int __pyx_v_use_setstate; @@ -25066,7 +25098,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_ __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceOrientation.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceOrientation.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_state); @@ -25084,15 +25116,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_5__setstate_cython__(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_16PieceOrientation_5__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_16PieceOrientation_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_5__setstate_cython__(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_16PieceOrientation_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_16PieceOrientation_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_16PieceOrientation_5__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -25154,11 +25186,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceOrientation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceOrientation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_4__setstate_cython__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_v_self), __pyx_v___pyx_state); + __pyx_r = __pyx_pf_13blokus_cython_16PieceOrientation_4__setstate_cython__(((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -25168,7 +25200,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_4__setstate_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_pf_13blokus_cython_16PieceOrientation_4__setstate_cython__(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -25190,7 +25222,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_ PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); __PYX_ERR(1, 17, __pyx_L1_error) } - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_PieceOrientation__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython___pyx_unpickle_PieceOrientation__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -25208,7 +25240,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceOrientation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceOrientation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -25216,7 +25248,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_ return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":210 +/* "blokus_cython.pyx":210 * cdef public object squares # Use object to allow frozenset * * def __init__(self, str name, object squares): # <<<<<<<<<<<<<< @@ -25225,8 +25257,8 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_16PieceOrientation_ */ /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static int __pyx_pw_13blokus_cython_5Piece_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_13blokus_cython_5Piece_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; PyObject *__pyx_v_squares = 0; CYTHON_UNUSED Py_ssize_t __pyx_nargs; @@ -25286,12 +25318,12 @@ static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_1__init__(PyObject for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Piece.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Piece.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyUnicode_Type), 1, "name", 1))) __PYX_ERR(0, 210, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece___init__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_v_self), __pyx_v_name, __pyx_v_squares); + __pyx_r = __pyx_pf_13blokus_cython_5Piece___init__(((struct __pyx_obj_13blokus_cython_Piece *)__pyx_v_self), __pyx_v_name, __pyx_v_squares); /* function exit code */ goto __pyx_L0; @@ -25310,12 +25342,12 @@ static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_1__init__(PyObject return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece___init__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_squares) { +static int __pyx_pf_13blokus_cython_5Piece___init__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_squares) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__", 0); - /* "blokus_gym/core/blokus_cython.pyx":211 + /* "blokus_cython.pyx":211 * * def __init__(self, str name, object squares): * self.name = name # <<<<<<<<<<<<<< @@ -25328,7 +25360,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece___init__(struct __ __Pyx_DECREF(__pyx_v_self->name); __pyx_v_self->name = __pyx_v_name; - /* "blokus_gym/core/blokus_cython.pyx":212 + /* "blokus_cython.pyx":212 * def __init__(self, str name, object squares): * self.name = name * self.squares = squares # <<<<<<<<<<<<<< @@ -25341,7 +25373,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece___init__(struct __ __Pyx_DECREF(__pyx_v_self->squares); __pyx_v_self->squares = __pyx_v_squares; - /* "blokus_gym/core/blokus_cython.pyx":210 + /* "blokus_cython.pyx":210 * cdef public object squares # Use object to allow frozenset * * def __init__(self, str name, object squares): # <<<<<<<<<<<<<< @@ -25355,7 +25387,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece___init__(struct __ return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":214 +/* "blokus_cython.pyx":214 * self.squares = squares * * @property # <<<<<<<<<<<<<< @@ -25364,21 +25396,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece___init__(struct __ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_4size_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_4size_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_5Piece_4size_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_5Piece_4size_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4size___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Piece_4size___get__(((struct __pyx_obj_13blokus_cython_Piece *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4size___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_5Piece_4size___get__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -25388,7 +25420,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4size___get_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "blokus_gym/core/blokus_cython.pyx":216 + /* "blokus_cython.pyx":216 * @property * def size(self) -> int: * return len(self.squares) # <<<<<<<<<<<<<< @@ -25406,7 +25438,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4size___get_ __pyx_t_1 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":214 + /* "blokus_cython.pyx":214 * self.squares = squares * * @property # <<<<<<<<<<<<<< @@ -25417,7 +25449,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4size___get_ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Piece.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Piece.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -25425,7 +25457,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4size___get_ return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":207 +/* "blokus_cython.pyx":207 * """A polyomino piece defined by a set of (x, y) coordinates.""" * * cdef public str name # <<<<<<<<<<<<<< @@ -25434,21 +25466,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4size___get_ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_4name_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_5Piece_4name_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_5Piece_4name_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4name___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Piece_4name___get__(((struct __pyx_obj_13blokus_cython_Piece *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4name___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_5Piece_4name___get__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -25465,21 +25497,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4name___get_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_5Piece_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_5Piece_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4name_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_5Piece_4name_2__set__(((struct __pyx_obj_13blokus_cython_Piece *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4name_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_5Piece_4name_2__set__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -25501,7 +25533,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4name_2__set__(str goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Piece.name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Piece.name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -25509,21 +25541,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4name_2__set__(str } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_4name_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_4name_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_5Piece_4name_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_5Piece_4name_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4name_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Piece_4name_4__del__(((struct __pyx_obj_13blokus_cython_Piece *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4name_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_5Piece_4name_4__del__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -25539,7 +25571,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4name_4__del__(str return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":208 +/* "blokus_cython.pyx":208 * * cdef public str name * cdef public object squares # Use object to allow frozenset # <<<<<<<<<<<<<< @@ -25548,21 +25580,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4name_4__del__(str */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_7squares_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_7squares_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_5Piece_7squares_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_5Piece_7squares_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_7squares___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Piece_7squares___get__(((struct __pyx_obj_13blokus_cython_Piece *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_7squares___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_5Piece_7squares___get__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -25579,21 +25611,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_7squares___g } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_7squares_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_7squares_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_5Piece_7squares_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_5Piece_7squares_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_7squares_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_5Piece_7squares_2__set__(((struct __pyx_obj_13blokus_cython_Piece *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_7squares_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_5Piece_7squares_2__set__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__", 0); @@ -25610,21 +25642,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_7squares_2__set__( } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_7squares_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_7squares_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_5Piece_7squares_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_5Piece_7squares_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_7squares_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Piece_7squares_4__del__(((struct __pyx_obj_13blokus_cython_Piece *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_7squares_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_5Piece_7squares_4__del__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -25647,15 +25679,15 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_7squares_4__del__( */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_3__reduce_cython__(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Piece_3__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Piece_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_3__reduce_cython__(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_5Piece_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Piece_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_5Piece_3__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -25681,14 +25713,14 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_2__reduce_cython__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_5Piece_2__reduce_cython__(((struct __pyx_obj_13blokus_cython_Piece *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_2__reduce_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_5Piece_2__reduce_cython__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self) { PyObject *__pyx_v_state = 0; PyObject *__pyx_v__dict = 0; int __pyx_v_use_setstate; @@ -25910,7 +25942,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_2__reduce_cy __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Piece.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Piece.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_state); @@ -25928,15 +25960,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_2__reduce_cy */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_5__setstate_cython__(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_5Piece_5__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5Piece_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_5__setstate_cython__(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_5Piece_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Piece_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_5Piece_5__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -25998,11 +26030,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Piece.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Piece.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4__setstate_cython__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_v_self), __pyx_v___pyx_state); + __pyx_r = __pyx_pf_13blokus_cython_5Piece_4__setstate_cython__(((struct __pyx_obj_13blokus_cython_Piece *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -26012,7 +26044,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4__setstate_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_pf_13blokus_cython_5Piece_4__setstate_cython__(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -26034,7 +26066,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4__setstate_ PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); __PYX_ERR(1, 17, __pyx_L1_error) } - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Piece__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython___pyx_unpickle_Piece__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -26052,7 +26084,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4__setstate_ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.Piece.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.Piece.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -26060,7 +26092,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4__setstate_ return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":228 +/* "blokus_cython.pyx":228 * cdef public int num_orientations * * def __init__(self, list pieces_list): # <<<<<<<<<<<<<< @@ -26069,8 +26101,8 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_5Piece_4__setstate_ */ /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static int __pyx_pw_13blokus_cython_8PieceSet_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_13blokus_cython_8PieceSet_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_pieces_list = 0; CYTHON_UNUSED Py_ssize_t __pyx_nargs; CYTHON_UNUSED PyObject *const *__pyx_kwvalues; @@ -26122,12 +26154,12 @@ static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_1__init__(PyObj for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pieces_list), (&PyList_Type), 1, "pieces_list", 1))) __PYX_ERR(0, 228, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self), __pyx_v_pieces_list); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet___init__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self), __pyx_v_pieces_list); /* function exit code */ goto __pyx_L0; @@ -26145,9 +26177,9 @@ static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_1__init__(PyObj __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_8PieceSet_8__init___2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ +static PyObject *__pyx_gb_13blokus_cython_8PieceSet_8__init___2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ -/* "blokus_gym/core/blokus_cython.pyx":241 +/* "blokus_cython.pyx":241 * self.orientations.append(orients) * * self.num_orientations = sum(len(o) for o in self.orientations) # <<<<<<<<<<<<<< @@ -26155,17 +26187,17 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_8PieceSet_8__init__ * @property */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_8__init___genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr *__pyx_cur_scope; +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_8__init___genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { + struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("genexpr", 0); - __pyx_cur_scope = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL); + __pyx_cur_scope = (struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr *)__pyx_tp_new_13blokus_cython___pyx_scope_struct__genexpr(__pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr *)Py_None); + __pyx_cur_scope = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 241, __pyx_L1_error) } else { @@ -26175,7 +26207,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_8__init__ __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0); { - __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10blokus_gym_4core_13blokus_cython_8PieceSet_8__init___2generator, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_init___locals_genexpr, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython); if (unlikely(!gen)) __PYX_ERR(0, 241, __pyx_L1_error) + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_13blokus_cython_8PieceSet_8__init___2generator, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_init___locals_genexpr, __pyx_mstate_global->__pyx_n_u_blokus_cython); if (unlikely(!gen)) __PYX_ERR(0, 241, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; @@ -26183,7 +26215,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_8__init__ /* function exit code */ __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.__init__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.__init__.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); @@ -26191,9 +26223,9 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_8__init__ return __pyx_r; } -static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_8PieceSet_8__init___2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +static PyObject *__pyx_gb_13blokus_cython_8PieceSet_8__init___2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr *__pyx_cur_scope = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr *)__pyx_generator->closure); + struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr *__pyx_cur_scope = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; @@ -26284,7 +26316,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_8PieceSet_8__init__ return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":228 +/* "blokus_cython.pyx":228 * cdef public int num_orientations * * def __init__(self, list pieces_list): # <<<<<<<<<<<<<< @@ -26292,7 +26324,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_8PieceSet_8__init__ * self.piece_names = [p.name for p in pieces_list] */ -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_pieces_list) { +static int __pyx_pf_13blokus_cython_8PieceSet___init__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_pieces_list) { Py_ssize_t __pyx_v_piece_id; PyObject *__pyx_v_piece = NULL; PyObject *__pyx_v_orients = NULL; @@ -26300,7 +26332,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct PyObject *__pyx_7genexpr__pyx_v_p = NULL; PyObject *__pyx_8genexpr1__pyx_v_i = NULL; PyObject *__pyx_8genexpr1__pyx_v_name = NULL; - PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_8PieceSet_8__init___2generator = 0; + PyObject *__pyx_gb_13blokus_cython_8PieceSet_8__init___2generator = 0; int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -26318,7 +26350,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); - /* "blokus_gym/core/blokus_cython.pyx":229 + /* "blokus_cython.pyx":229 * * def __init__(self, list pieces_list): * self.pieces = pieces_list # <<<<<<<<<<<<<< @@ -26331,7 +26363,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct __Pyx_DECREF(__pyx_v_self->pieces); __pyx_v_self->pieces = __pyx_v_pieces_list; - /* "blokus_gym/core/blokus_cython.pyx":230 + /* "blokus_cython.pyx":230 * def __init__(self, list pieces_list): * self.pieces = pieces_list * self.piece_names = [p.name for p in pieces_list] # <<<<<<<<<<<<<< @@ -26380,7 +26412,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct __pyx_v_self->piece_names = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":231 + /* "blokus_cython.pyx":231 * self.pieces = pieces_list * self.piece_names = [p.name for p in pieces_list] * self.piece_id_map = {name: i for i, name in enumerate(self.piece_names)} # <<<<<<<<<<<<<< @@ -26434,7 +26466,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct __pyx_v_self->piece_id_map = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":234 + /* "blokus_cython.pyx":234 * * # Pre-compute all orientations for each piece * self.orientations = [] # <<<<<<<<<<<<<< @@ -26449,7 +26481,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct __pyx_v_self->orientations = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":235 + /* "blokus_cython.pyx":235 * # Pre-compute all orientations for each piece * self.orientations = [] * for piece_id, piece in enumerate(pieces_list): # <<<<<<<<<<<<<< @@ -26476,20 +26508,20 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct __pyx_v_piece_id = __pyx_t_3; __pyx_t_3 = (__pyx_t_3 + 1); - /* "blokus_gym/core/blokus_cython.pyx":236 + /* "blokus_cython.pyx":236 * self.orientations = [] * for piece_id, piece in enumerate(pieces_list): * orients = generate_orientations_cython(piece) # <<<<<<<<<<<<<< * for orient in orients: * orient.piece_id = piece_id */ - if (!(likely(((__pyx_v_piece) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_piece, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece))))) __PYX_ERR(0, 236, __pyx_L1_error) - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython_generate_orientations_cython(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_v_piece)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error) + if (!(likely(((__pyx_v_piece) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_piece, __pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece))))) __PYX_ERR(0, 236, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython_generate_orientations_cython(((struct __pyx_obj_13blokus_cython_Piece *)__pyx_v_piece)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XDECREF_SET(__pyx_v_orients, ((PyObject*)__pyx_t_2)); __pyx_t_2 = 0; - /* "blokus_gym/core/blokus_cython.pyx":237 + /* "blokus_cython.pyx":237 * for piece_id, piece in enumerate(pieces_list): * orients = generate_orientations_cython(piece) * for orient in orients: # <<<<<<<<<<<<<< @@ -26517,7 +26549,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct __Pyx_XDECREF_SET(__pyx_v_orient, __pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":238 + /* "blokus_cython.pyx":238 * orients = generate_orientations_cython(piece) * for orient in orients: * orient.piece_id = piece_id # <<<<<<<<<<<<<< @@ -26529,7 +26561,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct if (__Pyx_PyObject_SetAttrStr(__pyx_v_orient, __pyx_mstate_global->__pyx_n_u_piece_id, __pyx_t_4) < (0)) __PYX_ERR(0, 238, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":237 + /* "blokus_cython.pyx":237 * for piece_id, piece in enumerate(pieces_list): * orients = generate_orientations_cython(piece) * for orient in orients: # <<<<<<<<<<<<<< @@ -26539,7 +26571,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "blokus_gym/core/blokus_cython.pyx":239 + /* "blokus_cython.pyx":239 * for orient in orients: * orient.piece_id = piece_id * self.orientations.append(orients) # <<<<<<<<<<<<<< @@ -26552,7 +26584,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct } __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->orientations, __pyx_v_orients); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 239, __pyx_L1_error) - /* "blokus_gym/core/blokus_cython.pyx":235 + /* "blokus_cython.pyx":235 * # Pre-compute all orientations for each piece * self.orientations = [] * for piece_id, piece in enumerate(pieces_list): # <<<<<<<<<<<<<< @@ -26562,7 +26594,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":241 + /* "blokus_cython.pyx":241 * self.orientations.append(orients) * * self.num_orientations = sum(len(o) for o in self.orientations) # <<<<<<<<<<<<<< @@ -26570,7 +26602,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct * @property */ __pyx_t_2 = NULL; - __pyx_t_4 = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_8__init___genexpr(NULL, __pyx_v_self->orientations); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 241, __pyx_L1_error) + __pyx_t_4 = __pyx_pf_13blokus_cython_8PieceSet_8__init___genexpr(NULL, __pyx_v_self->orientations); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = 1; { @@ -26585,7 +26617,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_self->num_orientations = __pyx_t_10; - /* "blokus_gym/core/blokus_cython.pyx":228 + /* "blokus_cython.pyx":228 * cdef public int num_orientations * * def __init__(self, list pieces_list): # <<<<<<<<<<<<<< @@ -26601,7 +26633,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_XDECREF(__pyx_v_piece); @@ -26610,12 +26642,12 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct __Pyx_XDECREF(__pyx_7genexpr__pyx_v_p); __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_i); __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_name); - __Pyx_XDECREF(__pyx_gb_10blokus_gym_4core_13blokus_cython_8PieceSet_8__init___2generator); + __Pyx_XDECREF(__pyx_gb_13blokus_cython_8PieceSet_8__init___2generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":243 +/* "blokus_cython.pyx":243 * self.num_orientations = sum(len(o) for o in self.orientations) * * @property # <<<<<<<<<<<<<< @@ -26624,21 +26656,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet___init__(struct */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_10num_pieces_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_10num_pieces_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_10num_pieces_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_10num_pieces_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10num_pieces___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_10num_pieces___get__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10num_pieces___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_10num_pieces___get__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -26648,7 +26680,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10num_pie int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "blokus_gym/core/blokus_cython.pyx":245 + /* "blokus_cython.pyx":245 * @property * def num_pieces(self) -> int: * return len(self.pieces) # <<<<<<<<<<<<<< @@ -26670,7 +26702,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10num_pie __pyx_t_1 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":243 + /* "blokus_cython.pyx":243 * self.num_orientations = sum(len(o) for o in self.orientations) * * @property # <<<<<<<<<<<<<< @@ -26681,7 +26713,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10num_pie /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.num_pieces.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.num_pieces.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -26689,7 +26721,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10num_pie return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":247 +/* "blokus_cython.pyx":247 * return len(self.pieces) * * def get_orientations(self, int piece_id) -> list: # <<<<<<<<<<<<<< @@ -26698,15 +26730,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10num_pie */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_3get_orientations(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_3get_orientations(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_8PieceSet_3get_orientations = {"get_orientations", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_3get_orientations, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_3get_orientations(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_8PieceSet_3get_orientations = {"get_orientations", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_8PieceSet_3get_orientations, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_3get_orientations(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -26768,11 +26800,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.get_orientations", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.get_orientations", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_2get_orientations(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self), __pyx_v_piece_id); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_2get_orientations(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self), __pyx_v_piece_id); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -26782,7 +26814,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_2get_orientations(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, int __pyx_v_piece_id) { +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_2get_orientations(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, int __pyx_v_piece_id) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -26791,7 +26823,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_2get_orie int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_orientations", 0); - /* "blokus_gym/core/blokus_cython.pyx":248 + /* "blokus_cython.pyx":248 * * def get_orientations(self, int piece_id) -> list: * return self.orientations[piece_id] # <<<<<<<<<<<<<< @@ -26810,7 +26842,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_2get_orie __pyx_t_1 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":247 + /* "blokus_cython.pyx":247 * return len(self.pieces) * * def get_orientations(self, int piece_id) -> list: # <<<<<<<<<<<<<< @@ -26821,7 +26853,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_2get_orie /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.get_orientations", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.get_orientations", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -26829,7 +26861,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_2get_orie return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":250 +/* "blokus_cython.pyx":250 * return self.orientations[piece_id] * * def get_piece(self, int piece_id) -> Piece: # <<<<<<<<<<<<<< @@ -26838,15 +26870,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_2get_orie */ /* Python wrapper */ -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_5get_piece(PyObject *__pyx_v_self, +static struct __pyx_obj_13blokus_cython_Piece *__pyx_pw_13blokus_cython_8PieceSet_5get_piece(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_8PieceSet_5get_piece = {"get_piece", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_5get_piece, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_5get_piece(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_8PieceSet_5get_piece = {"get_piece", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_8PieceSet_5get_piece, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_pw_13blokus_cython_8PieceSet_5get_piece(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -26862,7 +26894,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_r = 0; + struct __pyx_obj_13blokus_cython_Piece *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_piece (wrapper)", 0); #if !CYTHON_METH_FASTCALL @@ -26908,11 +26940,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.get_piece", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.get_piece", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_4get_piece(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self), __pyx_v_piece_id); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_4get_piece(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self), __pyx_v_piece_id); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -26922,8 +26954,8 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_4get_piece(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, int __pyx_v_piece_id) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_r = NULL; +static struct __pyx_obj_13blokus_cython_Piece *__pyx_pf_13blokus_cython_8PieceSet_4get_piece(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, int __pyx_v_piece_id) { + struct __pyx_obj_13blokus_cython_Piece *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; @@ -26931,7 +26963,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_pf_10blo int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_piece", 0); - /* "blokus_gym/core/blokus_cython.pyx":251 + /* "blokus_cython.pyx":251 * * def get_piece(self, int piece_id) -> Piece: * return self.pieces[piece_id] # <<<<<<<<<<<<<< @@ -26945,12 +26977,12 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_pf_10blo } __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->pieces, __pyx_v_piece_id, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece))))) __PYX_ERR(0, 251, __pyx_L1_error) - __pyx_r = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece))))) __PYX_ERR(0, 251, __pyx_L1_error) + __pyx_r = ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":250 + /* "blokus_cython.pyx":250 * return self.orientations[piece_id] * * def get_piece(self, int piece_id) -> Piece: # <<<<<<<<<<<<<< @@ -26961,7 +26993,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_pf_10blo /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.get_piece", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.get_piece", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF((PyObject *)__pyx_r); @@ -26969,7 +27001,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_pf_10blo return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":253 +/* "blokus_cython.pyx":253 * return self.pieces[piece_id] * * def get_piece_id(self, str name) -> int: # <<<<<<<<<<<<<< @@ -26978,15 +27010,15 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_pf_10blo */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_7get_piece_id(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_7get_piece_id(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_8PieceSet_7get_piece_id = {"get_piece_id", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_7get_piece_id, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_7get_piece_id(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_8PieceSet_7get_piece_id = {"get_piece_id", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_8PieceSet_7get_piece_id, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_7get_piece_id(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -27048,12 +27080,12 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.get_piece_id", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.get_piece_id", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyUnicode_Type), 1, "name", 1))) __PYX_ERR(0, 253, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6get_piece_id(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self), __pyx_v_name); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_6get_piece_id(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self), __pyx_v_name); /* function exit code */ goto __pyx_L0; @@ -27072,7 +27104,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6get_piece_id(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_name) { +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_6get_piece_id(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_name) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -27081,7 +27113,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6get_piec int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_piece_id", 0); - /* "blokus_gym/core/blokus_cython.pyx":254 + /* "blokus_cython.pyx":254 * * def get_piece_id(self, str name) -> int: * return self.piece_id_map[name] # <<<<<<<<<<<<<< @@ -27100,7 +27132,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6get_piec __pyx_t_1 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":253 + /* "blokus_cython.pyx":253 * return self.pieces[piece_id] * * def get_piece_id(self, str name) -> int: # <<<<<<<<<<<<<< @@ -27111,7 +27143,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6get_piec /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.get_piece_id", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.get_piece_id", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -27119,7 +27151,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6get_piec return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":222 +/* "blokus_cython.pyx":222 * """A collection of pieces with pre-computed orientations.""" * * cdef public list pieces # <<<<<<<<<<<<<< @@ -27128,21 +27160,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6get_piec */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_6pieces_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_6pieces_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_6pieces___get__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_6pieces___get__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -27159,21 +27191,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces__ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_8PieceSet_6pieces_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_8PieceSet_6pieces_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_6pieces_2__set__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_8PieceSet_6pieces_2__set__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -27195,7 +27227,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_2__set_ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.pieces.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.pieces.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -27203,21 +27235,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_2__set_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_8PieceSet_6pieces_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_8PieceSet_6pieces_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_6pieces_4__del__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_8PieceSet_6pieces_4__del__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -27233,7 +27265,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_4__del_ return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":223 +/* "blokus_cython.pyx":223 * * cdef public list pieces * cdef public list piece_names # <<<<<<<<<<<<<< @@ -27242,21 +27274,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_4__del_ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_11piece_names_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_11piece_names_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_11piece_names___get__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_11piece_names___get__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -27273,21 +27305,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_n } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_8PieceSet_11piece_names_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_8PieceSet_11piece_names_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_11piece_names_2__set__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_8PieceSet_11piece_names_2__set__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -27309,7 +27341,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_2 goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.piece_names.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.piece_names.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -27317,21 +27349,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_2 } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_8PieceSet_11piece_names_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_8PieceSet_11piece_names_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_11piece_names_4__del__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_8PieceSet_11piece_names_4__del__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -27347,7 +27379,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_4 return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":224 +/* "blokus_cython.pyx":224 * cdef public list pieces * cdef public list piece_names * cdef public dict piece_id_map # <<<<<<<<<<<<<< @@ -27356,21 +27388,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_4 */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_12piece_id_map_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_12piece_id_map_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_12piece_id_map___get__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_12piece_id_map___get__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -27387,21 +27419,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_i } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_8PieceSet_12piece_id_map_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_8PieceSet_12piece_id_map_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_12piece_id_map_2__set__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_8PieceSet_12piece_id_map_2__set__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -27423,7 +27455,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.piece_id_map.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.piece_id_map.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -27431,21 +27463,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_8PieceSet_12piece_id_map_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_8PieceSet_12piece_id_map_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_12piece_id_map_4__del__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_8PieceSet_12piece_id_map_4__del__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -27461,7 +27493,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_ return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":225 +/* "blokus_cython.pyx":225 * cdef public list piece_names * cdef public dict piece_id_map * cdef public list orientations # <<<<<<<<<<<<<< @@ -27470,21 +27502,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_12orientations_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_12orientations_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_12orientations___get__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_12orientations___get__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -27501,21 +27533,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12orienta } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_8PieceSet_12orientations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_8PieceSet_12orientations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_12orientations_2__set__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_8PieceSet_12orientations_2__set__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -27537,7 +27569,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.orientations.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.orientations.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -27545,21 +27577,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_8PieceSet_12orientations_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_8PieceSet_12orientations_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_12orientations_4__del__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_8PieceSet_12orientations_4__del__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -27575,7 +27607,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_ return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":226 +/* "blokus_cython.pyx":226 * cdef public dict piece_id_map * cdef public list orientations * cdef public int num_orientations # <<<<<<<<<<<<<< @@ -27584,21 +27616,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_orientations_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_orientations_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_16num_orientations_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_16num_orientations_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_orientations___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_16num_orientations___get__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_orientations___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_16num_orientations___get__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -27616,7 +27648,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_ori /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.num_orientations.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.num_orientations.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -27625,21 +27657,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_ori } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_orientations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_orientations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_8PieceSet_16num_orientations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_8PieceSet_16num_orientations_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_orientations_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_16num_orientations_2__set__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_orientations_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_8PieceSet_16num_orientations_2__set__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; @@ -27652,7 +27684,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_orientati __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.num_orientations.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.num_orientations.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; @@ -27665,15 +27697,15 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_orientati */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_9__reduce_cython__(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_9__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_8PieceSet_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_9__reduce_cython__(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_8PieceSet_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_8PieceSet_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_9__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -27699,14 +27731,14 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_8__reduce_cython__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_8__reduce_cython__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_8__reduce_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_8__reduce_cython__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self) { PyObject *__pyx_v_state = 0; PyObject *__pyx_v__dict = 0; int __pyx_v_use_setstate; @@ -27951,7 +27983,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_8__reduce __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_state); @@ -27969,15 +28001,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_8__reduce */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_11__setstate_cython__(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_11__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_8PieceSet_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_11__setstate_cython__(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_8PieceSet_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_8PieceSet_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_8PieceSet_11__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -28039,11 +28071,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10__setstate_cython__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v_self), __pyx_v___pyx_state); + __pyx_r = __pyx_pf_13blokus_cython_8PieceSet_10__setstate_cython__(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -28053,7 +28085,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10__setstate_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_pf_13blokus_cython_8PieceSet_10__setstate_cython__(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -28075,7 +28107,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10__setst PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); __PYX_ERR(1, 17, __pyx_L1_error) } - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_PieceSet__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython___pyx_unpickle_PieceSet__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -28093,7 +28125,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10__setst __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PieceSet.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PieceSet.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -28101,7 +28133,74 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10__setst return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":315 +/* "blokus_cython.pyx":311 + * + * + * def get_standard_pieces(): # <<<<<<<<<<<<<< + * """Python-accessible function to get the standard piece set.""" + * return list(STANDARD_PIECES) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13blokus_cython_1get_standard_pieces(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ +PyDoc_STRVAR(__pyx_doc_13blokus_cython_get_standard_pieces, "Python-accessible function to get the standard piece set."); +static PyMethodDef __pyx_mdef_13blokus_cython_1get_standard_pieces = {"get_standard_pieces", (PyCFunction)__pyx_pw_13blokus_cython_1get_standard_pieces, METH_NOARGS, __pyx_doc_13blokus_cython_get_standard_pieces}; +static PyObject *__pyx_pw_13blokus_cython_1get_standard_pieces(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_standard_pieces (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_13blokus_cython_get_standard_pieces(__pyx_self); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13blokus_cython_get_standard_pieces(CYTHON_UNUSED PyObject *__pyx_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_standard_pieces", 0); + + /* "blokus_cython.pyx":313 + * def get_standard_pieces(): + * """Python-accessible function to get the standard piece set.""" + * return list(STANDARD_PIECES) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PySequence_List(__pyx_v_13blokus_cython_STANDARD_PIECES); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 313, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "blokus_cython.pyx":311 + * + * + * def get_standard_pieces(): # <<<<<<<<<<<<<< + * """Python-accessible function to get the standard piece set.""" + * return list(STANDARD_PIECES) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("blokus_cython.get_standard_pieces", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "blokus_cython.pyx":320 * # ------------------------------------------------------------------- * * cdef list generate_orientations_cython(Piece piece): # <<<<<<<<<<<<<< @@ -28109,7 +28208,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8PieceSet_10__setst * cdef set orientations_set = set() */ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_generate_orientations_cython(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_piece) { +static PyObject *__pyx_f_13blokus_cython_generate_orientations_cython(struct __pyx_obj_13blokus_cython_Piece *__pyx_v_piece) { PyObject *__pyx_v_orientations_set = 0; PyObject *__pyx_v_result = 0; PyObject *__pyx_v_squares = 0; @@ -28132,43 +28231,43 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_generate_orientation int __pyx_clineno = 0; __Pyx_RefNannySetupContext("generate_orientations_cython", 0); - /* "blokus_gym/core/blokus_cython.pyx":317 + /* "blokus_cython.pyx":322 * cdef list generate_orientations_cython(Piece piece): * """Generate all unique orientations of a piece.""" * cdef set orientations_set = set() # <<<<<<<<<<<<<< * cdef list result = [] * cdef list squares = list(piece.squares) */ - __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error) + __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_orientations_set = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":318 + /* "blokus_cython.pyx":323 * """Generate all unique orientations of a piece.""" * cdef set orientations_set = set() * cdef list result = [] # <<<<<<<<<<<<<< * cdef list squares = list(piece.squares) * cdef list transformed */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 318, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_result = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":319 + /* "blokus_cython.pyx":324 * cdef set orientations_set = set() * cdef list result = [] * cdef list squares = list(piece.squares) # <<<<<<<<<<<<<< * cdef list transformed * cdef int i */ - __pyx_t_1 = PySequence_List(__pyx_v_piece->squares); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __pyx_L1_error) + __pyx_t_1 = PySequence_List(__pyx_v_piece->squares); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_squares = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":323 + /* "blokus_cython.pyx":328 * cdef int i * * for i in range(4): # 4 rotations (0, 90, 180, 270 degrees) # <<<<<<<<<<<<<< @@ -28178,31 +28277,31 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_generate_orientation for (__pyx_t_2 = 0; __pyx_t_2 < 4; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; - /* "blokus_gym/core/blokus_cython.pyx":324 + /* "blokus_cython.pyx":329 * * for i in range(4): # 4 rotations (0, 90, 180, 270 degrees) * transformed = rotate_squares_cython(squares, i) # <<<<<<<<<<<<<< * normalized = normalize_squares_cython(transformed) * key = tuple(normalized) */ - __pyx_t_1 = __pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cython(__pyx_v_squares, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error) + __pyx_t_1 = __pyx_f_13blokus_cython_rotate_squares_cython(__pyx_v_squares, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_transformed, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":325 + /* "blokus_cython.pyx":330 * for i in range(4): # 4 rotations (0, 90, 180, 270 degrees) * transformed = rotate_squares_cython(squares, i) * normalized = normalize_squares_cython(transformed) # <<<<<<<<<<<<<< * key = tuple(normalized) * */ - __pyx_t_1 = __pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cython(__pyx_v_transformed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 325, __pyx_L1_error) + __pyx_t_1 = __pyx_f_13blokus_cython_normalize_squares_cython(__pyx_v_transformed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_normalized, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":326 + /* "blokus_cython.pyx":331 * transformed = rotate_squares_cython(squares, i) * normalized = normalize_squares_cython(transformed) * key = tuple(normalized) # <<<<<<<<<<<<<< @@ -28211,45 +28310,45 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_generate_orientation */ if (unlikely(__pyx_v_normalized == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 326, __pyx_L1_error) + __PYX_ERR(0, 331, __pyx_L1_error) } - __pyx_t_1 = PyList_AsTuple(__pyx_v_normalized); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error) + __pyx_t_1 = PyList_AsTuple(__pyx_v_normalized); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_key, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":328 + /* "blokus_cython.pyx":333 * key = tuple(normalized) * * if key not in orientations_set: # <<<<<<<<<<<<<< * orientations_set.add(key) * corners = compute_corners_cython(normalized) */ - __pyx_t_3 = (__Pyx_PySet_ContainsTF(__pyx_v_key, __pyx_v_orientations_set, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 328, __pyx_L1_error) + __pyx_t_3 = (__Pyx_PySet_ContainsTF(__pyx_v_key, __pyx_v_orientations_set, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 333, __pyx_L1_error) if (__pyx_t_3) { - /* "blokus_gym/core/blokus_cython.pyx":329 + /* "blokus_cython.pyx":334 * * if key not in orientations_set: * orientations_set.add(key) # <<<<<<<<<<<<<< * corners = compute_corners_cython(normalized) * result.append(PieceOrientation(0, i, normalized, corners)) */ - __pyx_t_4 = PySet_Add(__pyx_v_orientations_set, __pyx_v_key); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 329, __pyx_L1_error) + __pyx_t_4 = PySet_Add(__pyx_v_orientations_set, __pyx_v_key); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 334, __pyx_L1_error) - /* "blokus_gym/core/blokus_cython.pyx":330 + /* "blokus_cython.pyx":335 * if key not in orientations_set: * orientations_set.add(key) * corners = compute_corners_cython(normalized) # <<<<<<<<<<<<<< * result.append(PieceOrientation(0, i, normalized, corners)) * */ - __pyx_t_1 = __pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cython(__pyx_v_normalized); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 330, __pyx_L1_error) + __pyx_t_1 = __pyx_f_13blokus_cython_compute_corners_cython(__pyx_v_normalized); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_corners, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":331 + /* "blokus_cython.pyx":336 * orientations_set.add(key) * corners = compute_corners_cython(normalized) * result.append(PieceOrientation(0, i, normalized, corners)) # <<<<<<<<<<<<<< @@ -28257,21 +28356,21 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_generate_orientation * return result */ __pyx_t_5 = NULL; - __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 331, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = 1; { PyObject *__pyx_callargs[5] = {__pyx_t_5, __pyx_mstate_global->__pyx_int_0, __pyx_t_6, __pyx_v_normalized, __pyx_v_corners}; - __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation, __pyx_callargs+__pyx_t_7, (5-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceOrientation, __pyx_callargs+__pyx_t_7, (5-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 331, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 336, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } - __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_result, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 331, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_result, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 336, __pyx_L1_error) __Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":328 + /* "blokus_cython.pyx":333 * key = tuple(normalized) * * if key not in orientations_set: # <<<<<<<<<<<<<< @@ -28281,7 +28380,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_generate_orientation } } - /* "blokus_gym/core/blokus_cython.pyx":333 + /* "blokus_cython.pyx":338 * result.append(PieceOrientation(0, i, normalized, corners)) * * return result # <<<<<<<<<<<<<< @@ -28293,7 +28392,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_generate_orientation __pyx_r = __pyx_v_result; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":315 + /* "blokus_cython.pyx":320 * # ------------------------------------------------------------------- * * cdef list generate_orientations_cython(Piece piece): # <<<<<<<<<<<<<< @@ -28306,7 +28405,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_generate_orientation __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.generate_orientations_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.generate_orientations_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_orientations_set); @@ -28321,7 +28420,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_generate_orientation return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":336 +/* "blokus_cython.pyx":341 * * * cdef list rotate_squares_cython(list squares, int rotations): # <<<<<<<<<<<<<< @@ -28329,7 +28428,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_generate_orientation * cdef list result = [] */ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cython(PyObject *__pyx_v_squares, int __pyx_v_rotations) { +static PyObject *__pyx_f_13blokus_cython_rotate_squares_cython(PyObject *__pyx_v_squares, int __pyx_v_rotations) { PyObject *__pyx_v_result = 0; int __pyx_v_x; int __pyx_v_y; @@ -28354,19 +28453,19 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cytho int __pyx_clineno = 0; __Pyx_RefNannySetupContext("rotate_squares_cython", 0); - /* "blokus_gym/core/blokus_cython.pyx":338 + /* "blokus_cython.pyx":343 * cdef list rotate_squares_cython(list squares, int rotations): * """Rotate squares by 90 * rotations degrees.""" * cdef list result = [] # <<<<<<<<<<<<<< * cdef int x, y, i * */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 338, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_result = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":341 + /* "blokus_cython.pyx":346 * cdef int x, y, i * * for x, y in squares: # <<<<<<<<<<<<<< @@ -28375,7 +28474,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cytho */ if (unlikely(__pyx_v_squares == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 341, __pyx_L1_error) + __PYX_ERR(0, 346, __pyx_L1_error) } __pyx_t_1 = __pyx_v_squares; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; @@ -28383,13 +28482,13 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cytho { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 341, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 346, __pyx_L1_error) #endif if (__pyx_t_2 >= __pyx_temp) break; } __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_2; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 341, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; @@ -28397,7 +28496,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cytho if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 341, __pyx_L1_error) + __PYX_ERR(0, 346, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -28407,22 +28506,22 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cytho __Pyx_INCREF(__pyx_t_5); } else { __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 341, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 346, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 341, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 346, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_5); } #else - __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 341, __pyx_L1_error) + __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 341, __pyx_L1_error) + __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; - __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 341, __pyx_L1_error) + __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); @@ -28430,7 +28529,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cytho __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 341, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 346, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L6_unpacking_done; @@ -28438,17 +28537,17 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cytho __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 341, __pyx_L1_error) + __PYX_ERR(0, 346, __pyx_L1_error) __pyx_L6_unpacking_done:; } - __pyx_t_8 = __Pyx_PyLong_As_int(__pyx_t_4); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 341, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyLong_As_int(__pyx_t_4); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 346, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 341, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 346, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_x = __pyx_t_8; __pyx_v_y = __pyx_t_9; - /* "blokus_gym/core/blokus_cython.pyx":342 + /* "blokus_cython.pyx":347 * * for x, y in squares: * for i in range(rotations): # <<<<<<<<<<<<<< @@ -28460,7 +28559,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cytho for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_8; __pyx_t_10+=1) { __pyx_v_i = __pyx_t_10; - /* "blokus_gym/core/blokus_cython.pyx":343 + /* "blokus_cython.pyx":348 * for x, y in squares: * for i in range(rotations): * x, y = -y, x # 90 degree rotation # <<<<<<<<<<<<<< @@ -28473,29 +28572,29 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cytho __pyx_v_y = __pyx_t_12; } - /* "blokus_gym/core/blokus_cython.pyx":344 + /* "blokus_cython.pyx":349 * for i in range(rotations): * x, y = -y, x # 90 degree rotation * result.append((x, y)) # <<<<<<<<<<<<<< * * return result */ - __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 344, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 344, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 344, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3) != (0)) __PYX_ERR(0, 344, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3) != (0)) __PYX_ERR(0, 349, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_5); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5) != (0)) __PYX_ERR(0, 344, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5) != (0)) __PYX_ERR(0, 349, __pyx_L1_error); __pyx_t_3 = 0; __pyx_t_5 = 0; - __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_4); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 344, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_4); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 349, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":341 + /* "blokus_cython.pyx":346 * cdef int x, y, i * * for x, y in squares: # <<<<<<<<<<<<<< @@ -28505,7 +28604,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cytho } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":346 + /* "blokus_cython.pyx":351 * result.append((x, y)) * * return result # <<<<<<<<<<<<<< @@ -28517,7 +28616,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cytho __pyx_r = __pyx_v_result; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":336 + /* "blokus_cython.pyx":341 * * * cdef list rotate_squares_cython(list squares, int rotations): # <<<<<<<<<<<<<< @@ -28532,7 +28631,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cytho __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.rotate_squares_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.rotate_squares_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_result); @@ -28540,9 +28639,9 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_rotate_squares_cytho __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_2generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ +static PyObject *__pyx_gb_13blokus_cython_24normalize_squares_cython_2generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ -/* "blokus_gym/core/blokus_cython.pyx":351 +/* "blokus_cython.pyx":356 * cdef list normalize_squares_cython(list squares): * """Normalize squares to start at (0, 0).""" * cdef int min_x = min(x for x, _ in squares) # <<<<<<<<<<<<<< @@ -28550,19 +28649,19 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares * */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr *__pyx_cur_scope; +static PyObject *__pyx_pf_13blokus_cython_24normalize_squares_cython_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { + struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("genexpr", 0); - __pyx_cur_scope = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL); + __pyx_cur_scope = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr *)__pyx_tp_new_13blokus_cython___pyx_scope_struct_1_genexpr(__pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr *)Py_None); + __pyx_cur_scope = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr *)Py_None); __Pyx_INCREF(Py_None); - __PYX_ERR(0, 351, __pyx_L1_error) + __PYX_ERR(0, 356, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } @@ -28570,7 +28669,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_24normalize_squares __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0); { - __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_2generator1, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_normalize_squares_cython_locals, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython); if (unlikely(!gen)) __PYX_ERR(0, 351, __pyx_L1_error) + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_13blokus_cython_24normalize_squares_cython_2generator1, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_normalize_squares_cython_locals, __pyx_mstate_global->__pyx_n_u_blokus_cython); if (unlikely(!gen)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; @@ -28578,7 +28677,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_24normalize_squares /* function exit code */ __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.normalize_squares_cython.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.normalize_squares_cython.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); @@ -28586,9 +28685,9 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_24normalize_squares return __pyx_r; } -static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_2generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +static PyObject *__pyx_gb_13blokus_cython_24normalize_squares_cython_2generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr *__pyx_cur_scope = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr *)__pyx_generator->closure); + struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr *__pyx_cur_scope = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; @@ -28612,12 +28711,12 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares __pyx_L3_first_run:; if (unlikely(__pyx_sent_value != Py_None)) { if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); - __PYX_ERR(0, 351, __pyx_L1_error) + __PYX_ERR(0, 356, __pyx_L1_error) } - if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 351, __pyx_L1_error) } + if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 356, __pyx_L1_error) } if (unlikely(__pyx_cur_scope->__pyx_genexpr_arg_0 == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 351, __pyx_L1_error) + __PYX_ERR(0, 356, __pyx_L1_error) } __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; @@ -28625,13 +28724,13 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 351, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 356, __pyx_L1_error) #endif if (__pyx_t_2 >= __pyx_temp) break; } __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_2; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 351, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; @@ -28639,7 +28738,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 351, __pyx_L1_error) + __PYX_ERR(0, 356, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -28649,22 +28748,22 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares __Pyx_INCREF(__pyx_t_5); } else { __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 351, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 351, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_5); } #else - __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 351, __pyx_L1_error) + __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 351, __pyx_L1_error) + __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; - __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 351, __pyx_L1_error) + __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); @@ -28672,7 +28771,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 351, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 356, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L7_unpacking_done; @@ -28680,7 +28779,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 351, __pyx_L1_error) + __PYX_ERR(0, 356, __pyx_L1_error) __pyx_L7_unpacking_done:; } __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_x); @@ -28707,7 +28806,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 351, __pyx_L1_error) + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 356, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); @@ -28735,9 +28834,9 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_5generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ +static PyObject *__pyx_gb_13blokus_cython_24normalize_squares_cython_5generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ -/* "blokus_gym/core/blokus_cython.pyx":352 +/* "blokus_cython.pyx":357 * """Normalize squares to start at (0, 0).""" * cdef int min_x = min(x for x, _ in squares) * cdef int min_y = min(y for _, y in squares) # <<<<<<<<<<<<<< @@ -28745,19 +28844,19 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares * return [(x - min_x, y - min_y) for x, y in squares] */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr *__pyx_cur_scope; +static PyObject *__pyx_pf_13blokus_cython_24normalize_squares_cython_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { + struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("genexpr", 0); - __pyx_cur_scope = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL); + __pyx_cur_scope = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr *)__pyx_tp_new_13blokus_cython___pyx_scope_struct_2_genexpr(__pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr *)Py_None); + __pyx_cur_scope = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr *)Py_None); __Pyx_INCREF(Py_None); - __PYX_ERR(0, 352, __pyx_L1_error) + __PYX_ERR(0, 357, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } @@ -28765,7 +28864,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_24normalize_squares __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0); { - __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_5generator2, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_normalize_squares_cython_locals, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython); if (unlikely(!gen)) __PYX_ERR(0, 352, __pyx_L1_error) + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_13blokus_cython_24normalize_squares_cython_5generator2, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_normalize_squares_cython_locals, __pyx_mstate_global->__pyx_n_u_blokus_cython); if (unlikely(!gen)) __PYX_ERR(0, 357, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; @@ -28773,7 +28872,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_24normalize_squares /* function exit code */ __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.normalize_squares_cython.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.normalize_squares_cython.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); @@ -28781,9 +28880,9 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_24normalize_squares return __pyx_r; } -static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_5generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +static PyObject *__pyx_gb_13blokus_cython_24normalize_squares_cython_5generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr *__pyx_cur_scope = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr *)__pyx_generator->closure); + struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr *__pyx_cur_scope = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; @@ -28807,12 +28906,12 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares __pyx_L3_first_run:; if (unlikely(__pyx_sent_value != Py_None)) { if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); - __PYX_ERR(0, 352, __pyx_L1_error) + __PYX_ERR(0, 357, __pyx_L1_error) } - if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 352, __pyx_L1_error) } + if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 357, __pyx_L1_error) } if (unlikely(__pyx_cur_scope->__pyx_genexpr_arg_0 == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 352, __pyx_L1_error) + __PYX_ERR(0, 357, __pyx_L1_error) } __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; @@ -28820,13 +28919,13 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 352, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 357, __pyx_L1_error) #endif if (__pyx_t_2 >= __pyx_temp) break; } __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_2; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 352, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; @@ -28834,7 +28933,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 352, __pyx_L1_error) + __PYX_ERR(0, 357, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -28844,22 +28943,22 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares __Pyx_INCREF(__pyx_t_5); } else { __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 357, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 352, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 357, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_5); } #else - __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 352, __pyx_L1_error) + __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 352, __pyx_L1_error) + __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; - __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 352, __pyx_L1_error) + __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); @@ -28867,7 +28966,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 352, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 357, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L7_unpacking_done; @@ -28875,7 +28974,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 352, __pyx_L1_error) + __PYX_ERR(0, 357, __pyx_L1_error) __pyx_L7_unpacking_done:; } __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__); @@ -28902,7 +29001,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 352, __pyx_L1_error) + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 357, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); @@ -28931,7 +29030,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":349 +/* "blokus_cython.pyx":354 * * * cdef list normalize_squares_cython(list squares): # <<<<<<<<<<<<<< @@ -28939,11 +29038,11 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares * cdef int min_x = min(x for x, _ in squares) */ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cython(PyObject *__pyx_v_squares) { +static PyObject *__pyx_f_13blokus_cython_normalize_squares_cython(PyObject *__pyx_v_squares) { int __pyx_v_min_x; int __pyx_v_min_y; - PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_2generator1 = 0; - PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_5generator2 = 0; + PyObject *__pyx_gb_13blokus_cython_24normalize_squares_cython_2generator1 = 0; + PyObject *__pyx_gb_13blokus_cython_24normalize_squares_cython_5generator2 = 0; PyObject *__pyx_8genexpr5__pyx_v_x = NULL; PyObject *__pyx_8genexpr5__pyx_v_y = NULL; PyObject *__pyx_r = NULL; @@ -28963,7 +29062,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy int __pyx_clineno = 0; __Pyx_RefNannySetupContext("normalize_squares_cython", 0); - /* "blokus_gym/core/blokus_cython.pyx":351 + /* "blokus_cython.pyx":356 * cdef list normalize_squares_cython(list squares): * """Normalize squares to start at (0, 0).""" * cdef int min_x = min(x for x, _ in squares) # <<<<<<<<<<<<<< @@ -28971,7 +29070,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy * */ __pyx_t_2 = NULL; - __pyx_t_3 = __pyx_pf_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_genexpr(NULL, __pyx_v_squares); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 351, __pyx_L1_error) + __pyx_t_3 = __pyx_pf_13blokus_cython_24normalize_squares_cython_genexpr(NULL, __pyx_v_squares); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = 1; { @@ -28979,14 +29078,14 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_min, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 351, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } - __pyx_t_5 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 351, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_min_x = __pyx_t_5; - /* "blokus_gym/core/blokus_cython.pyx":352 + /* "blokus_cython.pyx":357 * """Normalize squares to start at (0, 0).""" * cdef int min_x = min(x for x, _ in squares) * cdef int min_y = min(y for _, y in squares) # <<<<<<<<<<<<<< @@ -28994,7 +29093,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy * return [(x - min_x, y - min_y) for x, y in squares] */ __pyx_t_3 = NULL; - __pyx_t_2 = __pyx_pf_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_3genexpr(NULL, __pyx_v_squares); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 352, __pyx_L1_error) + __pyx_t_2 = __pyx_pf_13blokus_cython_24normalize_squares_cython_3genexpr(NULL, __pyx_v_squares); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = 1; { @@ -29002,14 +29101,14 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_min, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } - __pyx_t_5 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 352, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 357, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_min_y = __pyx_t_5; - /* "blokus_gym/core/blokus_cython.pyx":354 + /* "blokus_cython.pyx":359 * cdef int min_y = min(y for _, y in squares) * * return [(x - min_x, y - min_y) for x, y in squares] # <<<<<<<<<<<<<< @@ -29018,11 +29117,11 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 354, __pyx_L5_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 359, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(__pyx_v_squares == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 354, __pyx_L5_error) + __PYX_ERR(0, 359, __pyx_L5_error) } __pyx_t_2 = __pyx_v_squares; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0; @@ -29030,13 +29129,13 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 354, __pyx_L5_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 359, __pyx_L5_error) #endif if (__pyx_t_6 >= __pyx_temp) break; } __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_2, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_6; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 354, __pyx_L5_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 359, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; @@ -29044,7 +29143,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 354, __pyx_L5_error) + __PYX_ERR(0, 359, __pyx_L5_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -29054,22 +29153,22 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy __Pyx_INCREF(__pyx_t_8); } else { __pyx_t_7 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 354, __pyx_L5_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 359, __pyx_L5_error) __Pyx_XGOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 354, __pyx_L5_error) + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 359, __pyx_L5_error) __Pyx_XGOTREF(__pyx_t_8); } #else - __pyx_t_7 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 354, __pyx_L5_error) + __pyx_t_7 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 359, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 354, __pyx_L5_error) + __pyx_t_8 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 359, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; - __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 354, __pyx_L5_error) + __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 359, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_9); @@ -29077,7 +29176,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy __Pyx_GOTREF(__pyx_t_7); index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < (0)) __PYX_ERR(0, 354, __pyx_L5_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < (0)) __PYX_ERR(0, 359, __pyx_L5_error) __pyx_t_10 = NULL; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L9_unpacking_done; @@ -29085,32 +29184,32 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_10 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 354, __pyx_L5_error) + __PYX_ERR(0, 359, __pyx_L5_error) __pyx_L9_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_8genexpr5__pyx_v_x, __pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_8genexpr5__pyx_v_y, __pyx_t_8); __pyx_t_8 = 0; - __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_min_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 354, __pyx_L5_error) + __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_min_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 359, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = PyNumber_Subtract(__pyx_8genexpr5__pyx_v_x, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 354, __pyx_L5_error) + __pyx_t_8 = PyNumber_Subtract(__pyx_8genexpr5__pyx_v_x, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 359, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_min_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 354, __pyx_L5_error) + __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_min_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 359, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = PyNumber_Subtract(__pyx_8genexpr5__pyx_v_y, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 354, __pyx_L5_error) + __pyx_t_7 = PyNumber_Subtract(__pyx_8genexpr5__pyx_v_y, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 359, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 354, __pyx_L5_error) + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 359, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_8); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8) != (0)) __PYX_ERR(0, 354, __pyx_L5_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8) != (0)) __PYX_ERR(0, 359, __pyx_L5_error); __Pyx_GIVEREF(__pyx_t_7); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7) != (0)) __PYX_ERR(0, 354, __pyx_L5_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7) != (0)) __PYX_ERR(0, 359, __pyx_L5_error); __pyx_t_8 = 0; __pyx_t_7 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 354, __pyx_L5_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 359, __pyx_L5_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -29127,7 +29226,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy __pyx_t_1 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":349 + /* "blokus_cython.pyx":354 * * * cdef list normalize_squares_cython(list squares): # <<<<<<<<<<<<<< @@ -29143,11 +29242,11 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.normalize_squares_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.normalize_squares_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; - __Pyx_XDECREF(__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_2generator1); - __Pyx_XDECREF(__pyx_gb_10blokus_gym_4core_13blokus_cython_24normalize_squares_cython_5generator2); + __Pyx_XDECREF(__pyx_gb_13blokus_cython_24normalize_squares_cython_2generator1); + __Pyx_XDECREF(__pyx_gb_13blokus_cython_24normalize_squares_cython_5generator2); __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_x); __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_y); __Pyx_XGIVEREF(__pyx_r); @@ -29155,7 +29254,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":357 +/* "blokus_cython.pyx":362 * * * cdef list compute_corners_cython(list squares): # <<<<<<<<<<<<<< @@ -29163,7 +29262,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_normalize_squares_cy * cdef set corners = set() */ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cython(PyObject *__pyx_v_squares) { +static PyObject *__pyx_f_13blokus_cython_compute_corners_cython(PyObject *__pyx_v_squares) { PyObject *__pyx_v_corners = 0; int __pyx_v_x; int __pyx_v_y; @@ -29187,19 +29286,19 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth int __pyx_clineno = 0; __Pyx_RefNannySetupContext("compute_corners_cython", 0); - /* "blokus_gym/core/blokus_cython.pyx":359 + /* "blokus_cython.pyx":364 * cdef list compute_corners_cython(list squares): * """Compute corner squares (diagonal neighbors).""" * cdef set corners = set() # <<<<<<<<<<<<<< * cdef int x, y, dx, dy * */ - __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 359, __pyx_L1_error) + __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_corners = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":362 + /* "blokus_cython.pyx":367 * cdef int x, y, dx, dy * * for x, y in squares: # <<<<<<<<<<<<<< @@ -29208,7 +29307,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth */ if (unlikely(__pyx_v_squares == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 362, __pyx_L1_error) + __PYX_ERR(0, 367, __pyx_L1_error) } __pyx_t_1 = __pyx_v_squares; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; @@ -29216,13 +29315,13 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 362, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 367, __pyx_L1_error) #endif if (__pyx_t_2 >= __pyx_temp) break; } __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_2; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 362, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 367, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; @@ -29230,7 +29329,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 362, __pyx_L1_error) + __PYX_ERR(0, 367, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -29240,22 +29339,22 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth __Pyx_INCREF(__pyx_t_5); } else { __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 362, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 367, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 362, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 367, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_5); } #else - __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 362, __pyx_L1_error) + __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 367, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 362, __pyx_L1_error) + __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 367, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; - __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 362, __pyx_L1_error) + __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 367, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); @@ -29263,7 +29362,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 362, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 367, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L6_unpacking_done; @@ -29271,17 +29370,17 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 362, __pyx_L1_error) + __PYX_ERR(0, 367, __pyx_L1_error) __pyx_L6_unpacking_done:; } - __pyx_t_8 = __Pyx_PyLong_As_int(__pyx_t_4); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 362, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyLong_As_int(__pyx_t_4); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 367, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 362, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 367, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_x = __pyx_t_8; __pyx_v_y = __pyx_t_9; - /* "blokus_gym/core/blokus_cython.pyx":363 + /* "blokus_cython.pyx":368 * * for x, y in squares: * for dx, dy in [(-1, -1), (1, -1), (-1, 1), (1, 1)]: # <<<<<<<<<<<<<< @@ -29298,7 +29397,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_10); #endif ++__pyx_t_10; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 363, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (likely(__pyx_t_5 != Py_None)) { PyObject* sequence = __pyx_t_5; @@ -29306,7 +29405,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 363, __pyx_L1_error) + __PYX_ERR(0, 368, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); @@ -29314,45 +29413,45 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_6); #else - __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 363, __pyx_L1_error) + __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 363, __pyx_L1_error) + __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 363, __pyx_L1_error) + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 368, __pyx_L1_error) } - __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 363, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 368, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_8 = __Pyx_PyLong_As_int(__pyx_t_6); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 363, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyLong_As_int(__pyx_t_6); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 368, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_dx = __pyx_t_9; __pyx_v_dy = __pyx_t_8; - /* "blokus_gym/core/blokus_cython.pyx":364 + /* "blokus_cython.pyx":369 * for x, y in squares: * for dx, dy in [(-1, -1), (1, -1), (-1, 1), (1, 1)]: * corners.add((x + dx, y + dy)) # <<<<<<<<<<<<<< * * return list(corners) */ - __pyx_t_5 = __Pyx_PyLong_From_int((__pyx_v_x + __pyx_v_dx)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 364, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyLong_From_int((__pyx_v_x + __pyx_v_dx)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyLong_From_int((__pyx_v_y + __pyx_v_dy)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 364, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyLong_From_int((__pyx_v_y + __pyx_v_dy)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 364, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5) != (0)) __PYX_ERR(0, 364, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5) != (0)) __PYX_ERR(0, 369, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_6); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6) != (0)) __PYX_ERR(0, 364, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6) != (0)) __PYX_ERR(0, 369, __pyx_L1_error); __pyx_t_5 = 0; __pyx_t_6 = 0; - __pyx_t_11 = PySet_Add(__pyx_v_corners, __pyx_t_4); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 364, __pyx_L1_error) + __pyx_t_11 = PySet_Add(__pyx_v_corners, __pyx_t_4); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 369, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":363 + /* "blokus_cython.pyx":368 * * for x, y in squares: * for dx, dy in [(-1, -1), (1, -1), (-1, 1), (1, 1)]: # <<<<<<<<<<<<<< @@ -29362,7 +29461,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":362 + /* "blokus_cython.pyx":367 * cdef int x, y, dx, dy * * for x, y in squares: # <<<<<<<<<<<<<< @@ -29372,7 +29471,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":366 + /* "blokus_cython.pyx":371 * corners.add((x + dx, y + dy)) * * return list(corners) # <<<<<<<<<<<<<< @@ -29380,13 +29479,13 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PySequence_List(__pyx_v_corners); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error) + __pyx_t_1 = PySequence_List(__pyx_v_corners); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":357 + /* "blokus_cython.pyx":362 * * * cdef list compute_corners_cython(list squares): # <<<<<<<<<<<<<< @@ -29401,7 +29500,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.compute_corners_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.compute_corners_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_corners); @@ -29410,7 +29509,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":383 +/* "blokus_cython.pyx":388 * cdef public bint can_move * * def __init__(self): # <<<<<<<<<<<<<< @@ -29419,8 +29518,8 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_compute_corners_cyth */ /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static int __pyx_pw_13blokus_cython_11PlayerState_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_13blokus_cython_11PlayerState_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { CYTHON_UNUSED Py_ssize_t __pyx_nargs; CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; @@ -29436,14 +29535,14 @@ static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_1__init__(P const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return -1; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState___init__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState___init__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState___init__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_11PlayerState___init__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -29452,7 +29551,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState___init__(st int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); - /* "blokus_gym/core/blokus_cython.pyx":384 + /* "blokus_cython.pyx":389 * * def __init__(self): * self.idx = -1 # <<<<<<<<<<<<<< @@ -29461,14 +29560,14 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState___init__(st */ __pyx_v_self->idx = -1; - /* "blokus_gym/core/blokus_cython.pyx":385 + /* "blokus_cython.pyx":390 * def __init__(self): * self.idx = -1 * self.available_pieces = set() # <<<<<<<<<<<<<< * self.corners = set() * self.score = 0 */ - __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 385, __pyx_L1_error) + __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->available_pieces); @@ -29476,14 +29575,14 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState___init__(st __pyx_v_self->available_pieces = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":386 + /* "blokus_cython.pyx":391 * self.idx = -1 * self.available_pieces = set() * self.corners = set() # <<<<<<<<<<<<<< * self.score = 0 * self.has_started = False */ - __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 386, __pyx_L1_error) + __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->corners); @@ -29491,7 +29590,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState___init__(st __pyx_v_self->corners = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":387 + /* "blokus_cython.pyx":392 * self.available_pieces = set() * self.corners = set() * self.score = 0 # <<<<<<<<<<<<<< @@ -29500,7 +29599,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState___init__(st */ __pyx_v_self->score = 0; - /* "blokus_gym/core/blokus_cython.pyx":388 + /* "blokus_cython.pyx":393 * self.corners = set() * self.score = 0 * self.has_started = False # <<<<<<<<<<<<<< @@ -29509,7 +29608,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState___init__(st */ __pyx_v_self->has_started = 0; - /* "blokus_gym/core/blokus_cython.pyx":389 + /* "blokus_cython.pyx":394 * self.score = 0 * self.has_started = False * self.can_move = True # <<<<<<<<<<<<<< @@ -29518,7 +29617,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState___init__(st */ __pyx_v_self->can_move = 1; - /* "blokus_gym/core/blokus_cython.pyx":383 + /* "blokus_cython.pyx":388 * cdef public bint can_move * * def __init__(self): # <<<<<<<<<<<<<< @@ -29531,14 +29630,14 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState___init__(st goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PlayerState.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PlayerState.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":376 +/* "blokus_cython.pyx":381 * """State for a single player.""" * * cdef public int idx # <<<<<<<<<<<<<< @@ -29547,21 +29646,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState___init__(st */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_3idx_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_3idx_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_3idx___get__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_3idx___get__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -29570,7 +29669,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->idx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 376, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->idx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -29579,7 +29678,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx_ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PlayerState.idx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PlayerState.idx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -29588,40 +29687,40 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_11PlayerState_3idx_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_11PlayerState_3idx_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_3idx_2__set__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_11PlayerState_3idx_2__set__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 376, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 381, __pyx_L1_error) __pyx_v_self->idx = __pyx_t_1; /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PlayerState.idx.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PlayerState.idx.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":377 +/* "blokus_cython.pyx":382 * * cdef public int idx * cdef public set available_pieces # <<<<<<<<<<<<<< @@ -29630,21 +29729,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx_2__set */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_16available_pieces_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_16available_pieces_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_16available_pieces___get__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_16available_pieces___get__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -29661,21 +29760,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16ava } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_11PlayerState_16available_pieces_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_11PlayerState_16available_pieces_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_16available_pieces_2__set__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_11PlayerState_16available_pieces_2__set__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -29685,7 +29784,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16available __Pyx_RefNannySetupContext("__set__", 0); __pyx_t_1 = __pyx_v_value; __Pyx_INCREF(__pyx_t_1); - if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_1))) __PYX_ERR(0, 377, __pyx_L1_error) + if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_1))) __PYX_ERR(0, 382, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->available_pieces); __Pyx_DECREF(__pyx_v_self->available_pieces); @@ -29697,7 +29796,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16available goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PlayerState.available_pieces.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PlayerState.available_pieces.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -29705,21 +29804,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16available } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_11PlayerState_16available_pieces_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_11PlayerState_16available_pieces_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_16available_pieces_4__del__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_11PlayerState_16available_pieces_4__del__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -29735,7 +29834,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16available return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":378 +/* "blokus_cython.pyx":383 * cdef public int idx * cdef public set available_pieces * cdef public set corners # <<<<<<<<<<<<<< @@ -29744,21 +29843,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_16available */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_7corners_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_7corners_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_7corners___get__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_7corners___get__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -29775,21 +29874,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corn } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_11PlayerState_7corners_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_11PlayerState_7corners_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_7corners_2__set__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_11PlayerState_7corners_2__set__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -29799,7 +29898,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_2_ __Pyx_RefNannySetupContext("__set__", 0); __pyx_t_1 = __pyx_v_value; __Pyx_INCREF(__pyx_t_1); - if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_1))) __PYX_ERR(0, 378, __pyx_L1_error) + if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_1))) __PYX_ERR(0, 383, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->corners); __Pyx_DECREF(__pyx_v_self->corners); @@ -29811,7 +29910,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_2_ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PlayerState.corners.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PlayerState.corners.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -29819,21 +29918,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_2_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_11PlayerState_7corners_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_11PlayerState_7corners_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_7corners_4__del__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_11PlayerState_7corners_4__del__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -29849,7 +29948,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_4_ return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":379 +/* "blokus_cython.pyx":384 * cdef public set available_pieces * cdef public set corners * cdef public int score # <<<<<<<<<<<<<< @@ -29858,21 +29957,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_4_ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_5score_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_5score_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_5score_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_5score_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_5score___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_5score___get__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_5score___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_5score___get__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -29881,7 +29980,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_5scor int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->score); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 379, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->score); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -29890,7 +29989,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_5scor /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PlayerState.score.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PlayerState.score.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -29899,40 +29998,40 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_5scor } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_5score_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_5score_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_11PlayerState_5score_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_11PlayerState_5score_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_5score_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_5score_2__set__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_5score_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_11PlayerState_5score_2__set__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 379, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 384, __pyx_L1_error) __pyx_v_self->score = __pyx_t_1; /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PlayerState.score.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PlayerState.score.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":380 +/* "blokus_cython.pyx":385 * cdef public set corners * cdef public int score * cdef public bint has_started # <<<<<<<<<<<<<< @@ -29941,21 +30040,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_5score_2__s */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_11has_started_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_11has_started_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_11has_started_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_11has_started_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_11has_started___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_11has_started___get__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_11has_started___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_11has_started___get__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -29964,7 +30063,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_11has int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->has_started); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->has_started); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -29973,7 +30072,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_11has /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PlayerState.has_started.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PlayerState.has_started.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -29982,40 +30081,40 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_11has } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_11has_started_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_11has_started_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_11PlayerState_11has_started_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_11PlayerState_11has_started_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_11has_started_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_11has_started_2__set__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_11has_started_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_11PlayerState_11has_started_2__set__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 380, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 385, __pyx_L1_error) __pyx_v_self->has_started = __pyx_t_1; /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PlayerState.has_started.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PlayerState.has_started.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":381 +/* "blokus_cython.pyx":386 * cdef public int score * cdef public bint has_started * cdef public bint can_move # <<<<<<<<<<<<<< @@ -30024,21 +30123,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_11has_start */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_move_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_move_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_8can_move_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_8can_move_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_move___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_8can_move___get__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_move___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_8can_move___get__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -30047,7 +30146,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->can_move); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->can_move); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -30056,7 +30155,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PlayerState.can_move.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PlayerState.can_move.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -30065,34 +30164,34 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_move_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_move_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_11PlayerState_8can_move_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_11PlayerState_8can_move_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_move_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_8can_move_2__set__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_move_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_11PlayerState_8can_move_2__set__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 381, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 386, __pyx_L1_error) __pyx_v_self->can_move = __pyx_t_1; /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PlayerState.can_move.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PlayerState.can_move.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; @@ -30105,15 +30204,15 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_move_2 */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_3__reduce_cython__(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_3__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_11PlayerState_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_3__reduce_cython__(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_11PlayerState_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_11PlayerState_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_3__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -30139,14 +30238,14 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_2__reduce_cython__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_2__reduce_cython__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_2__reduce_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_2__reduce_cython__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self) { PyObject *__pyx_v_state = 0; PyObject *__pyx_v__dict = 0; int __pyx_v_use_setstate; @@ -30392,7 +30491,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_2__re __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PlayerState.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PlayerState.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_state); @@ -30410,15 +30509,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_2__re */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_5__setstate_cython__(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_5__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_11PlayerState_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_5__setstate_cython__(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_11PlayerState_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_11PlayerState_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_11PlayerState_5__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -30480,11 +30579,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PlayerState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PlayerState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_4__setstate_cython__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v_self), __pyx_v___pyx_state); + __pyx_r = __pyx_pf_13blokus_cython_11PlayerState_4__setstate_cython__(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -30494,7 +30593,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_4__setstate_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_pf_13blokus_cython_11PlayerState_4__setstate_cython__(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -30516,7 +30615,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_4__se PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); __PYX_ERR(1, 17, __pyx_L1_error) } - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_PlayerState__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython___pyx_unpickle_PlayerState__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -30534,7 +30633,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_4__se __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.PlayerState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.PlayerState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -30542,7 +30641,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_4__se return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":413 +/* "blokus_cython.pyx":418 * cdef public list _starting_corners * * def __init__(self, int board_size=20, PieceSet pieces=None, int num_players=4, bint corner_rule=True): # <<<<<<<<<<<<<< @@ -30551,10 +30650,10 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_11PlayerState_4__se */ /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static int __pyx_pw_13blokus_cython_10BlokusGame_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_v_board_size; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_pieces = 0; + struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_pieces = 0; int __pyx_v_num_players; int __pyx_v_corner_rule; CYTHON_UNUSED Py_ssize_t __pyx_nargs; @@ -30575,86 +30674,86 @@ static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_1__init__(Py { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_board_size,&__pyx_mstate_global->__pyx_n_u_pieces,&__pyx_mstate_global->__pyx_n_u_num_players,&__pyx_mstate_global->__pyx_n_u_corner_rule,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; - if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 413, __pyx_L3_error) + if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 418, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 4: values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 413, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 418, __pyx_L3_error) CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 413, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 418, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 413, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 418, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 413, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 418, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 413, __pyx_L3_error) - if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)Py_None)); + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 418, __pyx_L3_error) + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_13blokus_cython_PieceSet *)Py_None)); } else { switch (__pyx_nargs) { case 4: values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 413, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 418, __pyx_L3_error) CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 413, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 418, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 413, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 418, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 413, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 418, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } - if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)Py_None)); + if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_13blokus_cython_PieceSet *)Py_None)); } if (values[0]) { - __pyx_v_board_size = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_board_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 413, __pyx_L3_error) + __pyx_v_board_size = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_board_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 418, __pyx_L3_error) } else { __pyx_v_board_size = ((int)20); } - __pyx_v_pieces = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)values[1]); + __pyx_v_pieces = ((struct __pyx_obj_13blokus_cython_PieceSet *)values[1]); if (values[2]) { - __pyx_v_num_players = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_num_players == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 413, __pyx_L3_error) + __pyx_v_num_players = __Pyx_PyLong_As_int(values[2]); if (unlikely((__pyx_v_num_players == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 418, __pyx_L3_error) } else { __pyx_v_num_players = ((int)4); } if (values[3]) { - __pyx_v_corner_rule = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_corner_rule == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 413, __pyx_L3_error) + __pyx_v_corner_rule = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_corner_rule == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 418, __pyx_L3_error) } else { __pyx_v_corner_rule = ((int)1); } } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 4, __pyx_nargs); __PYX_ERR(0, 413, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 4, __pyx_nargs); __PYX_ERR(0, 418, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pieces), __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet, 1, "pieces", 0))) __PYX_ERR(0, 413, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_board_size, __pyx_v_pieces, __pyx_v_num_players, __pyx_v_corner_rule); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pieces), __pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceSet, 1, "pieces", 0))) __PYX_ERR(0, 418, __pyx_L1_error) + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame___init__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_board_size, __pyx_v_pieces, __pyx_v_num_players, __pyx_v_corner_rule); /* function exit code */ goto __pyx_L0; @@ -30673,11 +30772,11 @@ static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_1__init__(Py return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_board_size, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v_pieces, int __pyx_v_num_players, int __pyx_v_corner_rule) { +static int __pyx_pf_13blokus_cython_10BlokusGame___init__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_board_size, struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v_pieces, int __pyx_v_num_players, int __pyx_v_corner_rule) { PyObject *__pyx_v_piece_id = NULL; long __pyx_v_max_idx; int __pyx_v_i; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_player = NULL; + struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_player = NULL; PyObject *__pyx_8genexpr6__pyx_v_idx = NULL; PyObject *__pyx_8genexpr6__pyx_v_move = NULL; int __pyx_r; @@ -30702,7 +30801,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); - /* "blokus_gym/core/blokus_cython.pyx":414 + /* "blokus_cython.pyx":419 * * def __init__(self, int board_size=20, PieceSet pieces=None, int num_players=4, bint corner_rule=True): * self.board_size = board_size # <<<<<<<<<<<<<< @@ -30711,14 +30810,14 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ __pyx_v_self->board_size = __pyx_v_board_size; - /* "blokus_gym/core/blokus_cython.pyx":415 + /* "blokus_cython.pyx":420 * def __init__(self, int board_size=20, PieceSet pieces=None, int num_players=4, bint corner_rule=True): * self.board_size = board_size * self.piece_set = pieces or PieceSet(STANDARD_PIECES) # <<<<<<<<<<<<<< * self.num_players = num_players * self.corner_rule = corner_rule */ - __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_pieces)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 415, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_pieces)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 420, __pyx_L1_error) if (!__pyx_t_2) { } else { __Pyx_INCREF((PyObject *)__pyx_v_pieces); @@ -30728,10 +30827,10 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __pyx_t_4 = NULL; __pyx_t_5 = 1; { - PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_10blokus_gym_4core_13blokus_cython_STANDARD_PIECES}; - __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_13blokus_cython_STANDARD_PIECES}; + __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceSet, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 415, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 420, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_3); } __Pyx_INCREF(__pyx_t_3); @@ -30741,10 +30840,10 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __Pyx_GIVEREF((PyObject *)__pyx_t_1); __Pyx_GOTREF((PyObject *)__pyx_v_self->piece_set); __Pyx_DECREF((PyObject *)__pyx_v_self->piece_set); - __pyx_v_self->piece_set = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_t_1); + __pyx_v_self->piece_set = ((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":416 + /* "blokus_cython.pyx":421 * self.board_size = board_size * self.piece_set = pieces or PieceSet(STANDARD_PIECES) * self.num_players = num_players # <<<<<<<<<<<<<< @@ -30753,7 +30852,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ __pyx_v_self->num_players = __pyx_v_num_players; - /* "blokus_gym/core/blokus_cython.pyx":417 + /* "blokus_cython.pyx":422 * self.piece_set = pieces or PieceSet(STANDARD_PIECES) * self.num_players = num_players * self.corner_rule = corner_rule # <<<<<<<<<<<<<< @@ -30762,7 +30861,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ __pyx_v_self->corner_rule = __pyx_v_corner_rule; - /* "blokus_gym/core/blokus_cython.pyx":419 + /* "blokus_cython.pyx":424 * self.corner_rule = corner_rule * * self.board = Board(board_size) # <<<<<<<<<<<<<< @@ -30770,15 +30869,15 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str * self.current_player = 0 */ __pyx_t_3 = NULL; - __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_board_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 419, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_board_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4}; - __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 419, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 424, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } __Pyx_GIVEREF((PyObject *)__pyx_t_1); @@ -30787,14 +30886,14 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __pyx_v_self->board = ((PyObject *)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":420 + /* "blokus_cython.pyx":425 * * self.board = Board(board_size) * self.players = [] # <<<<<<<<<<<<<< * self.current_player = 0 * self.rounds = 0 */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 420, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->players); @@ -30802,7 +30901,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __pyx_v_self->players = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":421 + /* "blokus_cython.pyx":426 * self.board = Board(board_size) * self.players = [] * self.current_player = 0 # <<<<<<<<<<<<<< @@ -30811,7 +30910,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ __pyx_v_self->current_player = 0; - /* "blokus_gym/core/blokus_cython.pyx":422 + /* "blokus_cython.pyx":427 * self.players = [] * self.current_player = 0 * self.rounds = 0 # <<<<<<<<<<<<<< @@ -30820,7 +30919,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ __pyx_v_self->rounds = 0; - /* "blokus_gym/core/blokus_cython.pyx":423 + /* "blokus_cython.pyx":428 * self.current_player = 0 * self.rounds = 0 * self.game_over = False # <<<<<<<<<<<<<< @@ -30829,14 +30928,14 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ __pyx_v_self->game_over = 0; - /* "blokus_gym/core/blokus_cython.pyx":426 + /* "blokus_cython.pyx":431 * * # Pre-compute all possible moves * self._action_moves = [] # <<<<<<<<<<<<<< * self._move_to_action = {} * self._generate_action_space() */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 426, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 431, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_action_moves); @@ -30844,14 +30943,14 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __pyx_v_self->_action_moves = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":427 + /* "blokus_cython.pyx":432 * # Pre-compute all possible moves * self._action_moves = [] * self._move_to_action = {} # <<<<<<<<<<<<<< * self._generate_action_space() * */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 427, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_move_to_action); @@ -30859,23 +30958,23 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __pyx_v_self->_move_to_action = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":428 + /* "blokus_cython.pyx":433 * self._action_moves = [] * self._move_to_action = {} * self._generate_action_space() # <<<<<<<<<<<<<< * * # Pre-compute action indices per piece */ - ((struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_generate_action_space(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 428, __pyx_L1_error) + ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_generate_action_space(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 433, __pyx_L1_error) - /* "blokus_gym/core/blokus_cython.pyx":431 + /* "blokus_cython.pyx":436 * * # Pre-compute action indices per piece * self._actions_by_piece = [] # <<<<<<<<<<<<<< * for piece_id in range(self.piece_set.num_pieces): * self._actions_by_piece.append([ */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 431, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_actions_by_piece); @@ -30883,7 +30982,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __pyx_v_self->_actions_by_piece = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":432 + /* "blokus_cython.pyx":437 * # Pre-compute action indices per piece * self._actions_by_piece = [] * for piece_id in range(self.piece_set.num_pieces): # <<<<<<<<<<<<<< @@ -30891,7 +30990,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str * idx for idx, move in enumerate(self._action_moves) */ __pyx_t_4 = NULL; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->piece_set), __pyx_mstate_global->__pyx_n_u_num_pieces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 432, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->piece_set), __pyx_mstate_global->__pyx_n_u_num_pieces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = 1; { @@ -30899,12 +30998,12 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(&PyRange_Type), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } - __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 432, __pyx_L1_error) + __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 432, __pyx_L1_error) + __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 437, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { { @@ -30912,7 +31011,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { - if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 432, __pyx_L1_error) + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 437, __pyx_L1_error) PyErr_Clear(); } break; @@ -30922,7 +31021,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __Pyx_XDECREF_SET(__pyx_v_piece_id, __pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":433 + /* "blokus_cython.pyx":438 * self._actions_by_piece = [] * for piece_id in range(self.piece_set.num_pieces): * self._actions_by_piece.append([ # <<<<<<<<<<<<<< @@ -30931,15 +31030,15 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ if (unlikely(__pyx_v_self->_actions_by_piece == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 433, __pyx_L1_error) + __PYX_ERR(0, 438, __pyx_L1_error) } { /* enter inner scope */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 433, __pyx_L9_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L9_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0); __pyx_t_4 = __pyx_mstate_global->__pyx_int_0; - /* "blokus_gym/core/blokus_cython.pyx":434 + /* "blokus_cython.pyx":439 * for piece_id in range(self.piece_set.num_pieces): * self._actions_by_piece.append([ * idx for idx, move in enumerate(self._action_moves) # <<<<<<<<<<<<<< @@ -30952,49 +31051,49 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_7); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 434, __pyx_L9_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 439, __pyx_L9_error) #endif if (__pyx_t_8 >= __pyx_temp) break; } __pyx_t_9 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_7, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_8; - if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 434, __pyx_L9_error) + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 439, __pyx_L9_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_XDECREF_SET(__pyx_8genexpr6__pyx_v_move, __pyx_t_9); __pyx_t_9 = 0; __Pyx_INCREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_8genexpr6__pyx_v_idx, __pyx_t_4); - __pyx_t_9 = __Pyx_PyLong_AddObjC(__pyx_t_4, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 434, __pyx_L9_error) + __pyx_t_9 = __Pyx_PyLong_AddObjC(__pyx_t_4, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 439, __pyx_L9_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = __pyx_t_9; __pyx_t_9 = 0; - /* "blokus_gym/core/blokus_cython.pyx":435 + /* "blokus_cython.pyx":440 * self._actions_by_piece.append([ * idx for idx, move in enumerate(self._action_moves) * if move.piece_id == piece_id # <<<<<<<<<<<<<< * ]) * */ - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_8genexpr6__pyx_v_move, __pyx_mstate_global->__pyx_n_u_piece_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 435, __pyx_L9_error) + __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_8genexpr6__pyx_v_move, __pyx_mstate_global->__pyx_n_u_piece_id); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 440, __pyx_L9_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = PyObject_RichCompare(__pyx_t_9, __pyx_v_piece_id, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 435, __pyx_L9_error) + __pyx_t_10 = PyObject_RichCompare(__pyx_t_9, __pyx_v_piece_id, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 440, __pyx_L9_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 435, __pyx_L9_error) + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 440, __pyx_L9_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (__pyx_t_2) { - /* "blokus_gym/core/blokus_cython.pyx":434 + /* "blokus_cython.pyx":439 * for piece_id in range(self.piece_set.num_pieces): * self._actions_by_piece.append([ * idx for idx, move in enumerate(self._action_moves) # <<<<<<<<<<<<<< * if move.piece_id == piece_id * ]) */ - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_8genexpr6__pyx_v_idx))) __PYX_ERR(0, 433, __pyx_L9_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_8genexpr6__pyx_v_idx))) __PYX_ERR(0, 438, __pyx_L9_error) - /* "blokus_gym/core/blokus_cython.pyx":435 + /* "blokus_cython.pyx":440 * self._actions_by_piece.append([ * idx for idx, move in enumerate(self._action_moves) * if move.piece_id == piece_id # <<<<<<<<<<<<<< @@ -31003,7 +31102,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ } - /* "blokus_gym/core/blokus_cython.pyx":434 + /* "blokus_cython.pyx":439 * for piece_id in range(self.piece_set.num_pieces): * self._actions_by_piece.append([ * idx for idx, move in enumerate(self._action_moves) # <<<<<<<<<<<<<< @@ -31023,17 +31122,17 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __pyx_L14_exit_scope:; } /* exit inner scope */ - /* "blokus_gym/core/blokus_cython.pyx":433 + /* "blokus_cython.pyx":438 * self._actions_by_piece = [] * for piece_id in range(self.piece_set.num_pieces): * self._actions_by_piece.append([ # <<<<<<<<<<<<<< * idx for idx, move in enumerate(self._action_moves) * if move.piece_id == piece_id */ - __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_self->_actions_by_piece, __pyx_t_1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 433, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_self->_actions_by_piece, __pyx_t_1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 438, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":432 + /* "blokus_cython.pyx":437 * # Pre-compute action indices per piece * self._actions_by_piece = [] * for piece_id in range(self.piece_set.num_pieces): # <<<<<<<<<<<<<< @@ -31043,7 +31142,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":439 + /* "blokus_cython.pyx":444 * * # Starting corners * max_idx = board_size - 1 # <<<<<<<<<<<<<< @@ -31052,80 +31151,80 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ __pyx_v_max_idx = (__pyx_v_board_size - 1); - /* "blokus_gym/core/blokus_cython.pyx":442 + /* "blokus_cython.pyx":447 * self._starting_corners = [ * (0, 0), * (0, max_idx), # <<<<<<<<<<<<<< * (max_idx, 0), * (max_idx, max_idx), */ - __pyx_t_3 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 442, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 442, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_0); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(0, 442, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(0, 447, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3) != (0)) __PYX_ERR(0, 442, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3) != (0)) __PYX_ERR(0, 447, __pyx_L1_error); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":443 + /* "blokus_cython.pyx":448 * (0, 0), * (0, max_idx), * (max_idx, 0), # <<<<<<<<<<<<<< * (max_idx, max_idx), * ] */ - __pyx_t_3 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 443, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 443, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3) != (0)) __PYX_ERR(0, 443, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3) != (0)) __PYX_ERR(0, 448, __pyx_L1_error); __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_0); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(0, 443, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(0, 448, __pyx_L1_error); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":444 + /* "blokus_cython.pyx":449 * (0, max_idx), * (max_idx, 0), * (max_idx, max_idx), # <<<<<<<<<<<<<< * ] * if num_players == 2: */ - __pyx_t_3 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 444, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_7 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 444, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 444, __pyx_L1_error) + __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3) != (0)) __PYX_ERR(0, 444, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3) != (0)) __PYX_ERR(0, 449, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_7); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_7) != (0)) __PYX_ERR(0, 444, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_7) != (0)) __PYX_ERR(0, 449, __pyx_L1_error); __pyx_t_3 = 0; __pyx_t_7 = 0; - /* "blokus_gym/core/blokus_cython.pyx":440 + /* "blokus_cython.pyx":445 * # Starting corners * max_idx = board_size - 1 * self._starting_corners = [ # <<<<<<<<<<<<<< * (0, 0), * (0, max_idx), */ - __pyx_t_7 = PyList_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 440, __pyx_L1_error) + __pyx_t_7 = PyList_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 445, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_mstate_global->__pyx_tuple[6]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[6]); - if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 0, __pyx_mstate_global->__pyx_tuple[6]) != (0)) __PYX_ERR(0, 440, __pyx_L1_error); + if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 0, __pyx_mstate_global->__pyx_tuple[6]) != (0)) __PYX_ERR(0, 445, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_1) != (0)) __PYX_ERR(0, 440, __pyx_L1_error); + if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_1) != (0)) __PYX_ERR(0, 445, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_4) != (0)) __PYX_ERR(0, 440, __pyx_L1_error); + if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_4) != (0)) __PYX_ERR(0, 445, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_10); - if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 3, __pyx_t_10) != (0)) __PYX_ERR(0, 440, __pyx_L1_error); + if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 3, __pyx_t_10) != (0)) __PYX_ERR(0, 445, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_10 = 0; @@ -31135,7 +31234,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __pyx_v_self->_starting_corners = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0; - /* "blokus_gym/core/blokus_cython.pyx":446 + /* "blokus_cython.pyx":451 * (max_idx, max_idx), * ] * if num_players == 2: # <<<<<<<<<<<<<< @@ -31145,32 +31244,32 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str switch (__pyx_v_num_players) { case 2: - /* "blokus_gym/core/blokus_cython.pyx":447 + /* "blokus_cython.pyx":452 * ] * if num_players == 2: * self._starting_corners = [(0, 0), (max_idx, max_idx)] # <<<<<<<<<<<<<< * elif num_players == 3: * self._starting_corners = [(0, 0), (0, max_idx), (max_idx, 0)] */ - __pyx_t_7 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 447, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_10 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 447, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 447, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_7); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7) != (0)) __PYX_ERR(0, 447, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7) != (0)) __PYX_ERR(0, 452, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_10); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_10) != (0)) __PYX_ERR(0, 447, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_10) != (0)) __PYX_ERR(0, 452, __pyx_L1_error); __pyx_t_7 = 0; __pyx_t_10 = 0; - __pyx_t_10 = PyList_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 447, __pyx_L1_error) + __pyx_t_10 = PyList_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_mstate_global->__pyx_tuple[6]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[6]); - if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 0, __pyx_mstate_global->__pyx_tuple[6]) != (0)) __PYX_ERR(0, 447, __pyx_L1_error); + if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 0, __pyx_mstate_global->__pyx_tuple[6]) != (0)) __PYX_ERR(0, 452, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_4) != (0)) __PYX_ERR(0, 447, __pyx_L1_error); + if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_4) != (0)) __PYX_ERR(0, 452, __pyx_L1_error); __pyx_t_4 = 0; __Pyx_GIVEREF(__pyx_t_10); __Pyx_GOTREF(__pyx_v_self->_starting_corners); @@ -31178,7 +31277,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __pyx_v_self->_starting_corners = ((PyObject*)__pyx_t_10); __pyx_t_10 = 0; - /* "blokus_gym/core/blokus_cython.pyx":446 + /* "blokus_cython.pyx":451 * (max_idx, max_idx), * ] * if num_players == 2: # <<<<<<<<<<<<<< @@ -31188,42 +31287,42 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str break; case 3: - /* "blokus_gym/core/blokus_cython.pyx":449 + /* "blokus_cython.pyx":454 * self._starting_corners = [(0, 0), (max_idx, max_idx)] * elif num_players == 3: * self._starting_corners = [(0, 0), (0, max_idx), (max_idx, 0)] # <<<<<<<<<<<<<< * * # Initialize players */ - __pyx_t_10 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 449, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 449, __pyx_L1_error) + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_0); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(0, 449, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(0, 454, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_10); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_10) != (0)) __PYX_ERR(0, 449, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_10) != (0)) __PYX_ERR(0, 454, __pyx_L1_error); __pyx_t_10 = 0; - __pyx_t_10 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 449, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyLong_From_long(__pyx_v_max_idx); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 449, __pyx_L1_error) + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_10); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_10) != (0)) __PYX_ERR(0, 449, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_10) != (0)) __PYX_ERR(0, 454, __pyx_L1_error); __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_0); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(0, 449, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(0, 454, __pyx_L1_error); __pyx_t_10 = 0; - __pyx_t_10 = PyList_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 449, __pyx_L1_error) + __pyx_t_10 = PyList_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_mstate_global->__pyx_tuple[6]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[6]); - if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 0, __pyx_mstate_global->__pyx_tuple[6]) != (0)) __PYX_ERR(0, 449, __pyx_L1_error); + if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 0, __pyx_mstate_global->__pyx_tuple[6]) != (0)) __PYX_ERR(0, 454, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_4) != (0)) __PYX_ERR(0, 449, __pyx_L1_error); + if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_4) != (0)) __PYX_ERR(0, 454, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_7); - if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 2, __pyx_t_7) != (0)) __PYX_ERR(0, 449, __pyx_L1_error); + if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 2, __pyx_t_7) != (0)) __PYX_ERR(0, 454, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_7 = 0; __Pyx_GIVEREF(__pyx_t_10); @@ -31232,7 +31331,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __pyx_v_self->_starting_corners = ((PyObject*)__pyx_t_10); __pyx_t_10 = 0; - /* "blokus_gym/core/blokus_cython.pyx":448 + /* "blokus_cython.pyx":453 * if num_players == 2: * self._starting_corners = [(0, 0), (max_idx, max_idx)] * elif num_players == 3: # <<<<<<<<<<<<<< @@ -31243,7 +31342,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str default: break; } - /* "blokus_gym/core/blokus_cython.pyx":452 + /* "blokus_cython.pyx":457 * * # Initialize players * for i in range(self.num_players): # <<<<<<<<<<<<<< @@ -31255,7 +31354,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) { __pyx_v_i = __pyx_t_14; - /* "blokus_gym/core/blokus_cython.pyx":453 + /* "blokus_cython.pyx":458 * # Initialize players * for i in range(self.num_players): * player = PlayerState() # <<<<<<<<<<<<<< @@ -31266,15 +31365,15 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __pyx_t_5 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; - __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_PlayerState, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 453, __pyx_L1_error) + if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 458, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_10); } - __Pyx_XDECREF_SET(__pyx_v_player, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_t_10)); + __Pyx_XDECREF_SET(__pyx_v_player, ((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_t_10)); __pyx_t_10 = 0; - /* "blokus_gym/core/blokus_cython.pyx":454 + /* "blokus_cython.pyx":459 * for i in range(self.num_players): * player = PlayerState() * player.idx = i # <<<<<<<<<<<<<< @@ -31283,14 +31382,14 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ __pyx_v_player->idx = __pyx_v_i; - /* "blokus_gym/core/blokus_cython.pyx":455 + /* "blokus_cython.pyx":460 * player = PlayerState() * player.idx = i * player.available_pieces = set(self.piece_set.piece_names) # <<<<<<<<<<<<<< * if self.corner_rule and i < len(self._starting_corners): * player.corners = {self._starting_corners[i]} */ - __pyx_t_10 = PySet_New(__pyx_v_self->piece_set->piece_names); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 455, __pyx_L1_error) + __pyx_t_10 = PySet_New(__pyx_v_self->piece_set->piece_names); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __Pyx_GOTREF(__pyx_v_player->available_pieces); @@ -31298,7 +31397,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __pyx_v_player->available_pieces = ((PyObject*)__pyx_t_10); __pyx_t_10 = 0; - /* "blokus_gym/core/blokus_cython.pyx":456 + /* "blokus_cython.pyx":461 * player.idx = i * player.available_pieces = set(self.piece_set.piece_names) * if self.corner_rule and i < len(self._starting_corners): # <<<<<<<<<<<<<< @@ -31314,16 +31413,16 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __Pyx_INCREF(__pyx_t_10); if (unlikely(__pyx_t_10 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 456, __pyx_L1_error) + __PYX_ERR(0, 461, __pyx_L1_error) } - __pyx_t_8 = __Pyx_PyList_GET_SIZE(__pyx_t_10); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 456, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyList_GET_SIZE(__pyx_t_10); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_15 = (__pyx_v_i < __pyx_t_8); __pyx_t_2 = __pyx_t_15; __pyx_L19_bool_binop_done:; if (__pyx_t_2) { - /* "blokus_gym/core/blokus_cython.pyx":457 + /* "blokus_cython.pyx":462 * player.available_pieces = set(self.piece_set.piece_names) * if self.corner_rule and i < len(self._starting_corners): * player.corners = {self._starting_corners[i]} # <<<<<<<<<<<<<< @@ -31332,13 +31431,13 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ if (unlikely(__pyx_v_self->_starting_corners == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 457, __pyx_L1_error) + __PYX_ERR(0, 462, __pyx_L1_error) } - __pyx_t_10 = __Pyx_GetItemInt_List(__pyx_v_self->_starting_corners, __pyx_v_i, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 457, __pyx_L1_error) + __pyx_t_10 = __Pyx_GetItemInt_List(__pyx_v_self->_starting_corners, __pyx_v_i, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 462, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - __pyx_t_7 = PySet_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 457, __pyx_L1_error) + __pyx_t_7 = PySet_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 462, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - if (PySet_Add(__pyx_t_7, __pyx_t_10) < (0)) __PYX_ERR(0, 457, __pyx_L1_error) + if (PySet_Add(__pyx_t_7, __pyx_t_10) < (0)) __PYX_ERR(0, 462, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_player->corners); @@ -31346,7 +31445,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __pyx_v_player->corners = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0; - /* "blokus_gym/core/blokus_cython.pyx":456 + /* "blokus_cython.pyx":461 * player.idx = i * player.available_pieces = set(self.piece_set.piece_names) * if self.corner_rule and i < len(self._starting_corners): # <<<<<<<<<<<<<< @@ -31356,7 +31455,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str goto __pyx_L18; } - /* "blokus_gym/core/blokus_cython.pyx":459 + /* "blokus_cython.pyx":464 * player.corners = {self._starting_corners[i]} * else: * player.corners = set() # <<<<<<<<<<<<<< @@ -31364,7 +31463,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str * player.has_started = False */ /*else*/ { - __pyx_t_7 = PySet_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 459, __pyx_L1_error) + __pyx_t_7 = PySet_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_player->corners); @@ -31374,7 +31473,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str } __pyx_L18:; - /* "blokus_gym/core/blokus_cython.pyx":460 + /* "blokus_cython.pyx":465 * else: * player.corners = set() * player.score = 0 # <<<<<<<<<<<<<< @@ -31383,7 +31482,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ __pyx_v_player->score = 0; - /* "blokus_gym/core/blokus_cython.pyx":461 + /* "blokus_cython.pyx":466 * player.corners = set() * player.score = 0 * player.has_started = False # <<<<<<<<<<<<<< @@ -31392,7 +31491,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ __pyx_v_player->has_started = 0; - /* "blokus_gym/core/blokus_cython.pyx":462 + /* "blokus_cython.pyx":467 * player.score = 0 * player.has_started = False * player.can_move = True # <<<<<<<<<<<<<< @@ -31401,7 +31500,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ __pyx_v_player->can_move = 1; - /* "blokus_gym/core/blokus_cython.pyx":463 + /* "blokus_cython.pyx":468 * player.has_started = False * player.can_move = True * self.players.append(player) # <<<<<<<<<<<<<< @@ -31410,12 +31509,12 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str */ if (unlikely(__pyx_v_self->players == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 463, __pyx_L1_error) + __PYX_ERR(0, 468, __pyx_L1_error) } - __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_self->players, ((PyObject *)__pyx_v_player)); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 463, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_self->players, ((PyObject *)__pyx_v_player)); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 468, __pyx_L1_error) } - /* "blokus_gym/core/blokus_cython.pyx":413 + /* "blokus_cython.pyx":418 * cdef public list _starting_corners * * def __init__(self, int board_size=20, PieceSet pieces=None, int num_players=4, bint corner_rule=True): # <<<<<<<<<<<<<< @@ -31433,7 +31532,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_XDECREF(__pyx_v_piece_id); @@ -31443,9 +31542,9 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame___init__(str __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_2generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ +static PyObject *__pyx_gb_13blokus_cython_10BlokusGame_22_generate_action_space_2generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ -/* "blokus_gym/core/blokus_cython.pyx":481 +/* "blokus_cython.pyx":486 * for orient_id, orient in enumerate(self.piece_set.get_orientations(piece_id)): * squares = orient.squares * max_x = max(x for x, _ in squares) # <<<<<<<<<<<<<< @@ -31453,19 +31552,19 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen * */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr *__pyx_cur_scope; +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_22_generate_action_space_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { + struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("genexpr", 0); - __pyx_cur_scope = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL); + __pyx_cur_scope = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr *)__pyx_tp_new_13blokus_cython___pyx_scope_struct_3_genexpr(__pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr *)Py_None); + __pyx_cur_scope = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr *)Py_None); __Pyx_INCREF(Py_None); - __PYX_ERR(0, 481, __pyx_L1_error) + __PYX_ERR(0, 486, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } @@ -31473,7 +31572,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0); { - __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_2generator3, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_BlokusGame__generate_action_spac, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython); if (unlikely(!gen)) __PYX_ERR(0, 481, __pyx_L1_error) + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_13blokus_cython_10BlokusGame_22_generate_action_space_2generator3, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_BlokusGame__generate_action_spac, __pyx_mstate_global->__pyx_n_u_blokus_cython); if (unlikely(!gen)) __PYX_ERR(0, 486, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; @@ -31481,7 +31580,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen /* function exit code */ __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame._generate_action_space.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame._generate_action_space.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); @@ -31489,9 +31588,9 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen return __pyx_r; } -static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_2generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +static PyObject *__pyx_gb_13blokus_cython_10BlokusGame_22_generate_action_space_2generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr *__pyx_cur_scope = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr *)__pyx_generator->closure); + struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr *__pyx_cur_scope = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; @@ -31515,12 +31614,12 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen __pyx_L3_first_run:; if (unlikely(__pyx_sent_value != Py_None)) { if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); - __PYX_ERR(0, 481, __pyx_L1_error) + __PYX_ERR(0, 486, __pyx_L1_error) } - if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 481, __pyx_L1_error) } + if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 486, __pyx_L1_error) } if (unlikely(__pyx_cur_scope->__pyx_genexpr_arg_0 == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 481, __pyx_L1_error) + __PYX_ERR(0, 486, __pyx_L1_error) } __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; @@ -31528,13 +31627,13 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 481, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 486, __pyx_L1_error) #endif if (__pyx_t_2 >= __pyx_temp) break; } __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_2; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 481, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 486, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; @@ -31542,7 +31641,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 481, __pyx_L1_error) + __PYX_ERR(0, 486, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -31552,22 +31651,22 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen __Pyx_INCREF(__pyx_t_5); } else { __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 481, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 486, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 481, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 486, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_5); } #else - __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 481, __pyx_L1_error) + __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 486, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 481, __pyx_L1_error) + __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 486, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; - __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 481, __pyx_L1_error) + __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 486, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); @@ -31575,7 +31674,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 481, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 486, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L7_unpacking_done; @@ -31583,7 +31682,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 481, __pyx_L1_error) + __PYX_ERR(0, 486, __pyx_L1_error) __pyx_L7_unpacking_done:; } __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_x); @@ -31610,7 +31709,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 481, __pyx_L1_error) + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 486, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); @@ -31638,9 +31737,9 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_5generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ +static PyObject *__pyx_gb_13blokus_cython_10BlokusGame_22_generate_action_space_5generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ -/* "blokus_gym/core/blokus_cython.pyx":482 +/* "blokus_cython.pyx":487 * squares = orient.squares * max_x = max(x for x, _ in squares) * max_y = max(y for _, y in squares) # <<<<<<<<<<<<<< @@ -31648,19 +31747,19 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen * for px in range(self.board_size - max_x): */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr *__pyx_cur_scope; +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_22_generate_action_space_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { + struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("genexpr", 0); - __pyx_cur_scope = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL); + __pyx_cur_scope = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr *)__pyx_tp_new_13blokus_cython___pyx_scope_struct_4_genexpr(__pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr *)Py_None); + __pyx_cur_scope = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr *)Py_None); __Pyx_INCREF(Py_None); - __PYX_ERR(0, 482, __pyx_L1_error) + __PYX_ERR(0, 487, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } @@ -31668,7 +31767,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0); { - __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_5generator4, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_BlokusGame__generate_action_spac, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython); if (unlikely(!gen)) __PYX_ERR(0, 482, __pyx_L1_error) + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_13blokus_cython_10BlokusGame_22_generate_action_space_5generator4, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_BlokusGame__generate_action_spac, __pyx_mstate_global->__pyx_n_u_blokus_cython); if (unlikely(!gen)) __PYX_ERR(0, 487, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; @@ -31676,7 +31775,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen /* function exit code */ __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame._generate_action_space.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame._generate_action_space.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); @@ -31684,9 +31783,9 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen return __pyx_r; } -static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_5generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +static PyObject *__pyx_gb_13blokus_cython_10BlokusGame_22_generate_action_space_5generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr *__pyx_cur_scope = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr *)__pyx_generator->closure); + struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr *__pyx_cur_scope = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; @@ -31710,12 +31809,12 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen __pyx_L3_first_run:; if (unlikely(__pyx_sent_value != Py_None)) { if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); - __PYX_ERR(0, 482, __pyx_L1_error) + __PYX_ERR(0, 487, __pyx_L1_error) } - if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 482, __pyx_L1_error) } + if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 487, __pyx_L1_error) } if (unlikely(__pyx_cur_scope->__pyx_genexpr_arg_0 == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 482, __pyx_L1_error) + __PYX_ERR(0, 487, __pyx_L1_error) } __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; @@ -31723,13 +31822,13 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 482, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 487, __pyx_L1_error) #endif if (__pyx_t_2 >= __pyx_temp) break; } __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_2; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 482, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; @@ -31737,7 +31836,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 482, __pyx_L1_error) + __PYX_ERR(0, 487, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -31747,22 +31846,22 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen __Pyx_INCREF(__pyx_t_5); } else { __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 482, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 487, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 482, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 487, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_5); } #else - __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 482, __pyx_L1_error) + __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 482, __pyx_L1_error) + __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; - __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 482, __pyx_L1_error) + __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); @@ -31770,7 +31869,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 482, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < (0)) __PYX_ERR(0, 487, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L7_unpacking_done; @@ -31778,7 +31877,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 482, __pyx_L1_error) + __PYX_ERR(0, 487, __pyx_L1_error) __pyx_L7_unpacking_done:; } __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v__); @@ -31805,7 +31904,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __pyx_cur_scope->__pyx_t_1; - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 482, __pyx_L1_error) + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 487, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); @@ -31834,7 +31933,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":465 +/* "blokus_cython.pyx":470 * self.players.append(player) * * cdef void _generate_action_space(self): # <<<<<<<<<<<<<< @@ -31842,19 +31941,19 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_gen * cdef int piece_id, orient_id */ -static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_action_space(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static void __pyx_f_13blokus_cython_10BlokusGame__generate_action_space(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { int __pyx_v_piece_id; int __pyx_v_orient_id; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_orient = 0; + struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_orient = 0; PyObject *__pyx_v_squares = 0; int __pyx_v_max_x; int __pyx_v_max_y; int __pyx_v_px; int __pyx_v_py; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move = 0; + struct __pyx_obj_13blokus_cython_Move *__pyx_v_move = 0; int __pyx_v_action_idx; - PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_2generator3 = 0; - PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_5generator4 = 0; + PyObject *__pyx_gb_13blokus_cython_10BlokusGame_22_generate_action_space_2generator3 = 0; + PyObject *__pyx_gb_13blokus_cython_10BlokusGame_22_generate_action_space_5generator4 = 0; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; @@ -31883,14 +31982,14 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_generate_action_space", 0); - /* "blokus_gym/core/blokus_cython.pyx":475 + /* "blokus_cython.pyx":480 * cdef int action_idx * * self._action_moves = [] # <<<<<<<<<<<<<< * self._move_to_action = {} * */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 475, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_action_moves); @@ -31898,14 +31997,14 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac __pyx_v_self->_action_moves = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":476 + /* "blokus_cython.pyx":481 * * self._action_moves = [] * self._move_to_action = {} # <<<<<<<<<<<<<< * * for piece_id in range(self.piece_set.num_pieces): */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 476, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_move_to_action); @@ -31913,22 +32012,22 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac __pyx_v_self->_move_to_action = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":478 + /* "blokus_cython.pyx":483 * self._move_to_action = {} * * for piece_id in range(self.piece_set.num_pieces): # <<<<<<<<<<<<<< * for orient_id, orient in enumerate(self.piece_set.get_orientations(piece_id)): * squares = orient.squares */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->piece_set), __pyx_mstate_global->__pyx_n_u_num_pieces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 478, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->piece_set), __pyx_mstate_global->__pyx_n_u_num_pieces); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 483, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __pyx_t_2; for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_piece_id = __pyx_t_4; - /* "blokus_gym/core/blokus_cython.pyx":479 + /* "blokus_cython.pyx":484 * * for piece_id in range(self.piece_set.num_pieces): * for orient_id, orient in enumerate(self.piece_set.get_orientations(piece_id)): # <<<<<<<<<<<<<< @@ -31938,7 +32037,7 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac __pyx_t_5 = 0; __pyx_t_6 = ((PyObject *)__pyx_v_self->piece_set); __Pyx_INCREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_piece_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 479, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_piece_id); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = 0; { @@ -31946,7 +32045,7 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_orientations, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 479, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { @@ -31954,9 +32053,9 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac __pyx_t_9 = 0; __pyx_t_10 = NULL; } else { - __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 479, __pyx_L1_error) + __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 479, __pyx_L1_error) + __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 484, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { @@ -31965,7 +32064,7 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_7); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 479, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 484, __pyx_L1_error) #endif if (__pyx_t_9 >= __pyx_temp) break; } @@ -31975,7 +32074,7 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_7); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 479, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 484, __pyx_L1_error) #endif if (__pyx_t_9 >= __pyx_temp) break; } @@ -31986,26 +32085,26 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac #endif ++__pyx_t_9; } - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 479, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 484, __pyx_L1_error) } else { __pyx_t_1 = __pyx_t_10(__pyx_t_7); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { - if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 479, __pyx_L1_error) + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 484, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation))))) __PYX_ERR(0, 479, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_orient, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_t_1)); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceOrientation))))) __PYX_ERR(0, 484, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_orient, ((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_t_1)); __pyx_t_1 = 0; __pyx_v_orient_id = __pyx_t_5; __pyx_t_5 = (__pyx_t_5 + 1); - /* "blokus_gym/core/blokus_cython.pyx":480 + /* "blokus_cython.pyx":485 * for piece_id in range(self.piece_set.num_pieces): * for orient_id, orient in enumerate(self.piece_set.get_orientations(piece_id)): * squares = orient.squares # <<<<<<<<<<<<<< @@ -32017,7 +32116,7 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac __Pyx_XDECREF_SET(__pyx_v_squares, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":481 + /* "blokus_cython.pyx":486 * for orient_id, orient in enumerate(self.piece_set.get_orientations(piece_id)): * squares = orient.squares * max_x = max(x for x, _ in squares) # <<<<<<<<<<<<<< @@ -32025,7 +32124,7 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac * */ __pyx_t_6 = NULL; - __pyx_t_11 = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_genexpr(NULL, __pyx_v_squares); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 481, __pyx_L1_error) + __pyx_t_11 = __pyx_pf_13blokus_cython_10BlokusGame_22_generate_action_space_genexpr(NULL, __pyx_v_squares); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 486, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_8 = 1; { @@ -32033,14 +32132,14 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_max, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 481, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 486, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } - __pyx_t_12 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 481, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 486, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_max_x = __pyx_t_12; - /* "blokus_gym/core/blokus_cython.pyx":482 + /* "blokus_cython.pyx":487 * squares = orient.squares * max_x = max(x for x, _ in squares) * max_y = max(y for _, y in squares) # <<<<<<<<<<<<<< @@ -32048,7 +32147,7 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac * for px in range(self.board_size - max_x): */ __pyx_t_11 = NULL; - __pyx_t_6 = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_3genexpr(NULL, __pyx_v_squares); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 482, __pyx_L1_error) + __pyx_t_6 = __pyx_pf_13blokus_cython_10BlokusGame_22_generate_action_space_3genexpr(NULL, __pyx_v_squares); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = 1; { @@ -32056,14 +32155,14 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_max, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 482, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } - __pyx_t_12 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 482, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 487, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_max_y = __pyx_t_12; - /* "blokus_gym/core/blokus_cython.pyx":484 + /* "blokus_cython.pyx":489 * max_y = max(y for _, y in squares) * * for px in range(self.board_size - max_x): # <<<<<<<<<<<<<< @@ -32075,7 +32174,7 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) { __pyx_v_px = __pyx_t_14; - /* "blokus_gym/core/blokus_cython.pyx":485 + /* "blokus_cython.pyx":490 * * for px in range(self.board_size - max_x): * for py in range(self.board_size - max_y): # <<<<<<<<<<<<<< @@ -32087,7 +32186,7 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) { __pyx_v_py = __pyx_t_17; - /* "blokus_gym/core/blokus_cython.pyx":486 + /* "blokus_cython.pyx":491 * for px in range(self.board_size - max_x): * for py in range(self.board_size - max_y): * move = Move(piece_id, orient_id, px, py) # <<<<<<<<<<<<<< @@ -32095,30 +32194,30 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac * self._action_moves.append(move) */ __pyx_t_6 = NULL; - __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_piece_id); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 486, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_piece_id); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); - __pyx_t_18 = __Pyx_PyLong_From_int(__pyx_v_orient_id); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 486, __pyx_L1_error) + __pyx_t_18 = __Pyx_PyLong_From_int(__pyx_v_orient_id); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); - __pyx_t_19 = __Pyx_PyLong_From_int(__pyx_v_px); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 486, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyLong_From_int(__pyx_v_px); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); - __pyx_t_20 = __Pyx_PyLong_From_int(__pyx_v_py); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 486, __pyx_L1_error) + __pyx_t_20 = __Pyx_PyLong_From_int(__pyx_v_py); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); __pyx_t_8 = 1; { PyObject *__pyx_callargs[5] = {__pyx_t_6, __pyx_t_11, __pyx_t_18, __pyx_t_19, __pyx_t_20}; - __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move, __pyx_callargs+__pyx_t_8, (5-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Move, __pyx_callargs+__pyx_t_8, (5-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 486, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 491, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } - __Pyx_XDECREF_SET(__pyx_v_move, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_t_1)); + __Pyx_XDECREF_SET(__pyx_v_move, ((struct __pyx_obj_13blokus_cython_Move *)__pyx_t_1)); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":487 + /* "blokus_cython.pyx":492 * for py in range(self.board_size - max_y): * move = Move(piece_id, orient_id, px, py) * action_idx = len(self._action_moves) # <<<<<<<<<<<<<< @@ -32129,13 +32228,13 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 487, __pyx_L1_error) + __PYX_ERR(0, 492, __pyx_L1_error) } - __pyx_t_21 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_21 == ((Py_ssize_t)-1))) __PYX_ERR(0, 487, __pyx_L1_error) + __pyx_t_21 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_21 == ((Py_ssize_t)-1))) __PYX_ERR(0, 492, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_action_idx = __pyx_t_21; - /* "blokus_gym/core/blokus_cython.pyx":488 + /* "blokus_cython.pyx":493 * move = Move(piece_id, orient_id, px, py) * action_idx = len(self._action_moves) * self._action_moves.append(move) # <<<<<<<<<<<<<< @@ -32144,52 +32243,52 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac */ if (unlikely(__pyx_v_self->_action_moves == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 488, __pyx_L1_error) + __PYX_ERR(0, 493, __pyx_L1_error) } - __pyx_t_22 = __Pyx_PyList_Append(__pyx_v_self->_action_moves, ((PyObject *)__pyx_v_move)); if (unlikely(__pyx_t_22 == ((int)-1))) __PYX_ERR(0, 488, __pyx_L1_error) + __pyx_t_22 = __Pyx_PyList_Append(__pyx_v_self->_action_moves, ((PyObject *)__pyx_v_move)); if (unlikely(__pyx_t_22 == ((int)-1))) __PYX_ERR(0, 493, __pyx_L1_error) - /* "blokus_gym/core/blokus_cython.pyx":489 + /* "blokus_cython.pyx":494 * action_idx = len(self._action_moves) * self._action_moves.append(move) * self._move_to_action[(piece_id, orient_id, px, py)] = action_idx # <<<<<<<<<<<<<< * * @property */ - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_action_idx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 489, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_action_idx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 494, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(__pyx_v_self->_move_to_action == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 489, __pyx_L1_error) + __PYX_ERR(0, 494, __pyx_L1_error) } - __pyx_t_20 = __Pyx_PyLong_From_int(__pyx_v_piece_id); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 489, __pyx_L1_error) + __pyx_t_20 = __Pyx_PyLong_From_int(__pyx_v_piece_id); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 494, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); - __pyx_t_19 = __Pyx_PyLong_From_int(__pyx_v_orient_id); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 489, __pyx_L1_error) + __pyx_t_19 = __Pyx_PyLong_From_int(__pyx_v_orient_id); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 494, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); - __pyx_t_18 = __Pyx_PyLong_From_int(__pyx_v_px); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 489, __pyx_L1_error) + __pyx_t_18 = __Pyx_PyLong_From_int(__pyx_v_px); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 494, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); - __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_py); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 489, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_py); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 494, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); - __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 489, __pyx_L1_error) + __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 494, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_20); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_20) != (0)) __PYX_ERR(0, 489, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_20) != (0)) __PYX_ERR(0, 494, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_19); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_19) != (0)) __PYX_ERR(0, 489, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_19) != (0)) __PYX_ERR(0, 494, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_18); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_18) != (0)) __PYX_ERR(0, 489, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_18) != (0)) __PYX_ERR(0, 494, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_11); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_11) != (0)) __PYX_ERR(0, 489, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_11) != (0)) __PYX_ERR(0, 494, __pyx_L1_error); __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_11 = 0; - if (unlikely((PyDict_SetItem(__pyx_v_self->_move_to_action, __pyx_t_6, __pyx_t_1) < 0))) __PYX_ERR(0, 489, __pyx_L1_error) + if (unlikely((PyDict_SetItem(__pyx_v_self->_move_to_action, __pyx_t_6, __pyx_t_1) < 0))) __PYX_ERR(0, 494, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } } - /* "blokus_gym/core/blokus_cython.pyx":479 + /* "blokus_cython.pyx":484 * * for piece_id in range(self.piece_set.num_pieces): * for orient_id, orient in enumerate(self.piece_set.get_orientations(piece_id)): # <<<<<<<<<<<<<< @@ -32200,7 +32299,7 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } - /* "blokus_gym/core/blokus_cython.pyx":465 + /* "blokus_cython.pyx":470 * self.players.append(player) * * cdef void _generate_action_space(self): # <<<<<<<<<<<<<< @@ -32218,17 +32317,17 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac __Pyx_XDECREF(__pyx_t_18); __Pyx_XDECREF(__pyx_t_19); __Pyx_XDECREF(__pyx_t_20); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame._generate_action_space", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame._generate_action_space", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_orient); __Pyx_XDECREF(__pyx_v_squares); __Pyx_XDECREF((PyObject *)__pyx_v_move); - __Pyx_XDECREF(__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_2generator3); - __Pyx_XDECREF(__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_22_generate_action_space_5generator4); + __Pyx_XDECREF(__pyx_gb_13blokus_cython_10BlokusGame_22_generate_action_space_2generator3); + __Pyx_XDECREF(__pyx_gb_13blokus_cython_10BlokusGame_22_generate_action_space_5generator4); __Pyx_RefNannyFinishContext(); } -/* "blokus_gym/core/blokus_cython.pyx":491 +/* "blokus_cython.pyx":496 * self._move_to_action[(piece_id, orient_id, px, py)] = action_idx * * @property # <<<<<<<<<<<<<< @@ -32237,21 +32336,21 @@ static void __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_ac */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_actions_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_actions_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_11num_actions_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_11num_actions_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_actions___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_11num_actions___get__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_actions___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_11num_actions___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -32261,7 +32360,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "blokus_gym/core/blokus_cython.pyx":493 + /* "blokus_cython.pyx":498 * @property * def num_actions(self) -> int: * return len(self._action_moves) # <<<<<<<<<<<<<< @@ -32273,17 +32372,17 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_ __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 493, __pyx_L1_error) + __PYX_ERR(0, 498, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 493, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 498, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyLong_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 493, __pyx_L1_error) + __pyx_t_1 = PyLong_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":491 + /* "blokus_cython.pyx":496 * self._move_to_action[(piece_id, orient_id, px, py)] = action_idx * * @property # <<<<<<<<<<<<<< @@ -32294,7 +32393,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.num_actions.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.num_actions.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -32302,7 +32401,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_ return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":495 +/* "blokus_cython.pyx":500 * return len(self._action_moves) * * def get_move(self, int action) -> Move: # <<<<<<<<<<<<<< @@ -32311,15 +32410,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_ */ /* Python wrapper */ -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_3get_move(PyObject *__pyx_v_self, +static struct __pyx_obj_13blokus_cython_Move *__pyx_pw_13blokus_cython_10BlokusGame_3get_move(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_3get_move = {"get_move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_3get_move, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_3get_move(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_3get_move = {"get_move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_3get_move, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static struct __pyx_obj_13blokus_cython_Move *__pyx_pw_13blokus_cython_10BlokusGame_3get_move(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -32335,7 +32434,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_r = 0; + struct __pyx_obj_13blokus_cython_Move *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_move (wrapper)", 0); #if !CYTHON_METH_FASTCALL @@ -32349,43 +32448,43 @@ PyObject *__pyx_args, PyObject *__pyx_kwds { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_action,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; - if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 495, __pyx_L3_error) + if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 500, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 495, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 500, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_move", 0) < (0)) __PYX_ERR(0, 495, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_move", 0) < (0)) __PYX_ERR(0, 500, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { - if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_move", 1, 1, 1, i); __PYX_ERR(0, 495, __pyx_L3_error) } + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_move", 1, 1, 1, i); __PYX_ERR(0, 500, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 495, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 500, __pyx_L3_error) } - __pyx_v_action = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_action == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 495, __pyx_L3_error) + __pyx_v_action = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_action == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 500, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_move", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 495, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_move", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 500, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.get_move", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_move", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_2get_move(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_action); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_2get_move(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_action); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -32395,8 +32494,8 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_2get_move(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_action) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_r = NULL; +static struct __pyx_obj_13blokus_cython_Move *__pyx_pf_13blokus_cython_10BlokusGame_2get_move(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_action) { + struct __pyx_obj_13blokus_cython_Move *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; @@ -32404,7 +32503,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_pf_10blok int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_move", 0); - /* "blokus_gym/core/blokus_cython.pyx":496 + /* "blokus_cython.pyx":501 * * def get_move(self, int action) -> Move: * return self._action_moves[action] # <<<<<<<<<<<<<< @@ -32414,16 +32513,16 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_pf_10blok __Pyx_XDECREF((PyObject *)__pyx_r); if (unlikely(__pyx_v_self->_action_moves == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 496, __pyx_L1_error) + __PYX_ERR(0, 501, __pyx_L1_error) } - __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->_action_moves, __pyx_v_action, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 496, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->_action_moves, __pyx_v_action, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move))))) __PYX_ERR(0, 496, __pyx_L1_error) - __pyx_r = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_13blokus_cython_Move))))) __PYX_ERR(0, 501, __pyx_L1_error) + __pyx_r = ((struct __pyx_obj_13blokus_cython_Move *)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":495 + /* "blokus_cython.pyx":500 * return len(self._action_moves) * * def get_move(self, int action) -> Move: # <<<<<<<<<<<<<< @@ -32434,7 +32533,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_pf_10blok /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.get_move", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_move", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF((PyObject *)__pyx_r); @@ -32442,7 +32541,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_pf_10blok return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":498 +/* "blokus_cython.pyx":503 * return self._action_moves[action] * * def get_action(self, Move move) -> int: # <<<<<<<<<<<<<< @@ -32451,22 +32550,22 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_pf_10blok */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_5get_action(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_5get_action(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_5get_action = {"get_action", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_5get_action, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_5get_action(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_5get_action = {"get_action", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_5get_action, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_5get_action(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move = 0; + struct __pyx_obj_13blokus_cython_Move *__pyx_v_move = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif @@ -32489,44 +32588,44 @@ PyObject *__pyx_args, PyObject *__pyx_kwds { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_move,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; - if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 498, __pyx_L3_error) + if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 503, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 498, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 503, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_action", 0) < (0)) __PYX_ERR(0, 498, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_action", 0) < (0)) __PYX_ERR(0, 503, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { - if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_action", 1, 1, 1, i); __PYX_ERR(0, 498, __pyx_L3_error) } + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_action", 1, 1, 1, i); __PYX_ERR(0, 503, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 498, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 503, __pyx_L3_error) } - __pyx_v_move = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)values[0]); + __pyx_v_move = ((struct __pyx_obj_13blokus_cython_Move *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_action", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 498, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_action", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 503, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.get_action", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_action", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_move), __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move, 1, "move", 0))) __PYX_ERR(0, 498, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_4get_action(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_move); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_move), __pyx_mstate_global->__pyx_ptype_13blokus_cython_Move, 1, "move", 0))) __PYX_ERR(0, 503, __pyx_L1_error) + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_4get_action(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_move); /* function exit code */ goto __pyx_L0; @@ -32545,7 +32644,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_4get_action(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_4get_action(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -32558,7 +32657,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_4get_a int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_action", 0); - /* "blokus_gym/core/blokus_cython.pyx":499 + /* "blokus_cython.pyx":504 * * def get_action(self, Move move) -> int: * return self._move_to_action[(move.piece_id, move.orientation_id, move.x, move.y)] # <<<<<<<<<<<<<< @@ -32568,39 +32667,39 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_4get_a __Pyx_XDECREF(__pyx_r); if (unlikely(__pyx_v_self->_move_to_action == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 499, __pyx_L1_error) + __PYX_ERR(0, 504, __pyx_L1_error) } - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_move->piece_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_move->piece_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_move->orientation_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_move->orientation_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_move->x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_move->x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_move->y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_move->y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 499, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 504, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2) != (0)) __PYX_ERR(0, 499, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2) != (0)) __PYX_ERR(0, 504, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3) != (0)) __PYX_ERR(0, 499, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3) != (0)) __PYX_ERR(0, 504, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4) != (0)) __PYX_ERR(0, 499, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4) != (0)) __PYX_ERR(0, 504, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->_move_to_action, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 499, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_self->_move_to_action, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__Pyx_PyInt_FromNumber(&__pyx_t_4, NULL, 1) < (0)) __PYX_ERR(0, 499, __pyx_L1_error) + if (__Pyx_PyInt_FromNumber(&__pyx_t_4, NULL, 1) < (0)) __PYX_ERR(0, 504, __pyx_L1_error) __pyx_r = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":498 + /* "blokus_cython.pyx":503 * return self._action_moves[action] * * def get_action(self, Move move) -> int: # <<<<<<<<<<<<<< @@ -32615,7 +32714,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_4get_a __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.get_action", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_action", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -32623,7 +32722,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_4get_a return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":501 +/* "blokus_cython.pyx":506 * return self._move_to_action[(move.piece_id, move.orientation_id, move.x, move.y)] * * def reset(self) -> None: # <<<<<<<<<<<<<< @@ -32632,16 +32731,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_4get_a */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_7reset(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_7reset(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset, "Reset the game to its initial state."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_7reset = {"reset", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_7reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_7reset(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_6reset, "Reset the game to its initial state."); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_7reset = {"reset", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_7reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_6reset}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_7reset(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -32667,16 +32766,16 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("reset", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_6reset(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_6reset(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { int __pyx_v_i; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_player = NULL; + struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_player = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -32695,7 +32794,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset int __pyx_clineno = 0; __Pyx_RefNannySetupContext("reset", 0); - /* "blokus_gym/core/blokus_cython.pyx":503 + /* "blokus_cython.pyx":508 * def reset(self) -> None: * """Reset the game to its initial state.""" * self.board = Board(self.board_size) # <<<<<<<<<<<<<< @@ -32703,15 +32802,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset * self.current_player = 0 */ __pyx_t_2 = NULL; - __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_self->board_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 503, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_self->board_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 503, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 508, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } __Pyx_GIVEREF((PyObject *)__pyx_t_1); @@ -32720,14 +32819,14 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset __pyx_v_self->board = ((PyObject *)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":504 + /* "blokus_cython.pyx":509 * """Reset the game to its initial state.""" * self.board = Board(self.board_size) * self.players = [] # <<<<<<<<<<<<<< * self.current_player = 0 * self.rounds = 0 */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->players); @@ -32735,7 +32834,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset __pyx_v_self->players = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":505 + /* "blokus_cython.pyx":510 * self.board = Board(self.board_size) * self.players = [] * self.current_player = 0 # <<<<<<<<<<<<<< @@ -32744,7 +32843,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset */ __pyx_v_self->current_player = 0; - /* "blokus_gym/core/blokus_cython.pyx":506 + /* "blokus_cython.pyx":511 * self.players = [] * self.current_player = 0 * self.rounds = 0 # <<<<<<<<<<<<<< @@ -32753,7 +32852,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset */ __pyx_v_self->rounds = 0; - /* "blokus_gym/core/blokus_cython.pyx":507 + /* "blokus_cython.pyx":512 * self.current_player = 0 * self.rounds = 0 * self.game_over = False # <<<<<<<<<<<<<< @@ -32762,7 +32861,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset */ __pyx_v_self->game_over = 0; - /* "blokus_gym/core/blokus_cython.pyx":509 + /* "blokus_cython.pyx":514 * self.game_over = False * * for i in range(self.num_players): # <<<<<<<<<<<<<< @@ -32774,7 +32873,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) { __pyx_v_i = __pyx_t_7; - /* "blokus_gym/core/blokus_cython.pyx":510 + /* "blokus_cython.pyx":515 * * for i in range(self.num_players): * player = PlayerState() # <<<<<<<<<<<<<< @@ -32785,15 +32884,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset __pyx_t_4 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; - __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_PlayerState, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 510, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 515, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } - __Pyx_XDECREF_SET(__pyx_v_player, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_t_1)); + __Pyx_XDECREF_SET(__pyx_v_player, ((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_t_1)); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":511 + /* "blokus_cython.pyx":516 * for i in range(self.num_players): * player = PlayerState() * player.idx = i # <<<<<<<<<<<<<< @@ -32802,14 +32901,14 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset */ __pyx_v_player->idx = __pyx_v_i; - /* "blokus_gym/core/blokus_cython.pyx":512 + /* "blokus_cython.pyx":517 * player = PlayerState() * player.idx = i * player.available_pieces = set(self.piece_set.piece_names) # <<<<<<<<<<<<<< * if self.corner_rule and i < len(self._starting_corners): * player.corners = {self._starting_corners[i]} */ - __pyx_t_1 = PySet_New(__pyx_v_self->piece_set->piece_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 512, __pyx_L1_error) + __pyx_t_1 = PySet_New(__pyx_v_self->piece_set->piece_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_player->available_pieces); @@ -32817,7 +32916,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset __pyx_v_player->available_pieces = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":513 + /* "blokus_cython.pyx":518 * player.idx = i * player.available_pieces = set(self.piece_set.piece_names) * if self.corner_rule and i < len(self._starting_corners): # <<<<<<<<<<<<<< @@ -32833,16 +32932,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 513, __pyx_L1_error) + __PYX_ERR(0, 518, __pyx_L1_error) } - __pyx_t_9 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 513, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 518, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = (__pyx_v_i < __pyx_t_9); __pyx_t_8 = __pyx_t_10; __pyx_L6_bool_binop_done:; if (__pyx_t_8) { - /* "blokus_gym/core/blokus_cython.pyx":514 + /* "blokus_cython.pyx":519 * player.available_pieces = set(self.piece_set.piece_names) * if self.corner_rule and i < len(self._starting_corners): * player.corners = {self._starting_corners[i]} # <<<<<<<<<<<<<< @@ -32851,13 +32950,13 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset */ if (unlikely(__pyx_v_self->_starting_corners == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 514, __pyx_L1_error) + __PYX_ERR(0, 519, __pyx_L1_error) } - __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->_starting_corners, __pyx_v_i, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 514, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->_starting_corners, __pyx_v_i, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = PySet_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 514, __pyx_L1_error) + __pyx_t_3 = PySet_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (PySet_Add(__pyx_t_3, __pyx_t_1) < (0)) __PYX_ERR(0, 514, __pyx_L1_error) + if (PySet_Add(__pyx_t_3, __pyx_t_1) < (0)) __PYX_ERR(0, 519, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_player->corners); @@ -32865,7 +32964,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset __pyx_v_player->corners = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":513 + /* "blokus_cython.pyx":518 * player.idx = i * player.available_pieces = set(self.piece_set.piece_names) * if self.corner_rule and i < len(self._starting_corners): # <<<<<<<<<<<<<< @@ -32875,7 +32974,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset goto __pyx_L5; } - /* "blokus_gym/core/blokus_cython.pyx":516 + /* "blokus_cython.pyx":521 * player.corners = {self._starting_corners[i]} * else: * player.corners = set() # <<<<<<<<<<<<<< @@ -32883,7 +32982,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset * player.has_started = False */ /*else*/ { - __pyx_t_3 = PySet_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 516, __pyx_L1_error) + __pyx_t_3 = PySet_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 521, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_player->corners); @@ -32893,7 +32992,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset } __pyx_L5:; - /* "blokus_gym/core/blokus_cython.pyx":517 + /* "blokus_cython.pyx":522 * else: * player.corners = set() * player.score = 0 # <<<<<<<<<<<<<< @@ -32902,7 +33001,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset */ __pyx_v_player->score = 0; - /* "blokus_gym/core/blokus_cython.pyx":518 + /* "blokus_cython.pyx":523 * player.corners = set() * player.score = 0 * player.has_started = False # <<<<<<<<<<<<<< @@ -32911,7 +33010,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset */ __pyx_v_player->has_started = 0; - /* "blokus_gym/core/blokus_cython.pyx":519 + /* "blokus_cython.pyx":524 * player.score = 0 * player.has_started = False * player.can_move = True # <<<<<<<<<<<<<< @@ -32920,7 +33019,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset */ __pyx_v_player->can_move = 1; - /* "blokus_gym/core/blokus_cython.pyx":520 + /* "blokus_cython.pyx":525 * player.has_started = False * player.can_move = True * self.players.append(player) # <<<<<<<<<<<<<< @@ -32929,12 +33028,12 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset */ if (unlikely(__pyx_v_self->players == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append"); - __PYX_ERR(0, 520, __pyx_L1_error) + __PYX_ERR(0, 525, __pyx_L1_error) } - __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_self->players, ((PyObject *)__pyx_v_player)); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 520, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_self->players, ((PyObject *)__pyx_v_player)); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 525, __pyx_L1_error) } - /* "blokus_gym/core/blokus_cython.pyx":501 + /* "blokus_cython.pyx":506 * return self._move_to_action[(move.piece_id, move.orientation_id, move.x, move.y)] * * def reset(self) -> None: # <<<<<<<<<<<<<< @@ -32949,7 +33048,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.reset", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.reset", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_player); @@ -32958,7 +33057,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":522 +/* "blokus_cython.pyx":527 * self.players.append(player) * * cdef list _get_placed_squares(self, Move move): # <<<<<<<<<<<<<< @@ -32966,8 +33065,8 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset * cdef PieceOrientation orient = self.piece_set.get_orientations(move.piece_id)[move.orientation_id] */ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_placed_squares(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_orient = 0; +static PyObject *__pyx_f_13blokus_cython_10BlokusGame__get_placed_squares(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move) { + struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_orient = 0; PyObject *__pyx_v_result = 0; int __pyx_v_dx; int __pyx_v_dy; @@ -32989,7 +33088,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_get_placed_squares", 0); - /* "blokus_gym/core/blokus_cython.pyx":524 + /* "blokus_cython.pyx":529 * cdef list _get_placed_squares(self, Move move): * """Get the absolute board coordinates for a move.""" * cdef PieceOrientation orient = self.piece_set.get_orientations(move.piece_id)[move.orientation_id] # <<<<<<<<<<<<<< @@ -32998,7 +33097,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl */ __pyx_t_2 = ((PyObject *)__pyx_v_self->piece_set); __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_move->piece_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 524, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_move->piece_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = 0; { @@ -33006,29 +33105,29 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_orientations, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 524, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } - __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_move->orientation_id, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 524, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_move->orientation_id, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation))))) __PYX_ERR(0, 524, __pyx_L1_error) - __pyx_v_orient = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceOrientation))))) __PYX_ERR(0, 529, __pyx_L1_error) + __pyx_v_orient = ((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":525 + /* "blokus_cython.pyx":530 * """Get the absolute board coordinates for a move.""" * cdef PieceOrientation orient = self.piece_set.get_orientations(move.piece_id)[move.orientation_id] * cdef list result = [] # <<<<<<<<<<<<<< * cdef int dx, dy * for dx, dy in orient.squares: */ - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 525, __pyx_L1_error) + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_result = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":527 + /* "blokus_cython.pyx":532 * cdef list result = [] * cdef int dx, dy * for dx, dy in orient.squares: # <<<<<<<<<<<<<< @@ -33037,7 +33136,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl */ if (unlikely(__pyx_v_orient->squares == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 527, __pyx_L1_error) + __PYX_ERR(0, 532, __pyx_L1_error) } __pyx_t_3 = __pyx_v_orient->squares; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0; @@ -33045,13 +33144,13 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 527, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 532, __pyx_L1_error) #endif if (__pyx_t_5 >= __pyx_temp) break; } __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_5, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_5; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 527, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; @@ -33059,7 +33158,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 527, __pyx_L1_error) + __PYX_ERR(0, 532, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -33069,22 +33168,22 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl __Pyx_INCREF(__pyx_t_6); } else { __pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 527, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 527, __pyx_L1_error) + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_6); } #else - __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 527, __pyx_L1_error) + __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 527, __pyx_L1_error) + __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; - __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 527, __pyx_L1_error) + __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_8 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); @@ -33092,7 +33191,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < (0)) __PYX_ERR(0, 527, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < (0)) __PYX_ERR(0, 532, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L6_unpacking_done; @@ -33100,39 +33199,39 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 527, __pyx_L1_error) + __PYX_ERR(0, 532, __pyx_L1_error) __pyx_L6_unpacking_done:; } - __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 527, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_6); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 527, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_6); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_dx = __pyx_t_9; __pyx_v_dy = __pyx_t_10; - /* "blokus_gym/core/blokus_cython.pyx":528 + /* "blokus_cython.pyx":533 * cdef int dx, dy * for dx, dy in orient.squares: * result.append((move.x + dx, move.y + dy)) # <<<<<<<<<<<<<< * return result * */ - __pyx_t_1 = __Pyx_PyLong_From_int((__pyx_v_move->x + __pyx_v_dx)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 528, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int((__pyx_v_move->x + __pyx_v_dx)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyLong_From_int((__pyx_v_move->y + __pyx_v_dy)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 528, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyLong_From_int((__pyx_v_move->y + __pyx_v_dy)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 533, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 528, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 533, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 528, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 533, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_6); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6) != (0)) __PYX_ERR(0, 528, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6) != (0)) __PYX_ERR(0, 533, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_6 = 0; - __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_2); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 528, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_2); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 533, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "blokus_gym/core/blokus_cython.pyx":527 + /* "blokus_cython.pyx":532 * cdef list result = [] * cdef int dx, dy * for dx, dy in orient.squares: # <<<<<<<<<<<<<< @@ -33142,19 +33241,19 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":529 + /* "blokus_cython.pyx":534 * for dx, dy in orient.squares: * result.append((move.x + dx, move.y + dy)) * return result # <<<<<<<<<<<<<< * - * cdef list _get_placed_corners(self, Move move): + * cpdef list get_placed_squares(self, Move move): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_result); __pyx_r = __pyx_v_result; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":522 + /* "blokus_cython.pyx":527 * self.players.append(player) * * cdef list _get_placed_squares(self, Move move): # <<<<<<<<<<<<<< @@ -33169,7 +33268,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame._get_placed_squares", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame._get_placed_squares", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_orient); @@ -33179,16 +33278,263 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":531 +/* "blokus_cython.pyx":536 * return result * + * cpdef list get_placed_squares(self, Move move): # <<<<<<<<<<<<<< + * """Python-accessible wrapper for _get_placed_squares.""" + * return self._get_placed_squares(move) +*/ + +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_9get_placed_squares(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static PyObject *__pyx_f_13blokus_cython_10BlokusGame_get_placed_squares(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move, int __pyx_skip_dispatch) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_placed_squares", 0); + /* Check if called by wrapper */ + if (unlikely(__pyx_skip_dispatch)) ; + /* Check if overridden in Python */ + else if ( + #if !CYTHON_USE_TYPE_SLOTS + unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame && + __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC)) + #else + unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))) + #endif + ) { + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) { + PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + #endif + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_get_placed_squares); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 536, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_13blokus_cython_10BlokusGame_9get_placed_squares)) { + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_4 = __pyx_t_1; + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_move)}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 536, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + if (!(likely(PyList_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_2))) __PYX_ERR(0, 536, __pyx_L1_error) + __pyx_r = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + } + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self)); + if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) { + __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + } + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + } + #endif + } + + /* "blokus_cython.pyx":538 + * cpdef list get_placed_squares(self, Move move): + * """Python-accessible wrapper for _get_placed_squares.""" + * return self._get_placed_squares(move) # <<<<<<<<<<<<<< + * + * cdef list _get_placed_corners(self, Move move): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_get_placed_squares(__pyx_v_self, __pyx_v_move); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 538, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "blokus_cython.pyx":536 + * return result + * + * cpdef list get_placed_squares(self, Move move): # <<<<<<<<<<<<<< + * """Python-accessible wrapper for _get_placed_squares.""" + * return self._get_placed_squares(move) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_placed_squares", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_9get_placed_squares(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_8get_placed_squares, "Python-accessible wrapper for _get_placed_squares."); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_9get_placed_squares = {"get_placed_squares", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_9get_placed_squares, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_8get_placed_squares}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_9get_placed_squares(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + struct __pyx_obj_13blokus_cython_Move *__pyx_v_move = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_placed_squares (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_move,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 536, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 536, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_placed_squares", 0) < (0)) __PYX_ERR(0, 536, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_placed_squares", 1, 1, 1, i); __PYX_ERR(0, 536, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 536, __pyx_L3_error) + } + __pyx_v_move = ((struct __pyx_obj_13blokus_cython_Move *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_placed_squares", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 536, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_placed_squares", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_move), __pyx_mstate_global->__pyx_ptype_13blokus_cython_Move, 1, "move", 0))) __PYX_ERR(0, 536, __pyx_L1_error) + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_8get_placed_squares(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_move); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_8get_placed_squares(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_placed_squares", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_13blokus_cython_10BlokusGame_get_placed_squares(__pyx_v_self, __pyx_v_move, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 536, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_placed_squares", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "blokus_cython.pyx":540 + * return self._get_placed_squares(move) + * * cdef list _get_placed_corners(self, Move move): # <<<<<<<<<<<<<< * """Get the absolute corner coordinates for a move.""" * cdef PieceOrientation orient = self.piece_set.get_orientations(move.piece_id)[move.orientation_id] */ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_placed_corners(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v_orient = 0; +static PyObject *__pyx_f_13blokus_cython_10BlokusGame__get_placed_corners(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move) { + struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v_orient = 0; PyObject *__pyx_v_result = 0; int __pyx_v_dx; int __pyx_v_dy; @@ -33210,7 +33556,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_get_placed_corners", 0); - /* "blokus_gym/core/blokus_cython.pyx":533 + /* "blokus_cython.pyx":542 * cdef list _get_placed_corners(self, Move move): * """Get the absolute corner coordinates for a move.""" * cdef PieceOrientation orient = self.piece_set.get_orientations(move.piece_id)[move.orientation_id] # <<<<<<<<<<<<<< @@ -33219,7 +33565,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl */ __pyx_t_2 = ((PyObject *)__pyx_v_self->piece_set); __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_move->piece_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 533, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_move->piece_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = 0; { @@ -33227,29 +33573,29 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_orientations, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } - __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_move->orientation_id, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 533, __pyx_L1_error) + __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_move->orientation_id, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation))))) __PYX_ERR(0, 533, __pyx_L1_error) - __pyx_v_orient = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceOrientation))))) __PYX_ERR(0, 542, __pyx_L1_error) + __pyx_v_orient = ((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":534 + /* "blokus_cython.pyx":543 * """Get the absolute corner coordinates for a move.""" * cdef PieceOrientation orient = self.piece_set.get_orientations(move.piece_id)[move.orientation_id] * cdef list result = [] # <<<<<<<<<<<<<< * cdef int dx, dy * for dx, dy in orient.corners: */ - __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 534, __pyx_L1_error) + __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_result = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":536 + /* "blokus_cython.pyx":545 * cdef list result = [] * cdef int dx, dy * for dx, dy in orient.corners: # <<<<<<<<<<<<<< @@ -33258,7 +33604,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl */ if (unlikely(__pyx_v_orient->corners == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 536, __pyx_L1_error) + __PYX_ERR(0, 545, __pyx_L1_error) } __pyx_t_3 = __pyx_v_orient->corners; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0; @@ -33266,13 +33612,13 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 536, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 545, __pyx_L1_error) #endif if (__pyx_t_5 >= __pyx_temp) break; } __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_5, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_5; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 536, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; @@ -33280,7 +33626,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 536, __pyx_L1_error) + __PYX_ERR(0, 545, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -33290,22 +33636,22 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl __Pyx_INCREF(__pyx_t_6); } else { __pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 536, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 536, __pyx_L1_error) + if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_6); } #else - __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 536, __pyx_L1_error) + __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 536, __pyx_L1_error) + __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; - __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 536, __pyx_L1_error) + __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_8 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); @@ -33313,7 +33659,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < (0)) __PYX_ERR(0, 536, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < (0)) __PYX_ERR(0, 545, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L6_unpacking_done; @@ -33321,39 +33667,39 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 536, __pyx_L1_error) + __PYX_ERR(0, 545, __pyx_L1_error) __pyx_L6_unpacking_done:; } - __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 536, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_6); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 536, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_6); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_dx = __pyx_t_9; __pyx_v_dy = __pyx_t_10; - /* "blokus_gym/core/blokus_cython.pyx":537 + /* "blokus_cython.pyx":546 * cdef int dx, dy * for dx, dy in orient.corners: * result.append((move.x + dx, move.y + dy)) # <<<<<<<<<<<<<< * return result * */ - __pyx_t_1 = __Pyx_PyLong_From_int((__pyx_v_move->x + __pyx_v_dx)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 537, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int((__pyx_v_move->x + __pyx_v_dx)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_PyLong_From_int((__pyx_v_move->y + __pyx_v_dy)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 537, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyLong_From_int((__pyx_v_move->y + __pyx_v_dy)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 537, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 537, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 546, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_6); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6) != (0)) __PYX_ERR(0, 537, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6) != (0)) __PYX_ERR(0, 546, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_6 = 0; - __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_2); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 537, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_result, __pyx_t_2); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 546, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "blokus_gym/core/blokus_cython.pyx":536 + /* "blokus_cython.pyx":545 * cdef list result = [] * cdef int dx, dy * for dx, dy in orient.corners: # <<<<<<<<<<<<<< @@ -33363,20 +33709,20 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":538 + /* "blokus_cython.pyx":547 * for dx, dy in orient.corners: * result.append((move.x + dx, move.y + dy)) * return result # <<<<<<<<<<<<<< * - * cpdef bint valid_move(self, int player_idx, Move move): + * cpdef list get_placed_corners(self, Move move): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_result); __pyx_r = __pyx_v_result; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":531 - * return result + /* "blokus_cython.pyx":540 + * return self._get_placed_squares(move) * * cdef list _get_placed_corners(self, Move move): # <<<<<<<<<<<<<< * """Get the absolute corner coordinates for a move.""" @@ -33390,7 +33736,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame._get_placed_corners", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame._get_placed_corners", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_orient); @@ -33400,24 +33746,271 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_pl return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":540 +/* "blokus_cython.pyx":549 * return result * - * cpdef bint valid_move(self, int player_idx, Move move): # <<<<<<<<<<<<<< - * """Check if a move is valid for the given player.""" - * cdef PlayerState player = self.players[player_idx] + * cpdef list get_placed_corners(self, Move move): # <<<<<<<<<<<<<< + * """Python-accessible wrapper for _get_placed_corners.""" + * return self._get_placed_corners(move) */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9valid_move(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_11get_placed_corners(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move, int __pyx_skip_dispatch) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_player = 0; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_piece = 0; +static PyObject *__pyx_f_13blokus_cython_10BlokusGame_get_placed_corners(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move, int __pyx_skip_dispatch) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_placed_corners", 0); + /* Check if called by wrapper */ + if (unlikely(__pyx_skip_dispatch)) ; + /* Check if overridden in Python */ + else if ( + #if !CYTHON_USE_TYPE_SLOTS + unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame && + __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC)) + #else + unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))) + #endif + ) { + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) { + PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + #endif + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_get_placed_corners); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 549, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_13blokus_cython_10BlokusGame_11get_placed_corners)) { + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_4 = __pyx_t_1; + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_move)}; + __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 549, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + if (!(likely(PyList_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_2))) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_r = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + goto __pyx_L0; + } + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); + __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self)); + if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) { + __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT; + } + #endif + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS + } + #endif + } + + /* "blokus_cython.pyx":551 + * cpdef list get_placed_corners(self, Move move): + * """Python-accessible wrapper for _get_placed_corners.""" + * return self._get_placed_corners(move) # <<<<<<<<<<<<<< + * + * cpdef bint valid_move(self, int player_idx, Move move): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_get_placed_corners(__pyx_v_self, __pyx_v_move); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 551, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "blokus_cython.pyx":549 + * return result + * + * cpdef list get_placed_corners(self, Move move): # <<<<<<<<<<<<<< + * """Python-accessible wrapper for _get_placed_corners.""" + * return self._get_placed_corners(move) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_placed_corners", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* Python wrapper */ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_11get_placed_corners(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_10get_placed_corners, "Python-accessible wrapper for _get_placed_corners."); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_11get_placed_corners = {"get_placed_corners", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_11get_placed_corners, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_10get_placed_corners}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_11get_placed_corners(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + struct __pyx_obj_13blokus_cython_Move *__pyx_v_move = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_placed_corners (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + { + PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_move,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 549, __pyx_L3_error) + if (__pyx_kwds_len > 0) { + switch (__pyx_nargs) { + case 1: + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 549, __pyx_L3_error) + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + const Py_ssize_t kwd_pos_args = __pyx_nargs; + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_placed_corners", 0) < (0)) __PYX_ERR(0, 549, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_placed_corners", 1, 1, 1, i); __PYX_ERR(0, 549, __pyx_L3_error) } + } + } else if (unlikely(__pyx_nargs != 1)) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 549, __pyx_L3_error) + } + __pyx_v_move = ((struct __pyx_obj_13blokus_cython_Move *)values[0]); + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("get_placed_corners", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 549, __pyx_L3_error) + __pyx_L6_skip:; + goto __pyx_L4_argument_unpacking_done; + __pyx_L3_error:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_placed_corners", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_move), __pyx_mstate_global->__pyx_ptype_13blokus_cython_Move, 1, "move", 0))) __PYX_ERR(0, 549, __pyx_L1_error) + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_10get_placed_corners(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_move); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + __pyx_L7_cleaned_up:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_10get_placed_corners(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_placed_corners", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_13blokus_cython_10BlokusGame_get_placed_corners(__pyx_v_self, __pyx_v_move, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 549, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_placed_corners", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "blokus_cython.pyx":553 + * return self._get_placed_corners(move) + * + * cpdef bint valid_move(self, int player_idx, Move move): # <<<<<<<<<<<<<< + * """Check if a move is valid for the given player.""" + * cdef PlayerState player = self.players[player_idx] +*/ + +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_13valid_move(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +static int __pyx_f_13blokus_cython_10BlokusGame_valid_move(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move, int __pyx_skip_dispatch) { + struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_player = 0; + struct __pyx_obj_13blokus_cython_Piece *__pyx_v_piece = 0; PyObject *__pyx_v_placed_squares = 0; PyObject *__pyx_v_placed_corners = 0; int __pyx_v_x; @@ -33456,7 +34049,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st /* Check if overridden in Python */ else if ( #if !CYTHON_USE_TYPE_SLOTS - unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame && + unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame && __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC)) #else unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))) @@ -33467,13 +34060,13 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) { PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); #endif - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_valid_move); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 540, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_valid_move); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9valid_move)) { + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_13blokus_cython_10BlokusGame_13valid_move)) { __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = __pyx_t_1; - __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_player_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 540, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_player_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = 1; #if CYTHON_UNPACK_METHODS @@ -33493,10 +34086,10 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 540, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 540, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_7; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -33515,7 +34108,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st #endif } - /* "blokus_gym/core/blokus_cython.pyx":542 + /* "blokus_cython.pyx":555 * cpdef bint valid_move(self, int player_idx, Move move): * """Check if a move is valid for the given player.""" * cdef PlayerState player = self.players[player_idx] # <<<<<<<<<<<<<< @@ -33524,15 +34117,15 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ if (unlikely(__pyx_v_self->players == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 542, __pyx_L1_error) + __PYX_ERR(0, 555, __pyx_L1_error) } - __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->players, __pyx_v_player_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 542, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->players, __pyx_v_player_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState))))) __PYX_ERR(0, 542, __pyx_L1_error) - __pyx_v_player = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_13blokus_cython_PlayerState))))) __PYX_ERR(0, 555, __pyx_L1_error) + __pyx_v_player = ((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":543 + /* "blokus_cython.pyx":556 * """Check if a move is valid for the given player.""" * cdef PlayerState player = self.players[player_idx] * cdef Piece piece = self.piece_set.get_piece(move.piece_id) # <<<<<<<<<<<<<< @@ -33541,7 +34134,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ __pyx_t_2 = ((PyObject *)__pyx_v_self->piece_set); __Pyx_INCREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_move->piece_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 543, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_move->piece_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = 0; { @@ -33549,38 +34142,38 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_piece, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece))))) __PYX_ERR(0, 543, __pyx_L1_error) - __pyx_v_piece = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece))))) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_v_piece = ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":544 + /* "blokus_cython.pyx":557 * cdef PlayerState player = self.players[player_idx] * cdef Piece piece = self.piece_set.get_piece(move.piece_id) * cdef list placed_squares = self._get_placed_squares(move) # <<<<<<<<<<<<<< * cdef list placed_corners = self._get_placed_corners(move) * cdef int x, y */ - __pyx_t_1 = ((struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_get_placed_squares(__pyx_v_self, __pyx_v_move); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 544, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_get_placed_squares(__pyx_v_self, __pyx_v_move); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 557, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_placed_squares = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":545 + /* "blokus_cython.pyx":558 * cdef Piece piece = self.piece_set.get_piece(move.piece_id) * cdef list placed_squares = self._get_placed_squares(move) * cdef list placed_corners = self._get_placed_corners(move) # <<<<<<<<<<<<<< * cdef int x, y * cdef int player_board_idx = player_idx + 1 */ - __pyx_t_1 = ((struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_get_placed_corners(__pyx_v_self, __pyx_v_move); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_get_placed_corners(__pyx_v_self, __pyx_v_move); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_placed_corners = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":547 + /* "blokus_cython.pyx":560 * cdef list placed_corners = self._get_placed_corners(move) * cdef int x, y * cdef int player_board_idx = player_idx + 1 # <<<<<<<<<<<<<< @@ -33589,7 +34182,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ __pyx_v_player_board_idx = (__pyx_v_player_idx + 1); - /* "blokus_gym/core/blokus_cython.pyx":552 + /* "blokus_cython.pyx":565 * * # Rule 1: Check if player has the piece * if piece.name not in player.available_pieces: # <<<<<<<<<<<<<< @@ -33598,12 +34191,12 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ if (unlikely(__pyx_v_player->available_pieces == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 552, __pyx_L1_error) + __PYX_ERR(0, 565, __pyx_L1_error) } - __pyx_t_7 = (__Pyx_PySet_ContainsTF(__pyx_v_piece->name, __pyx_v_player->available_pieces, Py_NE)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 552, __pyx_L1_error) + __pyx_t_7 = (__Pyx_PySet_ContainsTF(__pyx_v_piece->name, __pyx_v_player->available_pieces, Py_NE)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 565, __pyx_L1_error) if (__pyx_t_7) { - /* "blokus_gym/core/blokus_cython.pyx":553 + /* "blokus_cython.pyx":566 * # Rule 1: Check if player has the piece * if piece.name not in player.available_pieces: * return False # <<<<<<<<<<<<<< @@ -33613,7 +34206,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __pyx_r = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":552 + /* "blokus_cython.pyx":565 * * # Rule 1: Check if player has the piece * if piece.name not in player.available_pieces: # <<<<<<<<<<<<<< @@ -33622,7 +34215,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ } - /* "blokus_gym/core/blokus_cython.pyx":556 + /* "blokus_cython.pyx":569 * * # Rule 2: Check bounds (inline for speed) * for x, y in placed_squares: # <<<<<<<<<<<<<< @@ -33631,7 +34224,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ if (unlikely(__pyx_v_placed_squares == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 556, __pyx_L1_error) + __PYX_ERR(0, 569, __pyx_L1_error) } __pyx_t_1 = __pyx_v_placed_squares; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0; @@ -33639,13 +34232,13 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 556, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 569, __pyx_L1_error) #endif if (__pyx_t_8 >= __pyx_temp) break; } __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_8; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 556, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; @@ -33653,7 +34246,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 556, __pyx_L1_error) + __PYX_ERR(0, 569, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -33663,22 +34256,22 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_INCREF(__pyx_t_5); } else { __pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 569, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 556, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 569, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_5); } #else - __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; - __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); @@ -33686,7 +34279,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_3), 2) < (0)) __PYX_ERR(0, 556, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_3), 2) < (0)) __PYX_ERR(0, 569, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L7_unpacking_done; @@ -33694,17 +34287,17 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 556, __pyx_L1_error) + __PYX_ERR(0, 569, __pyx_L1_error) __pyx_L7_unpacking_done:; } - __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 569, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 556, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 569, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_x = __pyx_t_10; __pyx_v_y = __pyx_t_11; - /* "blokus_gym/core/blokus_cython.pyx":557 + /* "blokus_cython.pyx":570 * # Rule 2: Check bounds (inline for speed) * for x, y in placed_squares: * if not self.board.in_bounds(x, y): # <<<<<<<<<<<<<< @@ -33713,9 +34306,9 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ __pyx_t_5 = __pyx_v_self->board; __Pyx_INCREF(__pyx_t_5); - __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 557, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 557, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = 0; { @@ -33724,15 +34317,15 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 557, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 557, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 570, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_12 = (!__pyx_t_7); if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":558 + /* "blokus_cython.pyx":571 * for x, y in placed_squares: * if not self.board.in_bounds(x, y): * return False # <<<<<<<<<<<<<< @@ -33743,7 +34336,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":557 + /* "blokus_cython.pyx":570 * # Rule 2: Check bounds (inline for speed) * for x, y in placed_squares: * if not self.board.in_bounds(x, y): # <<<<<<<<<<<<<< @@ -33752,7 +34345,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ } - /* "blokus_gym/core/blokus_cython.pyx":556 + /* "blokus_cython.pyx":569 * * # Rule 2: Check bounds (inline for speed) * for x, y in placed_squares: # <<<<<<<<<<<<<< @@ -33762,7 +34355,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":561 + /* "blokus_cython.pyx":574 * * # Rule 3: Check overlap * if self.board.has_overlap(placed_squares): # <<<<<<<<<<<<<< @@ -33776,14 +34369,14 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_placed_squares}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_has_overlap, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 561, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":562 + /* "blokus_cython.pyx":575 * # Rule 3: Check overlap * if self.board.has_overlap(placed_squares): * return False # <<<<<<<<<<<<<< @@ -33793,7 +34386,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __pyx_r = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":561 + /* "blokus_cython.pyx":574 * * # Rule 3: Check overlap * if self.board.has_overlap(placed_squares): # <<<<<<<<<<<<<< @@ -33802,7 +34395,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ } - /* "blokus_gym/core/blokus_cython.pyx":565 + /* "blokus_cython.pyx":578 * * # Rule 6: First move must be in a corner * if self.corner_rule and not player.has_started: # <<<<<<<<<<<<<< @@ -33819,7 +34412,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __pyx_L12_bool_binop_done:; if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":566 + /* "blokus_cython.pyx":579 * # Rule 6: First move must be in a corner * if self.corner_rule and not player.has_started: * if len(self.players) <= len(self._starting_corners): # <<<<<<<<<<<<<< @@ -33830,22 +34423,22 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 566, __pyx_L1_error) + __PYX_ERR(0, 579, __pyx_L1_error) } - __pyx_t_8 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 566, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 579, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_v_self->_starting_corners; __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(0, 566, __pyx_L1_error) + __PYX_ERR(0, 579, __pyx_L1_error) } - __pyx_t_13 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 566, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 579, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_12 = (__pyx_t_8 <= __pyx_t_13); if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":567 + /* "blokus_cython.pyx":580 * if self.corner_rule and not player.has_started: * if len(self.players) <= len(self._starting_corners): * start_corner = self._starting_corners[player_idx] # <<<<<<<<<<<<<< @@ -33854,39 +34447,39 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ if (unlikely(__pyx_v_self->_starting_corners == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 567, __pyx_L1_error) + __PYX_ERR(0, 580, __pyx_L1_error) } - __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->_starting_corners, __pyx_v_player_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 567, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->_starting_corners, __pyx_v_player_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_start_corner = __pyx_t_1; __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":568 + /* "blokus_cython.pyx":581 * if len(self.players) <= len(self._starting_corners): * start_corner = self._starting_corners[player_idx] * if (move.x, move.y) != start_corner: # <<<<<<<<<<<<<< * return False * */ - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_move->x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_move->x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_move->y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_move->y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 568, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 581, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4) != (0)) __PYX_ERR(0, 568, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4) != (0)) __PYX_ERR(0, 581, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_4 = 0; - __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_start_corner, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_start_corner, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 581, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 568, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 581, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":569 + /* "blokus_cython.pyx":582 * start_corner = self._starting_corners[player_idx] * if (move.x, move.y) != start_corner: * return False # <<<<<<<<<<<<<< @@ -33896,7 +34489,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __pyx_r = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":568 + /* "blokus_cython.pyx":581 * if len(self.players) <= len(self._starting_corners): * start_corner = self._starting_corners[player_idx] * if (move.x, move.y) != start_corner: # <<<<<<<<<<<<<< @@ -33905,7 +34498,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ } - /* "blokus_gym/core/blokus_cython.pyx":566 + /* "blokus_cython.pyx":579 * # Rule 6: First move must be in a corner * if self.corner_rule and not player.has_started: * if len(self.players) <= len(self._starting_corners): # <<<<<<<<<<<<<< @@ -33914,7 +34507,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ } - /* "blokus_gym/core/blokus_cython.pyx":565 + /* "blokus_cython.pyx":578 * * # Rule 6: First move must be in a corner * if self.corner_rule and not player.has_started: # <<<<<<<<<<<<<< @@ -33923,7 +34516,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ } - /* "blokus_gym/core/blokus_cython.pyx":572 + /* "blokus_cython.pyx":585 * * # Rule 5: No edge adjacency with same-color pieces (inline for speed) * for x, y in placed_squares: # <<<<<<<<<<<<<< @@ -33932,7 +34525,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ if (unlikely(__pyx_v_placed_squares == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 572, __pyx_L1_error) + __PYX_ERR(0, 585, __pyx_L1_error) } __pyx_t_4 = __pyx_v_placed_squares; __Pyx_INCREF(__pyx_t_4); __pyx_t_13 = 0; @@ -33940,13 +34533,13 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 572, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 585, __pyx_L1_error) #endif if (__pyx_t_13 >= __pyx_temp) break; } __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_4, __pyx_t_13, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_13; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 572, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; @@ -33954,7 +34547,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 572, __pyx_L1_error) + __PYX_ERR(0, 585, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -33964,22 +34557,22 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_INCREF(__pyx_t_2); } else { __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_2); } #else - __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; - __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); @@ -33987,7 +34580,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_2 = __pyx_t_9(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L18_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_5), 2) < (0)) __PYX_ERR(0, 572, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_5), 2) < (0)) __PYX_ERR(0, 585, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L19_unpacking_done; @@ -33995,17 +34588,17 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 572, __pyx_L1_error) + __PYX_ERR(0, 585, __pyx_L1_error) __pyx_L19_unpacking_done:; } - __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 572, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 585, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_x = __pyx_t_11; __pyx_v_y = __pyx_t_10; - /* "blokus_gym/core/blokus_cython.pyx":573 + /* "blokus_cython.pyx":586 * # Rule 5: No edge adjacency with same-color pieces (inline for speed) * for x, y in placed_squares: * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: # <<<<<<<<<<<<<< @@ -34022,7 +34615,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_8); #endif ++__pyx_t_8; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 573, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (likely(__pyx_t_2 != Py_None)) { PyObject* sequence = __pyx_t_2; @@ -34030,7 +34623,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 573, __pyx_L1_error) + __PYX_ERR(0, 586, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); @@ -34038,21 +34631,21 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_5); #else - __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 573, __pyx_L1_error) + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 586, __pyx_L1_error) } __Pyx_XDECREF_SET(__pyx_v_dx, __pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_dy, __pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":574 + /* "blokus_cython.pyx":587 * for x, y in placed_squares: * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: * if self.board.in_bounds(x + dx, y + dy): # <<<<<<<<<<<<<< @@ -34061,14 +34654,14 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ __pyx_t_5 = __pyx_v_self->board; __Pyx_INCREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_14 = PyNumber_Add(__pyx_t_1, __pyx_v_dx); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_14 = PyNumber_Add(__pyx_t_1, __pyx_v_dx); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_15 = PyNumber_Add(__pyx_t_1, __pyx_v_dy); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_15 = PyNumber_Add(__pyx_t_1, __pyx_v_dy); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = 0; @@ -34078,14 +34671,14 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 574, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 587, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":575 + /* "blokus_cython.pyx":588 * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: * if self.board.in_bounds(x + dx, y + dy): * if self.board.get_cell(x + dx, y + dy) == player_board_idx: # <<<<<<<<<<<<<< @@ -34094,14 +34687,14 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ __pyx_t_15 = __pyx_v_self->board; __Pyx_INCREF(__pyx_t_15); - __pyx_t_14 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 575, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); - __pyx_t_5 = PyNumber_Add(__pyx_t_14, __pyx_v_dx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 575, __pyx_L1_error) + __pyx_t_5 = PyNumber_Add(__pyx_t_14, __pyx_v_dx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 575, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); - __pyx_t_1 = PyNumber_Add(__pyx_t_14, __pyx_v_dy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error) + __pyx_t_1 = PyNumber_Add(__pyx_t_14, __pyx_v_dy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_6 = 0; @@ -34111,19 +34704,19 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 575, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_player_board_idx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_player_board_idx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 575, __pyx_L1_error) + __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 588, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 575, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 588, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":576 + /* "blokus_cython.pyx":589 * if self.board.in_bounds(x + dx, y + dy): * if self.board.get_cell(x + dx, y + dy) == player_board_idx: * return False # <<<<<<<<<<<<<< @@ -34135,7 +34728,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":575 + /* "blokus_cython.pyx":588 * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: * if self.board.in_bounds(x + dx, y + dy): * if self.board.get_cell(x + dx, y + dy) == player_board_idx: # <<<<<<<<<<<<<< @@ -34144,7 +34737,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ } - /* "blokus_gym/core/blokus_cython.pyx":574 + /* "blokus_cython.pyx":587 * for x, y in placed_squares: * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: * if self.board.in_bounds(x + dx, y + dy): # <<<<<<<<<<<<<< @@ -34153,7 +34746,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ } - /* "blokus_gym/core/blokus_cython.pyx":573 + /* "blokus_cython.pyx":586 * # Rule 5: No edge adjacency with same-color pieces (inline for speed) * for x, y in placed_squares: * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: # <<<<<<<<<<<<<< @@ -34163,7 +34756,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":572 + /* "blokus_cython.pyx":585 * * # Rule 5: No edge adjacency with same-color pieces (inline for speed) * for x, y in placed_squares: # <<<<<<<<<<<<<< @@ -34173,25 +34766,25 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":579 + /* "blokus_cython.pyx":592 * * # Rule 4: Corner rule (must touch same-color at a corner) * if player.has_started: # <<<<<<<<<<<<<< - * player_occupied = self.board.get_player_occupied(player_idx) + * player_occupied = self.board.get_player_occupied(player_board_idx) * # Manual any() implementation - Cython doesn't support generator expressions */ if (__pyx_v_player->has_started) { - /* "blokus_gym/core/blokus_cython.pyx":580 + /* "blokus_cython.pyx":593 * # Rule 4: Corner rule (must touch same-color at a corner) * if player.has_started: - * player_occupied = self.board.get_player_occupied(player_idx) # <<<<<<<<<<<<<< + * player_occupied = self.board.get_player_occupied(player_board_idx) # <<<<<<<<<<<<<< * # Manual any() implementation - Cython doesn't support generator expressions * result = False */ __pyx_t_3 = __pyx_v_self->board; __Pyx_INCREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_player_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 580, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_player_board_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = 0; { @@ -34199,15 +34792,15 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_player_occupied, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 580, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } - if (!(likely(PySet_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_4))) __PYX_ERR(0, 580, __pyx_L1_error) + if (!(likely(PySet_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_4))) __PYX_ERR(0, 593, __pyx_L1_error) __pyx_v_player_occupied = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":582 - * player_occupied = self.board.get_player_occupied(player_idx) + /* "blokus_cython.pyx":595 + * player_occupied = self.board.get_player_occupied(player_board_idx) * # Manual any() implementation - Cython doesn't support generator expressions * result = False # <<<<<<<<<<<<<< * for cx, cy in placed_corners: @@ -34215,7 +34808,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ __pyx_v_result = 0; - /* "blokus_gym/core/blokus_cython.pyx":583 + /* "blokus_cython.pyx":596 * # Manual any() implementation - Cython doesn't support generator expressions * result = False * for cx, cy in placed_corners: # <<<<<<<<<<<<<< @@ -34224,7 +34817,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ if (unlikely(__pyx_v_placed_corners == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 583, __pyx_L1_error) + __PYX_ERR(0, 596, __pyx_L1_error) } __pyx_t_4 = __pyx_v_placed_corners; __Pyx_INCREF(__pyx_t_4); __pyx_t_13 = 0; @@ -34232,13 +34825,13 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 583, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 596, __pyx_L1_error) #endif if (__pyx_t_13 >= __pyx_temp) break; } __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_4, __pyx_t_13, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_13; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 583, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { PyObject* sequence = __pyx_t_5; @@ -34246,7 +34839,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 583, __pyx_L1_error) + __PYX_ERR(0, 596, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -34256,22 +34849,22 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_INCREF(__pyx_t_1); } else { __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 583, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 596, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_1); } #else - __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 583, __pyx_L1_error) + __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 583, __pyx_L1_error) + __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { Py_ssize_t index = -1; - __pyx_t_2 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 583, __pyx_L1_error) + __pyx_t_2 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); @@ -34279,7 +34872,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_1 = __pyx_t_9(__pyx_t_2); if (unlikely(!__pyx_t_1)) goto __pyx_L29_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_2), 2) < (0)) __PYX_ERR(0, 583, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_2), 2) < (0)) __PYX_ERR(0, 596, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L30_unpacking_done; @@ -34287,7 +34880,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 583, __pyx_L1_error) + __PYX_ERR(0, 596, __pyx_L1_error) __pyx_L30_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_cx, __pyx_t_3); @@ -34295,7 +34888,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_XDECREF_SET(__pyx_v_cy, __pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":584 + /* "blokus_cython.pyx":597 * result = False * for cx, cy in placed_corners: * if self.board.in_bounds(cx, cy) and (cx, cy) in player_occupied: # <<<<<<<<<<<<<< @@ -34309,35 +34902,35 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_cx, __pyx_v_cy}; __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_in_bounds, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 584, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 584, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 597, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_7) { } else { __pyx_t_12 = __pyx_t_7; goto __pyx_L32_bool_binop_done; } - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 584, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_cx); __Pyx_GIVEREF(__pyx_v_cx); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_cx) != (0)) __PYX_ERR(0, 584, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_cx) != (0)) __PYX_ERR(0, 597, __pyx_L1_error); __Pyx_INCREF(__pyx_v_cy); __Pyx_GIVEREF(__pyx_v_cy); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_cy) != (0)) __PYX_ERR(0, 584, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_cy) != (0)) __PYX_ERR(0, 597, __pyx_L1_error); if (unlikely(__pyx_v_player_occupied == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 584, __pyx_L1_error) + __PYX_ERR(0, 597, __pyx_L1_error) } - __pyx_t_7 = (__Pyx_PySet_ContainsTF(__pyx_t_5, __pyx_v_player_occupied, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 584, __pyx_L1_error) + __pyx_t_7 = (__Pyx_PySet_ContainsTF(__pyx_t_5, __pyx_v_player_occupied, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 597, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_12 = __pyx_t_7; __pyx_L32_bool_binop_done:; if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":585 + /* "blokus_cython.pyx":598 * for cx, cy in placed_corners: * if self.board.in_bounds(cx, cy) and (cx, cy) in player_occupied: * result = True # <<<<<<<<<<<<<< @@ -34346,7 +34939,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ __pyx_v_result = 1; - /* "blokus_gym/core/blokus_cython.pyx":586 + /* "blokus_cython.pyx":599 * if self.board.in_bounds(cx, cy) and (cx, cy) in player_occupied: * result = True * break # <<<<<<<<<<<<<< @@ -34355,7 +34948,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ goto __pyx_L28_break; - /* "blokus_gym/core/blokus_cython.pyx":584 + /* "blokus_cython.pyx":597 * result = False * for cx, cy in placed_corners: * if self.board.in_bounds(cx, cy) and (cx, cy) in player_occupied: # <<<<<<<<<<<<<< @@ -34364,7 +34957,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ } - /* "blokus_gym/core/blokus_cython.pyx":583 + /* "blokus_cython.pyx":596 * # Manual any() implementation - Cython doesn't support generator expressions * result = False * for cx, cy in placed_corners: # <<<<<<<<<<<<<< @@ -34379,7 +34972,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st goto __pyx_L34_for_end; __pyx_L34_for_end:; - /* "blokus_gym/core/blokus_cython.pyx":587 + /* "blokus_cython.pyx":600 * result = True * break * if not result: # <<<<<<<<<<<<<< @@ -34389,7 +34982,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __pyx_t_12 = (!__pyx_v_result); if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":588 + /* "blokus_cython.pyx":601 * break * if not result: * return False # <<<<<<<<<<<<<< @@ -34399,7 +34992,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __pyx_r = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":587 + /* "blokus_cython.pyx":600 * result = True * break * if not result: # <<<<<<<<<<<<<< @@ -34408,16 +35001,16 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st */ } - /* "blokus_gym/core/blokus_cython.pyx":579 + /* "blokus_cython.pyx":592 * * # Rule 4: Corner rule (must touch same-color at a corner) * if player.has_started: # <<<<<<<<<<<<<< - * player_occupied = self.board.get_player_occupied(player_idx) + * player_occupied = self.board.get_player_occupied(player_board_idx) * # Manual any() implementation - Cython doesn't support generator expressions */ } - /* "blokus_gym/core/blokus_cython.pyx":590 + /* "blokus_cython.pyx":603 * return False * * return True # <<<<<<<<<<<<<< @@ -34427,8 +35020,8 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __pyx_r = 1; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":540 - * return result + /* "blokus_cython.pyx":553 + * return self._get_placed_corners(move) * * cpdef bint valid_move(self, int player_idx, Move move): # <<<<<<<<<<<<<< * """Check if a move is valid for the given player.""" @@ -34444,7 +35037,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_14); __Pyx_XDECREF(__pyx_t_15); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.valid_move", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.valid_move", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_player); @@ -34462,16 +35055,16 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(st } /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9valid_move(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_13valid_move(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_8valid_move, "Check if a move is valid for the given player."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_9valid_move = {"valid_move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9valid_move, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_8valid_move}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9valid_move(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_12valid_move, "Check if a move is valid for the given player."); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_13valid_move = {"valid_move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_13valid_move, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_12valid_move}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_13valid_move(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -34479,7 +35072,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { int __pyx_v_player_idx; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move = 0; + struct __pyx_obj_13blokus_cython_Move *__pyx_v_move = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif @@ -34502,51 +35095,51 @@ PyObject *__pyx_args, PyObject *__pyx_kwds { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_player_idx,&__pyx_mstate_global->__pyx_n_u_move,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; - if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 540, __pyx_L3_error) + if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 553, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 540, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 553, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 540, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 553, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "valid_move", 0) < (0)) __PYX_ERR(0, 540, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "valid_move", 0) < (0)) __PYX_ERR(0, 553, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { - if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("valid_move", 1, 2, 2, i); __PYX_ERR(0, 540, __pyx_L3_error) } + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("valid_move", 1, 2, 2, i); __PYX_ERR(0, 553, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 540, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 553, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 540, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 553, __pyx_L3_error) } - __pyx_v_player_idx = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_player_idx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 540, __pyx_L3_error) - __pyx_v_move = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)values[1]); + __pyx_v_player_idx = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_player_idx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 553, __pyx_L3_error) + __pyx_v_move = ((struct __pyx_obj_13blokus_cython_Move *)values[1]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("valid_move", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 540, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("valid_move", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 553, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.valid_move", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.valid_move", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_move), __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move, 1, "move", 0))) __PYX_ERR(0, 540, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_8valid_move(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_player_idx, __pyx_v_move); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_move), __pyx_mstate_global->__pyx_ptype_13blokus_cython_Move, 1, "move", 0))) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_12valid_move(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_player_idx, __pyx_v_move); /* function exit code */ goto __pyx_L0; @@ -34565,7 +35158,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_8valid_move(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_12valid_move(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -34575,8 +35168,8 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_8valid int __pyx_clineno = 0; __Pyx_RefNannySetupContext("valid_move", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move(__pyx_v_self, __pyx_v_player_idx, __pyx_v_move, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 540, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 540, __pyx_L1_error) + __pyx_t_1 = __pyx_f_13blokus_cython_10BlokusGame_valid_move(__pyx_v_self, __pyx_v_player_idx, __pyx_v_move, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 553, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; @@ -34585,7 +35178,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_8valid /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.valid_move", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.valid_move", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -34593,7 +35186,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_8valid return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":592 +/* "blokus_cython.pyx":605 * return True * * cpdef get_valid_actions(self, int player_idx): # <<<<<<<<<<<<<< @@ -34601,20 +35194,20 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_8valid * cdef PlayerState player = self.players[player_idx] */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11get_valid_actions(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_15get_valid_actions(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_valid_actions(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, int __pyx_skip_dispatch) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_player = 0; +static PyObject *__pyx_f_13blokus_cython_10BlokusGame_get_valid_actions(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, int __pyx_skip_dispatch) { + struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_player = 0; PyArrayObject *__pyx_v_mask = 0; PyObject *__pyx_v_available_piece_ids = 0; int __pyx_v_piece_id; int __pyx_v_action_idx; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move = 0; + struct __pyx_obj_13blokus_cython_Move *__pyx_v_move = 0; PyObject *__pyx_v_placed_corners = 0; PyObject *__pyx_v_placed_squares = 0; int __pyx_v_x; @@ -34661,7 +35254,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val /* Check if overridden in Python */ else if ( #if !CYTHON_USE_TYPE_SLOTS - unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame && + unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame && __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC)) #else unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))) @@ -34672,14 +35265,14 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) { PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); #endif - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_get_valid_actions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_get_valid_actions); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11get_valid_actions)) { + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_13blokus_cython_10BlokusGame_15get_valid_actions)) { __Pyx_XDECREF(__pyx_r); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = __pyx_t_1; - __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_player_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 592, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_player_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = 1; #if CYTHON_UNPACK_METHODS @@ -34699,7 +35292,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 592, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_r = __pyx_t_2; @@ -34720,7 +35313,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val #endif } - /* "blokus_gym/core/blokus_cython.pyx":594 + /* "blokus_cython.pyx":607 * cpdef get_valid_actions(self, int player_idx): * """Get a boolean mask of valid actions for the given player.""" * cdef PlayerState player = self.players[player_idx] # <<<<<<<<<<<<<< @@ -34729,15 +35322,15 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ if (unlikely(__pyx_v_self->players == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 594, __pyx_L1_error) + __PYX_ERR(0, 607, __pyx_L1_error) } - __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->players, __pyx_v_player_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 594, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->players, __pyx_v_player_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState))))) __PYX_ERR(0, 594, __pyx_L1_error) - __pyx_v_player = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_13blokus_cython_PlayerState))))) __PYX_ERR(0, 607, __pyx_L1_error) + __pyx_v_player = ((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":595 + /* "blokus_cython.pyx":608 * """Get a boolean mask of valid actions for the given player.""" * cdef PlayerState player = self.players[player_idx] * cdef cnp.ndarray mask = np.zeros(self.num_actions, dtype=bool) # <<<<<<<<<<<<<< @@ -34745,12 +35338,12 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val * cdef int piece_id, action_idx */ __pyx_t_2 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 595, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 595, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_num_actions); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 595, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_num_actions); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = 1; #if CYTHON_UNPACK_METHODS @@ -34766,34 +35359,34 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val #endif { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, __pyx_t_4}; - __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 595, __pyx_L1_error) + __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, ((PyObject *)(&PyBool_Type)), __pyx_t_3, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 595, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, ((PyObject *)(&PyBool_Type)), __pyx_t_3, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 608, __pyx_L1_error) __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 595, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 595, __pyx_L1_error) + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 608, __pyx_L1_error) __pyx_v_mask = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":596 + /* "blokus_cython.pyx":609 * cdef PlayerState player = self.players[player_idx] * cdef cnp.ndarray mask = np.zeros(self.num_actions, dtype=bool) * cdef list available_piece_ids = [] # <<<<<<<<<<<<<< * cdef int piece_id, action_idx * cdef Move move */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_available_piece_ids = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":600 + /* "blokus_cython.pyx":613 * cdef Move move * cdef list placed_corners, placed_squares * cdef int x, y, player_board_idx = player_idx + 1 # <<<<<<<<<<<<<< @@ -34802,7 +35395,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ __pyx_v_player_board_idx = (__pyx_v_player_idx + 1); - /* "blokus_gym/core/blokus_cython.pyx":607 + /* "blokus_cython.pyx":620 * * # Build available_piece_ids list * for name in player.available_pieces: # <<<<<<<<<<<<<< @@ -34810,7 +35403,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val * */ __pyx_t_7 = 0; - __pyx_t_5 = __Pyx_set_iterator(__pyx_v_player->available_pieces, 1, (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 607, __pyx_L1_error) + __pyx_t_5 = __Pyx_set_iterator(__pyx_v_player->available_pieces, 1, (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; @@ -34818,12 +35411,12 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val while (1) { __pyx_t_10 = __Pyx_set_iter_next(__pyx_t_1, __pyx_t_8, &__pyx_t_7, &__pyx_t_5, __pyx_t_9); if (unlikely(__pyx_t_10 == 0)) break; - if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 607, __pyx_L1_error) + if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":608 + /* "blokus_cython.pyx":621 * # Build available_piece_ids list * for name in player.available_pieces: * available_piece_ids.append(self.piece_set.get_piece_id(name)) # <<<<<<<<<<<<<< @@ -34837,15 +35430,15 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_name}; __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_piece_id, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 608, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } - __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_available_piece_ids, __pyx_t_5); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 608, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_available_piece_ids, __pyx_t_5); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 621, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":610 + /* "blokus_cython.pyx":623 * available_piece_ids.append(self.piece_set.get_piece_id(name)) * * if not player.can_move: # <<<<<<<<<<<<<< @@ -34855,7 +35448,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __pyx_t_12 = (!__pyx_v_player->can_move); if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":611 + /* "blokus_cython.pyx":624 * * if not player.can_move: * return mask # <<<<<<<<<<<<<< @@ -34867,7 +35460,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __pyx_r = ((PyObject *)__pyx_v_mask); goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":610 + /* "blokus_cython.pyx":623 * available_piece_ids.append(self.piece_set.get_piece_id(name)) * * if not player.can_move: # <<<<<<<<<<<<<< @@ -34876,7 +35469,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ } - /* "blokus_gym/core/blokus_cython.pyx":613 + /* "blokus_cython.pyx":626 * return mask * * if not player.has_started or not player.corners: # <<<<<<<<<<<<<< @@ -34893,7 +35486,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val else { Py_ssize_t __pyx_temp = __Pyx_PySet_GET_SIZE(__pyx_v_player->corners); - if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 613, __pyx_L1_error) + if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 626, __pyx_L1_error) __pyx_t_13 = (__pyx_temp != 0); } @@ -34902,7 +35495,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __pyx_L7_bool_binop_done:; if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":614 + /* "blokus_cython.pyx":627 * * if not player.has_started or not player.corners: * for piece_id in available_piece_ids: # <<<<<<<<<<<<<< @@ -34915,19 +35508,19 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 614, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 627, __pyx_L1_error) #endif if (__pyx_t_8 >= __pyx_temp) break; } __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_8; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 614, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 614, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 627, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_piece_id = __pyx_t_9; - /* "blokus_gym/core/blokus_cython.pyx":615 + /* "blokus_cython.pyx":628 * if not player.has_started or not player.corners: * for piece_id in available_piece_ids: * for action_idx in self._actions_by_piece[piece_id]: # <<<<<<<<<<<<<< @@ -34936,18 +35529,18 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ if (unlikely(__pyx_v_self->_actions_by_piece == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 615, __pyx_L1_error) + __PYX_ERR(0, 628, __pyx_L1_error) } - __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_self->_actions_by_piece, __pyx_v_piece_id, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_self->_actions_by_piece, __pyx_v_piece_id, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) { __pyx_t_3 = __pyx_t_5; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0; __pyx_t_15 = NULL; } else { - __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 628, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; for (;;) { @@ -34956,7 +35549,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 615, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 628, __pyx_L1_error) #endif if (__pyx_t_7 >= __pyx_temp) break; } @@ -34966,7 +35559,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 615, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 628, __pyx_L1_error) #endif if (__pyx_t_7 >= __pyx_temp) break; } @@ -34977,24 +35570,24 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val #endif ++__pyx_t_7; } - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 615, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 628, __pyx_L1_error) } else { __pyx_t_5 = __pyx_t_15(__pyx_t_3); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { - if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 615, __pyx_L1_error) + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 628, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_5); - __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 615, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 628, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_action_idx = __pyx_t_9; - /* "blokus_gym/core/blokus_cython.pyx":616 + /* "blokus_cython.pyx":629 * for piece_id in available_piece_ids: * for action_idx in self._actions_by_piece[piece_id]: * if self.valid_move(player_idx, self._action_moves[action_idx]): # <<<<<<<<<<<<<< @@ -35003,25 +35596,25 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ if (unlikely(__pyx_v_self->_action_moves == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 616, __pyx_L1_error) + __PYX_ERR(0, 629, __pyx_L1_error) } - __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_self->_action_moves, __pyx_v_action_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 616, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_self->_action_moves, __pyx_v_action_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move))))) __PYX_ERR(0, 616, __pyx_L1_error) - __pyx_t_12 = ((struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->valid_move(__pyx_v_self, __pyx_v_player_idx, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_t_5), 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 616, __pyx_L1_error) + if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_13blokus_cython_Move))))) __PYX_ERR(0, 629, __pyx_L1_error) + __pyx_t_12 = ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->valid_move(__pyx_v_self, __pyx_v_player_idx, ((struct __pyx_obj_13blokus_cython_Move *)__pyx_t_5), 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 629, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":617 + /* "blokus_cython.pyx":630 * for action_idx in self._actions_by_piece[piece_id]: * if self.valid_move(player_idx, self._action_moves[action_idx]): * mask[action_idx] = True # <<<<<<<<<<<<<< * return mask * */ - if (unlikely((__Pyx_SetItemInt(((PyObject *)__pyx_v_mask), __pyx_v_action_idx, Py_True, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(0, 617, __pyx_L1_error) + if (unlikely((__Pyx_SetItemInt(((PyObject *)__pyx_v_mask), __pyx_v_action_idx, Py_True, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(0, 630, __pyx_L1_error) - /* "blokus_gym/core/blokus_cython.pyx":616 + /* "blokus_cython.pyx":629 * for piece_id in available_piece_ids: * for action_idx in self._actions_by_piece[piece_id]: * if self.valid_move(player_idx, self._action_moves[action_idx]): # <<<<<<<<<<<<<< @@ -35030,7 +35623,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ } - /* "blokus_gym/core/blokus_cython.pyx":615 + /* "blokus_cython.pyx":628 * if not player.has_started or not player.corners: * for piece_id in available_piece_ids: * for action_idx in self._actions_by_piece[piece_id]: # <<<<<<<<<<<<<< @@ -35040,7 +35633,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":614 + /* "blokus_cython.pyx":627 * * if not player.has_started or not player.corners: * for piece_id in available_piece_ids: # <<<<<<<<<<<<<< @@ -35050,7 +35643,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":618 + /* "blokus_cython.pyx":631 * if self.valid_move(player_idx, self._action_moves[action_idx]): * mask[action_idx] = True * return mask # <<<<<<<<<<<<<< @@ -35062,7 +35655,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __pyx_r = ((PyObject *)__pyx_v_mask); goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":613 + /* "blokus_cython.pyx":626 * return mask * * if not player.has_started or not player.corners: # <<<<<<<<<<<<<< @@ -35071,7 +35664,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ } - /* "blokus_gym/core/blokus_cython.pyx":621 + /* "blokus_cython.pyx":634 * * # Pre-compute player's occupied squares ONCE * player_occupied = self.board.get_player_occupied(player_idx + 1) # <<<<<<<<<<<<<< @@ -35080,7 +35673,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ __pyx_t_3 = __pyx_v_self->board; __Pyx_INCREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyLong_From_long((__pyx_v_player_idx + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 621, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyLong_From_long((__pyx_v_player_idx + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = 0; { @@ -35088,14 +35681,14 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_player_occupied, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 621, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } - if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_1))) __PYX_ERR(0, 621, __pyx_L1_error) + if (!(likely(PySet_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("set", __pyx_t_1))) __PYX_ERR(0, 634, __pyx_L1_error) __pyx_v_player_occupied = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":623 + /* "blokus_cython.pyx":636 * player_occupied = self.board.get_player_occupied(player_idx + 1) * * for piece_id in available_piece_ids: # <<<<<<<<<<<<<< @@ -35108,19 +35701,19 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 623, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 636, __pyx_L1_error) #endif if (__pyx_t_8 >= __pyx_temp) break; } __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_8; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 623, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 623, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 636, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_piece_id = __pyx_t_9; - /* "blokus_gym/core/blokus_cython.pyx":624 + /* "blokus_cython.pyx":637 * * for piece_id in available_piece_ids: * for action_idx in self._actions_by_piece[piece_id]: # <<<<<<<<<<<<<< @@ -35129,18 +35722,18 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ if (unlikely(__pyx_v_self->_actions_by_piece == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 624, __pyx_L1_error) + __PYX_ERR(0, 637, __pyx_L1_error) } - __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_self->_actions_by_piece, __pyx_v_piece_id, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 624, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_self->_actions_by_piece, __pyx_v_piece_id, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) { __pyx_t_3 = __pyx_t_5; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0; __pyx_t_15 = NULL; } else { - __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 624, __pyx_L1_error) + __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 624, __pyx_L1_error) + __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 637, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; for (;;) { @@ -35149,7 +35742,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 624, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 637, __pyx_L1_error) #endif if (__pyx_t_7 >= __pyx_temp) break; } @@ -35159,7 +35752,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 624, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 637, __pyx_L1_error) #endif if (__pyx_t_7 >= __pyx_temp) break; } @@ -35170,24 +35763,24 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val #endif ++__pyx_t_7; } - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 624, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 637, __pyx_L1_error) } else { __pyx_t_5 = __pyx_t_15(__pyx_t_3); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { - if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 624, __pyx_L1_error) + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 637, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_5); - __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 624, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 637, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_action_idx = __pyx_t_9; - /* "blokus_gym/core/blokus_cython.pyx":625 + /* "blokus_cython.pyx":638 * for piece_id in available_piece_ids: * for action_idx in self._actions_by_piece[piece_id]: * move = self._action_moves[action_idx] # <<<<<<<<<<<<<< @@ -35196,27 +35789,27 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ if (unlikely(__pyx_v_self->_action_moves == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 625, __pyx_L1_error) + __PYX_ERR(0, 638, __pyx_L1_error) } - __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_self->_action_moves, __pyx_v_action_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 625, __pyx_L1_error) + __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_self->_action_moves, __pyx_v_action_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move))))) __PYX_ERR(0, 625, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_move, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_t_5)); + if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_mstate_global->__pyx_ptype_13blokus_cython_Move))))) __PYX_ERR(0, 638, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_move, ((struct __pyx_obj_13blokus_cython_Move *)__pyx_t_5)); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":626 + /* "blokus_cython.pyx":639 * for action_idx in self._actions_by_piece[piece_id]: * move = self._action_moves[action_idx] * placed_corners = self._get_placed_corners(move) # <<<<<<<<<<<<<< * * # Early exit: check corner touch (manual any()) */ - __pyx_t_5 = ((struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_get_placed_corners(__pyx_v_self, __pyx_v_move); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 626, __pyx_L1_error) + __pyx_t_5 = ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_get_placed_corners(__pyx_v_self, __pyx_v_move); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_placed_corners, ((PyObject*)__pyx_t_5)); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":629 + /* "blokus_cython.pyx":642 * * # Early exit: check corner touch (manual any()) * result = False # <<<<<<<<<<<<<< @@ -35225,7 +35818,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ __pyx_v_result = 0; - /* "blokus_gym/core/blokus_cython.pyx":630 + /* "blokus_cython.pyx":643 * # Early exit: check corner touch (manual any()) * result = False * for cx, cy in placed_corners: # <<<<<<<<<<<<<< @@ -35234,7 +35827,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ if (unlikely(__pyx_v_placed_corners == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 630, __pyx_L1_error) + __PYX_ERR(0, 643, __pyx_L1_error) } __pyx_t_5 = __pyx_v_placed_corners; __Pyx_INCREF(__pyx_t_5); __pyx_t_16 = 0; @@ -35242,13 +35835,13 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 630, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 643, __pyx_L1_error) #endif if (__pyx_t_16 >= __pyx_temp) break; } __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_5, __pyx_t_16, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_16; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 630, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; @@ -35256,7 +35849,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 630, __pyx_L1_error) + __PYX_ERR(0, 643, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -35266,22 +35859,22 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __Pyx_INCREF(__pyx_t_17); } else { __pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 630, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 643, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_2); __pyx_t_17 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 630, __pyx_L1_error) + if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 643, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_17); } #else - __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 630, __pyx_L1_error) + __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_17 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 630, __pyx_L1_error) + __pyx_t_17 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; - __pyx_t_18 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 630, __pyx_L1_error) + __pyx_t_18 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_19 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_18); @@ -35289,7 +35882,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_17 = __pyx_t_19(__pyx_t_18); if (unlikely(!__pyx_t_17)) goto __pyx_L22_unpacking_failed; __Pyx_GOTREF(__pyx_t_17); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_18), 2) < (0)) __PYX_ERR(0, 630, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_18), 2) < (0)) __PYX_ERR(0, 643, __pyx_L1_error) __pyx_t_19 = NULL; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; goto __pyx_L23_unpacking_done; @@ -35297,17 +35890,17 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_19 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 630, __pyx_L1_error) + __PYX_ERR(0, 643, __pyx_L1_error) __pyx_L23_unpacking_done:; } - __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 630, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 643, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_17); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 630, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_17); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 643, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_v_cx = __pyx_t_9; __pyx_v_cy = __pyx_t_10; - /* "blokus_gym/core/blokus_cython.pyx":631 + /* "blokus_cython.pyx":644 * result = False * for cx, cy in placed_corners: * if self.board.in_bounds(cx, cy) and (cx, cy) in player_occupied: # <<<<<<<<<<<<<< @@ -35316,9 +35909,9 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ __pyx_t_17 = __pyx_v_self->board; __Pyx_INCREF(__pyx_t_17); - __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_cx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 631, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_cx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_18 = __Pyx_PyLong_From_int(__pyx_v_cy); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 631, __pyx_L1_error) + __pyx_t_18 = __Pyx_PyLong_From_int(__pyx_v_cy); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_6 = 0; { @@ -35327,39 +35920,39 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 631, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } - __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 631, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 644, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_14) { } else { __pyx_t_12 = __pyx_t_14; goto __pyx_L25_bool_binop_done; } - __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_cx); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 631, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_cx); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_18 = __Pyx_PyLong_From_int(__pyx_v_cy); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 631, __pyx_L1_error) + __pyx_t_18 = __Pyx_PyLong_From_int(__pyx_v_cy); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); - __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 631, __pyx_L1_error) + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4) != (0)) __PYX_ERR(0, 631, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4) != (0)) __PYX_ERR(0, 644, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_18); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_18) != (0)) __PYX_ERR(0, 631, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_18) != (0)) __PYX_ERR(0, 644, __pyx_L1_error); __pyx_t_4 = 0; __pyx_t_18 = 0; if (unlikely(__pyx_v_player_occupied == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 631, __pyx_L1_error) + __PYX_ERR(0, 644, __pyx_L1_error) } - __pyx_t_14 = (__Pyx_PySet_ContainsTF(__pyx_t_2, __pyx_v_player_occupied, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 631, __pyx_L1_error) + __pyx_t_14 = (__Pyx_PySet_ContainsTF(__pyx_t_2, __pyx_v_player_occupied, Py_EQ)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 644, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_12 = __pyx_t_14; __pyx_L25_bool_binop_done:; if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":632 + /* "blokus_cython.pyx":645 * for cx, cy in placed_corners: * if self.board.in_bounds(cx, cy) and (cx, cy) in player_occupied: * result = True # <<<<<<<<<<<<<< @@ -35368,7 +35961,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ __pyx_v_result = 1; - /* "blokus_gym/core/blokus_cython.pyx":633 + /* "blokus_cython.pyx":646 * if self.board.in_bounds(cx, cy) and (cx, cy) in player_occupied: * result = True * break # <<<<<<<<<<<<<< @@ -35377,7 +35970,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ goto __pyx_L21_break; - /* "blokus_gym/core/blokus_cython.pyx":631 + /* "blokus_cython.pyx":644 * result = False * for cx, cy in placed_corners: * if self.board.in_bounds(cx, cy) and (cx, cy) in player_occupied: # <<<<<<<<<<<<<< @@ -35386,7 +35979,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ } - /* "blokus_gym/core/blokus_cython.pyx":630 + /* "blokus_cython.pyx":643 * # Early exit: check corner touch (manual any()) * result = False * for cx, cy in placed_corners: # <<<<<<<<<<<<<< @@ -35401,7 +35994,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val goto __pyx_L27_for_end; __pyx_L27_for_end:; - /* "blokus_gym/core/blokus_cython.pyx":634 + /* "blokus_cython.pyx":647 * result = True * break * if not result: # <<<<<<<<<<<<<< @@ -35411,7 +36004,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __pyx_t_12 = (!__pyx_v_result); if (__pyx_t_12) { - /* "blokus_gym/core/blokus_cython.pyx":635 + /* "blokus_cython.pyx":648 * break * if not result: * continue # <<<<<<<<<<<<<< @@ -35420,7 +36013,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ goto __pyx_L18_continue; - /* "blokus_gym/core/blokus_cython.pyx":634 + /* "blokus_cython.pyx":647 * result = True * break * if not result: # <<<<<<<<<<<<<< @@ -35429,19 +36022,19 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ } - /* "blokus_gym/core/blokus_cython.pyx":637 + /* "blokus_cython.pyx":650 * continue * * placed_squares = self._get_placed_squares(move) # <<<<<<<<<<<<<< * * # Check bounds */ - __pyx_t_5 = ((struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_get_placed_squares(__pyx_v_self, __pyx_v_move); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 637, __pyx_L1_error) + __pyx_t_5 = ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_get_placed_squares(__pyx_v_self, __pyx_v_move); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_placed_squares, ((PyObject*)__pyx_t_5)); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":640 + /* "blokus_cython.pyx":653 * * # Check bounds * result = True # <<<<<<<<<<<<<< @@ -35450,240 +36043,12 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ __pyx_v_result = 1; - /* "blokus_gym/core/blokus_cython.pyx":641 + /* "blokus_cython.pyx":654 * # Check bounds * result = True * for x, y in placed_squares: # <<<<<<<<<<<<<< * if not self.board.in_bounds(x, y): * result = False -*/ - if (unlikely(__pyx_v_placed_squares == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 641, __pyx_L1_error) - } - __pyx_t_5 = __pyx_v_placed_squares; __Pyx_INCREF(__pyx_t_5); - __pyx_t_16 = 0; - for (;;) { - { - Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5); - #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 641, __pyx_L1_error) - #endif - if (__pyx_t_16 >= __pyx_temp) break; - } - __pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_5, __pyx_t_16, __Pyx_ReferenceSharing_OwnStrongReference); - ++__pyx_t_16; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 641, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { - PyObject* sequence = __pyx_t_2; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 2)) { - if (size > 2) __Pyx_RaiseTooManyValuesError(2); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 641, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_18 = PyTuple_GET_ITEM(sequence, 0); - __Pyx_INCREF(__pyx_t_18); - __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); - __Pyx_INCREF(__pyx_t_4); - } else { - __pyx_t_18 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 641, __pyx_L1_error) - __Pyx_XGOTREF(__pyx_t_18); - __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 641, __pyx_L1_error) - __Pyx_XGOTREF(__pyx_t_4); - } - #else - __pyx_t_18 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 641, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_18); - __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 641, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else { - Py_ssize_t index = -1; - __pyx_t_17 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 641, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_17); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_19 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_17); - index = 0; __pyx_t_18 = __pyx_t_19(__pyx_t_17); if (unlikely(!__pyx_t_18)) goto __pyx_L31_unpacking_failed; - __Pyx_GOTREF(__pyx_t_18); - index = 1; __pyx_t_4 = __pyx_t_19(__pyx_t_17); if (unlikely(!__pyx_t_4)) goto __pyx_L31_unpacking_failed; - __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_17), 2) < (0)) __PYX_ERR(0, 641, __pyx_L1_error) - __pyx_t_19 = NULL; - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - goto __pyx_L32_unpacking_done; - __pyx_L31_unpacking_failed:; - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_19 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 641, __pyx_L1_error) - __pyx_L32_unpacking_done:; - } - __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_18); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 641, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 641, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_x = __pyx_t_10; - __pyx_v_y = __pyx_t_9; - - /* "blokus_gym/core/blokus_cython.pyx":642 - * result = True - * for x, y in placed_squares: - * if not self.board.in_bounds(x, y): # <<<<<<<<<<<<<< - * result = False - * break -*/ - __pyx_t_4 = __pyx_v_self->board; - __Pyx_INCREF(__pyx_t_4); - __pyx_t_18 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 642, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_18); - __pyx_t_17 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 642, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_17); - __pyx_t_6 = 0; - { - PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_18, __pyx_t_17}; - __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_in_bounds, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; - __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 642, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - } - __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 642, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_14 = (!__pyx_t_12); - if (__pyx_t_14) { - - /* "blokus_gym/core/blokus_cython.pyx":643 - * for x, y in placed_squares: - * if not self.board.in_bounds(x, y): - * result = False # <<<<<<<<<<<<<< - * break - * if not result: -*/ - __pyx_v_result = 0; - - /* "blokus_gym/core/blokus_cython.pyx":644 - * if not self.board.in_bounds(x, y): - * result = False - * break # <<<<<<<<<<<<<< - * if not result: - * continue -*/ - goto __pyx_L30_break; - - /* "blokus_gym/core/blokus_cython.pyx":642 - * result = True - * for x, y in placed_squares: - * if not self.board.in_bounds(x, y): # <<<<<<<<<<<<<< - * result = False - * break -*/ - } - - /* "blokus_gym/core/blokus_cython.pyx":641 - * # Check bounds - * result = True - * for x, y in placed_squares: # <<<<<<<<<<<<<< - * if not self.board.in_bounds(x, y): - * result = False -*/ - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - goto __pyx_L34_for_end; - __pyx_L30_break:; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - goto __pyx_L34_for_end; - __pyx_L34_for_end:; - - /* "blokus_gym/core/blokus_cython.pyx":645 - * result = False - * break - * if not result: # <<<<<<<<<<<<<< - * continue - * -*/ - __pyx_t_14 = (!__pyx_v_result); - if (__pyx_t_14) { - - /* "blokus_gym/core/blokus_cython.pyx":646 - * break - * if not result: - * continue # <<<<<<<<<<<<<< - * - * # Check overlap -*/ - goto __pyx_L18_continue; - - /* "blokus_gym/core/blokus_cython.pyx":645 - * result = False - * break - * if not result: # <<<<<<<<<<<<<< - * continue - * -*/ - } - - /* "blokus_gym/core/blokus_cython.pyx":649 - * - * # Check overlap - * if self.board.has_overlap(placed_squares): # <<<<<<<<<<<<<< - * continue - * -*/ - __pyx_t_2 = __pyx_v_self->board; - __Pyx_INCREF(__pyx_t_2); - __pyx_t_6 = 0; - { - PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_placed_squares}; - __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_has_overlap, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 649, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - } - __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 649, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__pyx_t_14) { - - /* "blokus_gym/core/blokus_cython.pyx":650 - * # Check overlap - * if self.board.has_overlap(placed_squares): - * continue # <<<<<<<<<<<<<< - * - * # Check edge adjacency (inline for speed) -*/ - goto __pyx_L18_continue; - - /* "blokus_gym/core/blokus_cython.pyx":649 - * - * # Check overlap - * if self.board.has_overlap(placed_squares): # <<<<<<<<<<<<<< - * continue - * -*/ - } - - /* "blokus_gym/core/blokus_cython.pyx":653 - * - * # Check edge adjacency (inline for speed) - * edge_invalid = False # <<<<<<<<<<<<<< - * for x, y in placed_squares: - * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: -*/ - __pyx_v_edge_invalid = 0; - - /* "blokus_gym/core/blokus_cython.pyx":654 - * # Check edge adjacency (inline for speed) - * edge_invalid = False - * for x, y in placed_squares: # <<<<<<<<<<<<<< - * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: - * if self.board.in_bounds(x + dx, y + dy): */ if (unlikely(__pyx_v_placed_squares == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); @@ -35712,6 +36077,234 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __PYX_ERR(0, 654, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_18 = PyTuple_GET_ITEM(sequence, 0); + __Pyx_INCREF(__pyx_t_18); + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); + __Pyx_INCREF(__pyx_t_4); + } else { + __pyx_t_18 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); + if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 654, __pyx_L1_error) + __Pyx_XGOTREF(__pyx_t_18); + __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 654, __pyx_L1_error) + __Pyx_XGOTREF(__pyx_t_4); + } + #else + __pyx_t_18 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 654, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_18); + __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 654, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #endif + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_17 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 654, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_17); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_19 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_17); + index = 0; __pyx_t_18 = __pyx_t_19(__pyx_t_17); if (unlikely(!__pyx_t_18)) goto __pyx_L31_unpacking_failed; + __Pyx_GOTREF(__pyx_t_18); + index = 1; __pyx_t_4 = __pyx_t_19(__pyx_t_17); if (unlikely(!__pyx_t_4)) goto __pyx_L31_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_17), 2) < (0)) __PYX_ERR(0, 654, __pyx_L1_error) + __pyx_t_19 = NULL; + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + goto __pyx_L32_unpacking_done; + __pyx_L31_unpacking_failed:; + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + __pyx_t_19 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(0, 654, __pyx_L1_error) + __pyx_L32_unpacking_done:; + } + __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_18); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 654, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; + __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 654, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_x = __pyx_t_10; + __pyx_v_y = __pyx_t_9; + + /* "blokus_cython.pyx":655 + * result = True + * for x, y in placed_squares: + * if not self.board.in_bounds(x, y): # <<<<<<<<<<<<<< + * result = False + * break +*/ + __pyx_t_4 = __pyx_v_self->board; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_18 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 655, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_18); + __pyx_t_17 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 655, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_17); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_18, __pyx_t_17}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_in_bounds, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; + __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 655, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 655, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_14 = (!__pyx_t_12); + if (__pyx_t_14) { + + /* "blokus_cython.pyx":656 + * for x, y in placed_squares: + * if not self.board.in_bounds(x, y): + * result = False # <<<<<<<<<<<<<< + * break + * if not result: +*/ + __pyx_v_result = 0; + + /* "blokus_cython.pyx":657 + * if not self.board.in_bounds(x, y): + * result = False + * break # <<<<<<<<<<<<<< + * if not result: + * continue +*/ + goto __pyx_L30_break; + + /* "blokus_cython.pyx":655 + * result = True + * for x, y in placed_squares: + * if not self.board.in_bounds(x, y): # <<<<<<<<<<<<<< + * result = False + * break +*/ + } + + /* "blokus_cython.pyx":654 + * # Check bounds + * result = True + * for x, y in placed_squares: # <<<<<<<<<<<<<< + * if not self.board.in_bounds(x, y): + * result = False +*/ + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L34_for_end; + __pyx_L30_break:; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L34_for_end; + __pyx_L34_for_end:; + + /* "blokus_cython.pyx":658 + * result = False + * break + * if not result: # <<<<<<<<<<<<<< + * continue + * +*/ + __pyx_t_14 = (!__pyx_v_result); + if (__pyx_t_14) { + + /* "blokus_cython.pyx":659 + * break + * if not result: + * continue # <<<<<<<<<<<<<< + * + * # Check overlap +*/ + goto __pyx_L18_continue; + + /* "blokus_cython.pyx":658 + * result = False + * break + * if not result: # <<<<<<<<<<<<<< + * continue + * +*/ + } + + /* "blokus_cython.pyx":662 + * + * # Check overlap + * if self.board.has_overlap(placed_squares): # <<<<<<<<<<<<<< + * continue + * +*/ + __pyx_t_2 = __pyx_v_self->board; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_placed_squares}; + __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_has_overlap, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 662, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 662, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__pyx_t_14) { + + /* "blokus_cython.pyx":663 + * # Check overlap + * if self.board.has_overlap(placed_squares): + * continue # <<<<<<<<<<<<<< + * + * # Check edge adjacency (inline for speed) +*/ + goto __pyx_L18_continue; + + /* "blokus_cython.pyx":662 + * + * # Check overlap + * if self.board.has_overlap(placed_squares): # <<<<<<<<<<<<<< + * continue + * +*/ + } + + /* "blokus_cython.pyx":666 + * + * # Check edge adjacency (inline for speed) + * edge_invalid = False # <<<<<<<<<<<<<< + * for x, y in placed_squares: + * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: +*/ + __pyx_v_edge_invalid = 0; + + /* "blokus_cython.pyx":667 + * # Check edge adjacency (inline for speed) + * edge_invalid = False + * for x, y in placed_squares: # <<<<<<<<<<<<<< + * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: + * if self.board.in_bounds(x + dx, y + dy): +*/ + if (unlikely(__pyx_v_placed_squares == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(0, 667, __pyx_L1_error) + } + __pyx_t_5 = __pyx_v_placed_squares; __Pyx_INCREF(__pyx_t_5); + __pyx_t_16 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 667, __pyx_L1_error) + #endif + if (__pyx_t_16 >= __pyx_temp) break; + } + __pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_5, __pyx_t_16, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_16; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 667, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { + PyObject* sequence = __pyx_t_2; + Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); + if (unlikely(size != 2)) { + if (size > 2) __Pyx_RaiseTooManyValuesError(2); + else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); + __PYX_ERR(0, 667, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_17 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_17); @@ -35719,22 +36312,22 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __Pyx_INCREF(__pyx_t_18); } else { __pyx_t_17 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 654, __pyx_L1_error) + if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_17); __pyx_t_18 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 654, __pyx_L1_error) + if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_18); } #else - __pyx_t_17 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 654, __pyx_L1_error) + __pyx_t_17 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); - __pyx_t_18 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 654, __pyx_L1_error) + __pyx_t_18 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; - __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 654, __pyx_L1_error) + __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_19 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); @@ -35742,7 +36335,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __Pyx_GOTREF(__pyx_t_17); index = 1; __pyx_t_18 = __pyx_t_19(__pyx_t_4); if (unlikely(!__pyx_t_18)) goto __pyx_L39_unpacking_failed; __Pyx_GOTREF(__pyx_t_18); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_4), 2) < (0)) __PYX_ERR(0, 654, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_4), 2) < (0)) __PYX_ERR(0, 667, __pyx_L1_error) __pyx_t_19 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L40_unpacking_done; @@ -35750,17 +36343,17 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_19 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 654, __pyx_L1_error) + __PYX_ERR(0, 667, __pyx_L1_error) __pyx_L40_unpacking_done:; } - __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_17); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 654, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_t_17); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_18); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 654, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_18); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 667, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_v_x = __pyx_t_9; __pyx_v_y = __pyx_t_10; - /* "blokus_gym/core/blokus_cython.pyx":655 + /* "blokus_cython.pyx":668 * edge_invalid = False * for x, y in placed_squares: * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: # <<<<<<<<<<<<<< @@ -35777,7 +36370,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __pyx_t_18 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_20); #endif ++__pyx_t_20; - if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 655, __pyx_L1_error) + if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); if (likely(__pyx_t_18 != Py_None)) { PyObject* sequence = __pyx_t_18; @@ -35785,7 +36378,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 655, __pyx_L1_error) + __PYX_ERR(0, 668, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_17 = PyTuple_GET_ITEM(sequence, 0); @@ -35793,21 +36386,21 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_4); #else - __pyx_t_17 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 655, __pyx_L1_error) + __pyx_t_17 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); - __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 655, __pyx_L1_error) + __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 655, __pyx_L1_error) + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 668, __pyx_L1_error) } __Pyx_XDECREF_SET(__pyx_v_dx, __pyx_t_17); __pyx_t_17 = 0; __Pyx_XDECREF_SET(__pyx_v_dy, __pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":656 + /* "blokus_cython.pyx":669 * for x, y in placed_squares: * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: * if self.board.in_bounds(x + dx, y + dy): # <<<<<<<<<<<<<< @@ -35816,14 +36409,14 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ __pyx_t_4 = __pyx_v_self->board; __Pyx_INCREF(__pyx_t_4); - __pyx_t_17 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 656, __pyx_L1_error) + __pyx_t_17 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); - __pyx_t_21 = PyNumber_Add(__pyx_t_17, __pyx_v_dx); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 656, __pyx_L1_error) + __pyx_t_21 = PyNumber_Add(__pyx_t_17, __pyx_v_dx); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_21); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_17 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 656, __pyx_L1_error) + __pyx_t_17 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); - __pyx_t_22 = PyNumber_Add(__pyx_t_17, __pyx_v_dy); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 656, __pyx_L1_error) + __pyx_t_22 = PyNumber_Add(__pyx_t_17, __pyx_v_dy); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_22); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_6 = 0; @@ -35833,14 +36426,14 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; - if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 656, __pyx_L1_error) + if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); } - __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_18); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 656, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_18); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 669, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (__pyx_t_14) { - /* "blokus_gym/core/blokus_cython.pyx":657 + /* "blokus_cython.pyx":670 * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: * if self.board.in_bounds(x + dx, y + dy): * if self.board.get_cell(x + dx, y + dy) == player_board_idx: # <<<<<<<<<<<<<< @@ -35849,14 +36442,14 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ __pyx_t_22 = __pyx_v_self->board; __Pyx_INCREF(__pyx_t_22); - __pyx_t_21 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 657, __pyx_L1_error) + __pyx_t_21 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_21); - __pyx_t_4 = PyNumber_Add(__pyx_t_21, __pyx_v_dx); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 657, __pyx_L1_error) + __pyx_t_4 = PyNumber_Add(__pyx_t_21, __pyx_v_dx); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; - __pyx_t_21 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 657, __pyx_L1_error) + __pyx_t_21 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_21); - __pyx_t_17 = PyNumber_Add(__pyx_t_21, __pyx_v_dy); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 657, __pyx_L1_error) + __pyx_t_17 = PyNumber_Add(__pyx_t_21, __pyx_v_dy); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; __pyx_t_6 = 0; @@ -35866,19 +36459,19 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 657, __pyx_L1_error) + if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); } - __pyx_t_17 = __Pyx_PyLong_From_int(__pyx_v_player_board_idx); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 657, __pyx_L1_error) + __pyx_t_17 = __Pyx_PyLong_From_int(__pyx_v_player_board_idx); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); - __pyx_t_4 = PyObject_RichCompare(__pyx_t_18, __pyx_t_17, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 657, __pyx_L1_error) + __pyx_t_4 = PyObject_RichCompare(__pyx_t_18, __pyx_t_17, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; - __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 657, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_14) { - /* "blokus_gym/core/blokus_cython.pyx":658 + /* "blokus_cython.pyx":671 * if self.board.in_bounds(x + dx, y + dy): * if self.board.get_cell(x + dx, y + dy) == player_board_idx: * edge_invalid = True # <<<<<<<<<<<<<< @@ -35887,7 +36480,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ __pyx_v_edge_invalid = 1; - /* "blokus_gym/core/blokus_cython.pyx":659 + /* "blokus_cython.pyx":672 * if self.board.get_cell(x + dx, y + dy) == player_board_idx: * edge_invalid = True * break # <<<<<<<<<<<<<< @@ -35896,7 +36489,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ goto __pyx_L42_break; - /* "blokus_gym/core/blokus_cython.pyx":657 + /* "blokus_cython.pyx":670 * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: * if self.board.in_bounds(x + dx, y + dy): * if self.board.get_cell(x + dx, y + dy) == player_board_idx: # <<<<<<<<<<<<<< @@ -35905,7 +36498,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ } - /* "blokus_gym/core/blokus_cython.pyx":656 + /* "blokus_cython.pyx":669 * for x, y in placed_squares: * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: * if self.board.in_bounds(x + dx, y + dy): # <<<<<<<<<<<<<< @@ -35914,7 +36507,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ } - /* "blokus_gym/core/blokus_cython.pyx":655 + /* "blokus_cython.pyx":668 * edge_invalid = False * for x, y in placed_squares: * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: # <<<<<<<<<<<<<< @@ -35929,7 +36522,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val goto __pyx_L45_for_end; __pyx_L45_for_end:; - /* "blokus_gym/core/blokus_cython.pyx":660 + /* "blokus_cython.pyx":673 * edge_invalid = True * break * if edge_invalid: # <<<<<<<<<<<<<< @@ -35938,7 +36531,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ if (__pyx_v_edge_invalid) { - /* "blokus_gym/core/blokus_cython.pyx":661 + /* "blokus_cython.pyx":674 * break * if edge_invalid: * break # <<<<<<<<<<<<<< @@ -35947,7 +36540,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ goto __pyx_L38_break; - /* "blokus_gym/core/blokus_cython.pyx":660 + /* "blokus_cython.pyx":673 * edge_invalid = True * break * if edge_invalid: # <<<<<<<<<<<<<< @@ -35956,7 +36549,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ } - /* "blokus_gym/core/blokus_cython.pyx":654 + /* "blokus_cython.pyx":667 * # Check edge adjacency (inline for speed) * edge_invalid = False * for x, y in placed_squares: # <<<<<<<<<<<<<< @@ -35971,7 +36564,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val goto __pyx_L47_for_end; __pyx_L47_for_end:; - /* "blokus_gym/core/blokus_cython.pyx":663 + /* "blokus_cython.pyx":676 * break * * if not edge_invalid: # <<<<<<<<<<<<<< @@ -35981,16 +36574,16 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __pyx_t_14 = (!__pyx_v_edge_invalid); if (__pyx_t_14) { - /* "blokus_gym/core/blokus_cython.pyx":664 + /* "blokus_cython.pyx":677 * * if not edge_invalid: * mask[action_idx] = True # <<<<<<<<<<<<<< * * return mask */ - if (unlikely((__Pyx_SetItemInt(((PyObject *)__pyx_v_mask), __pyx_v_action_idx, Py_True, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(0, 664, __pyx_L1_error) + if (unlikely((__Pyx_SetItemInt(((PyObject *)__pyx_v_mask), __pyx_v_action_idx, Py_True, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(0, 677, __pyx_L1_error) - /* "blokus_gym/core/blokus_cython.pyx":663 + /* "blokus_cython.pyx":676 * break * * if not edge_invalid: # <<<<<<<<<<<<<< @@ -35999,7 +36592,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val */ } - /* "blokus_gym/core/blokus_cython.pyx":624 + /* "blokus_cython.pyx":637 * * for piece_id in available_piece_ids: * for action_idx in self._actions_by_piece[piece_id]: # <<<<<<<<<<<<<< @@ -36010,7 +36603,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":623 + /* "blokus_cython.pyx":636 * player_occupied = self.board.get_player_occupied(player_idx + 1) * * for piece_id in available_piece_ids: # <<<<<<<<<<<<<< @@ -36020,7 +36613,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":666 + /* "blokus_cython.pyx":679 * mask[action_idx] = True * * return mask # <<<<<<<<<<<<<< @@ -36032,7 +36625,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __pyx_r = ((PyObject *)__pyx_v_mask); goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":592 + /* "blokus_cython.pyx":605 * return True * * cpdef get_valid_actions(self, int player_idx): # <<<<<<<<<<<<<< @@ -36051,7 +36644,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val __Pyx_XDECREF(__pyx_t_18); __Pyx_XDECREF(__pyx_t_21); __Pyx_XDECREF(__pyx_t_22); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.get_valid_actions", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_valid_actions", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_player); @@ -36070,16 +36663,16 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_val } /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11get_valid_actions(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_15get_valid_actions(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_10get_valid_actions, "Get a boolean mask of valid actions for the given player."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_11get_valid_actions = {"get_valid_actions", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11get_valid_actions, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_10get_valid_actions}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11get_valid_actions(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_14get_valid_actions, "Get a boolean mask of valid actions for the given player."); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_15get_valid_actions = {"get_valid_actions", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_15get_valid_actions, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_14get_valid_actions}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_15get_valid_actions(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -36109,43 +36702,43 @@ PyObject *__pyx_args, PyObject *__pyx_kwds { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_player_idx,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; - if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 592, __pyx_L3_error) + if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 605, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 592, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 605, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_valid_actions", 0) < (0)) __PYX_ERR(0, 592, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_valid_actions", 0) < (0)) __PYX_ERR(0, 605, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { - if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_valid_actions", 1, 1, 1, i); __PYX_ERR(0, 592, __pyx_L3_error) } + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("get_valid_actions", 1, 1, 1, i); __PYX_ERR(0, 605, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 592, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 605, __pyx_L3_error) } - __pyx_v_player_idx = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_player_idx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 592, __pyx_L3_error) + __pyx_v_player_idx = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_player_idx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 605, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("get_valid_actions", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 592, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("get_valid_actions", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 605, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.get_valid_actions", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_valid_actions", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10get_valid_actions(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_player_idx); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_14get_valid_actions(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_player_idx); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -36155,7 +36748,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10get_valid_actions(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_14get_valid_actions(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -36164,7 +36757,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10get_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_valid_actions", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_valid_actions(__pyx_v_self, __pyx_v_player_idx, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 592, __pyx_L1_error) + __pyx_t_1 = __pyx_f_13blokus_cython_10BlokusGame_get_valid_actions(__pyx_v_self, __pyx_v_player_idx, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -36173,7 +36766,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10get_ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.get_valid_actions", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_valid_actions", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -36181,7 +36774,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10get_ return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":668 +/* "blokus_cython.pyx":681 * return mask * * cpdef bint has_valid_moves(self, int player_idx): # <<<<<<<<<<<<<< @@ -36189,15 +36782,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10get_ * cdef PlayerState player = self.players[player_idx] */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_13has_valid_moves(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_17has_valid_moves(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_moves(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, int __pyx_skip_dispatch) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_player = 0; +static int __pyx_f_13blokus_cython_10BlokusGame_has_valid_moves(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, int __pyx_skip_dispatch) { + struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_player = 0; PyObject *__pyx_v_available_piece_ids = 0; int __pyx_v_piece_id; int __pyx_v_action_idx; @@ -36226,7 +36819,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov /* Check if overridden in Python */ else if ( #if !CYTHON_USE_TYPE_SLOTS - unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame && + unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame && __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC)) #else unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE))) @@ -36237,13 +36830,13 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) { PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self)); #endif - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_has_valid_moves); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 668, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_has_valid_moves); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_13has_valid_moves)) { + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_13blokus_cython_10BlokusGame_17has_valid_moves)) { __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = __pyx_t_1; - __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_player_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 668, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_player_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = 1; #if CYTHON_UNPACK_METHODS @@ -36263,10 +36856,10 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } - __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 668, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 681, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_7; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -36285,7 +36878,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov #endif } - /* "blokus_gym/core/blokus_cython.pyx":670 + /* "blokus_cython.pyx":683 * cpdef bint has_valid_moves(self, int player_idx): * """Check if a player has any valid moves.""" * cdef PlayerState player = self.players[player_idx] # <<<<<<<<<<<<<< @@ -36294,27 +36887,27 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov */ if (unlikely(__pyx_v_self->players == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 670, __pyx_L1_error) + __PYX_ERR(0, 683, __pyx_L1_error) } - __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->players, __pyx_v_player_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->players, __pyx_v_player_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState))))) __PYX_ERR(0, 670, __pyx_L1_error) - __pyx_v_player = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_13blokus_cython_PlayerState))))) __PYX_ERR(0, 683, __pyx_L1_error) + __pyx_v_player = ((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":671 + /* "blokus_cython.pyx":684 * """Check if a player has any valid moves.""" * cdef PlayerState player = self.players[player_idx] * cdef list available_piece_ids = [] # <<<<<<<<<<<<<< * cdef int piece_id, action_idx * */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_available_piece_ids = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":675 + /* "blokus_cython.pyx":688 * * # Build available_piece_ids list * for name in player.available_pieces: # <<<<<<<<<<<<<< @@ -36322,7 +36915,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov * */ __pyx_t_8 = 0; - __pyx_t_2 = __Pyx_set_iterator(__pyx_v_player->available_pieces, 1, (&__pyx_t_9), (&__pyx_t_10)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 675, __pyx_L1_error) + __pyx_t_2 = __Pyx_set_iterator(__pyx_v_player->available_pieces, 1, (&__pyx_t_9), (&__pyx_t_10)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_2; @@ -36330,12 +36923,12 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov while (1) { __pyx_t_11 = __Pyx_set_iter_next(__pyx_t_1, __pyx_t_9, &__pyx_t_8, &__pyx_t_2, __pyx_t_10); if (unlikely(__pyx_t_11 == 0)) break; - if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 675, __pyx_L1_error) + if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_2); __pyx_t_2 = 0; - /* "blokus_gym/core/blokus_cython.pyx":676 + /* "blokus_cython.pyx":689 * # Build available_piece_ids list * for name in player.available_pieces: * available_piece_ids.append(self.piece_set.get_piece_id(name)) # <<<<<<<<<<<<<< @@ -36349,15 +36942,15 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_name}; __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_piece_id, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 676, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } - __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_available_piece_ids, __pyx_t_2); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 676, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_available_piece_ids, __pyx_t_2); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":678 + /* "blokus_cython.pyx":691 * available_piece_ids.append(self.piece_set.get_piece_id(name)) * * if not player.can_move: # <<<<<<<<<<<<<< @@ -36367,7 +36960,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov __pyx_t_7 = (!__pyx_v_player->can_move); if (__pyx_t_7) { - /* "blokus_gym/core/blokus_cython.pyx":679 + /* "blokus_cython.pyx":692 * * if not player.can_move: * return False # <<<<<<<<<<<<<< @@ -36377,7 +36970,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov __pyx_r = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":678 + /* "blokus_cython.pyx":691 * available_piece_ids.append(self.piece_set.get_piece_id(name)) * * if not player.can_move: # <<<<<<<<<<<<<< @@ -36386,7 +36979,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov */ } - /* "blokus_gym/core/blokus_cython.pyx":681 + /* "blokus_cython.pyx":694 * return False * * for piece_id in available_piece_ids: # <<<<<<<<<<<<<< @@ -36399,19 +36992,19 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 681, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 694, __pyx_L1_error) #endif if (__pyx_t_9 >= __pyx_temp) break; } __pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_9, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_9; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 681, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 694, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_piece_id = __pyx_t_10; - /* "blokus_gym/core/blokus_cython.pyx":682 + /* "blokus_cython.pyx":695 * * for piece_id in available_piece_ids: * for action_idx in self._actions_by_piece[piece_id]: # <<<<<<<<<<<<<< @@ -36420,18 +37013,18 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov */ if (unlikely(__pyx_v_self->_actions_by_piece == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 682, __pyx_L1_error) + __PYX_ERR(0, 695, __pyx_L1_error) } - __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_actions_by_piece, __pyx_v_piece_id, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 682, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_actions_by_piece, __pyx_v_piece_id, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0; __pyx_t_13 = NULL; } else { - __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 682, __pyx_L1_error) + __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_13 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 682, __pyx_L1_error) + __pyx_t_13 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 695, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; for (;;) { @@ -36440,7 +37033,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 682, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 695, __pyx_L1_error) #endif if (__pyx_t_8 >= __pyx_temp) break; } @@ -36450,7 +37043,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 682, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 695, __pyx_L1_error) #endif if (__pyx_t_8 >= __pyx_temp) break; } @@ -36461,24 +37054,24 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov #endif ++__pyx_t_8; } - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 682, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 695, __pyx_L1_error) } else { __pyx_t_2 = __pyx_t_13(__pyx_t_4); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { - if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 682, __pyx_L1_error) + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 695, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_2); - __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 682, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 695, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_action_idx = __pyx_t_10; - /* "blokus_gym/core/blokus_cython.pyx":683 + /* "blokus_cython.pyx":696 * for piece_id in available_piece_ids: * for action_idx in self._actions_by_piece[piece_id]: * if self.valid_move(player_idx, self._action_moves[action_idx]): # <<<<<<<<<<<<<< @@ -36487,16 +37080,16 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov */ if (unlikely(__pyx_v_self->_action_moves == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 683, __pyx_L1_error) + __PYX_ERR(0, 696, __pyx_L1_error) } - __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_action_moves, __pyx_v_action_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 683, __pyx_L1_error) + __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_action_moves, __pyx_v_action_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move))))) __PYX_ERR(0, 683, __pyx_L1_error) - __pyx_t_7 = ((struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->valid_move(__pyx_v_self, __pyx_v_player_idx, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_t_2), 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 683, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_13blokus_cython_Move))))) __PYX_ERR(0, 696, __pyx_L1_error) + __pyx_t_7 = ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->valid_move(__pyx_v_self, __pyx_v_player_idx, ((struct __pyx_obj_13blokus_cython_Move *)__pyx_t_2), 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 696, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_7) { - /* "blokus_gym/core/blokus_cython.pyx":684 + /* "blokus_cython.pyx":697 * for action_idx in self._actions_by_piece[piece_id]: * if self.valid_move(player_idx, self._action_moves[action_idx]): * return True # <<<<<<<<<<<<<< @@ -36508,7 +37101,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":683 + /* "blokus_cython.pyx":696 * for piece_id in available_piece_ids: * for action_idx in self._actions_by_piece[piece_id]: * if self.valid_move(player_idx, self._action_moves[action_idx]): # <<<<<<<<<<<<<< @@ -36517,7 +37110,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov */ } - /* "blokus_gym/core/blokus_cython.pyx":682 + /* "blokus_cython.pyx":695 * * for piece_id in available_piece_ids: * for action_idx in self._actions_by_piece[piece_id]: # <<<<<<<<<<<<<< @@ -36527,7 +37120,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":681 + /* "blokus_cython.pyx":694 * return False * * for piece_id in available_piece_ids: # <<<<<<<<<<<<<< @@ -36537,7 +37130,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":685 + /* "blokus_cython.pyx":698 * if self.valid_move(player_idx, self._action_moves[action_idx]): * return True * return False # <<<<<<<<<<<<<< @@ -36547,7 +37140,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov __pyx_r = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":668 + /* "blokus_cython.pyx":681 * return mask * * cpdef bint has_valid_moves(self, int player_idx): # <<<<<<<<<<<<<< @@ -36562,7 +37155,7 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.has_valid_moves", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.has_valid_moves", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_player); @@ -36573,16 +37166,16 @@ static int __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_mov } /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_13has_valid_moves(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_17has_valid_moves(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_12has_valid_moves, "Check if a player has any valid moves."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_13has_valid_moves = {"has_valid_moves", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_13has_valid_moves, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_12has_valid_moves}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_13has_valid_moves(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_16has_valid_moves, "Check if a player has any valid moves."); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_17has_valid_moves = {"has_valid_moves", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_17has_valid_moves, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_16has_valid_moves}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_17has_valid_moves(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -36612,43 +37205,43 @@ PyObject *__pyx_args, PyObject *__pyx_kwds { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_player_idx,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; - if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 668, __pyx_L3_error) + if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 681, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 668, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 681, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "has_valid_moves", 0) < (0)) __PYX_ERR(0, 668, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "has_valid_moves", 0) < (0)) __PYX_ERR(0, 681, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { - if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("has_valid_moves", 1, 1, 1, i); __PYX_ERR(0, 668, __pyx_L3_error) } + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("has_valid_moves", 1, 1, 1, i); __PYX_ERR(0, 681, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 668, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 681, __pyx_L3_error) } - __pyx_v_player_idx = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_player_idx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 668, __pyx_L3_error) + __pyx_v_player_idx = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_player_idx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 681, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("has_valid_moves", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 668, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("has_valid_moves", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 681, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.has_valid_moves", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.has_valid_moves", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_12has_valid_moves(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_player_idx); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_16has_valid_moves(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_player_idx); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -36658,7 +37251,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_12has_valid_moves(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_16has_valid_moves(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -36668,8 +37261,8 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_12has_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("has_valid_moves", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_moves(__pyx_v_self, __pyx_v_player_idx, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 668, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 668, __pyx_L1_error) + __pyx_t_1 = __pyx_f_13blokus_cython_10BlokusGame_has_valid_moves(__pyx_v_self, __pyx_v_player_idx, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 681, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; @@ -36678,7 +37271,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_12has_ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.has_valid_moves", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.has_valid_moves", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -36686,7 +37279,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_12has_ return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":687 +/* "blokus_cython.pyx":700 * return False * * def apply_move(self, int player_idx, Move move) -> None: # <<<<<<<<<<<<<< @@ -36695,16 +37288,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_12has_ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_15apply_move(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_19apply_move(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_14apply_move, "Apply a move to the game state. Does not validate."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_15apply_move = {"apply_move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_15apply_move, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_14apply_move}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_15apply_move(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_18apply_move, "Apply a move to the game state. Does not validate."); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_19apply_move = {"apply_move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_19apply_move, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_18apply_move}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_19apply_move(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -36712,7 +37305,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { int __pyx_v_player_idx; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move = 0; + struct __pyx_obj_13blokus_cython_Move *__pyx_v_move = 0; #if !CYTHON_METH_FASTCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif @@ -36735,51 +37328,51 @@ PyObject *__pyx_args, PyObject *__pyx_kwds { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_player_idx,&__pyx_mstate_global->__pyx_n_u_move,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; - if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 687, __pyx_L3_error) + if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 700, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 687, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 700, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 687, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 700, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "apply_move", 0) < (0)) __PYX_ERR(0, 687, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "apply_move", 0) < (0)) __PYX_ERR(0, 700, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { - if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("apply_move", 1, 2, 2, i); __PYX_ERR(0, 687, __pyx_L3_error) } + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("apply_move", 1, 2, 2, i); __PYX_ERR(0, 700, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 687, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 700, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 687, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 700, __pyx_L3_error) } - __pyx_v_player_idx = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_player_idx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 687, __pyx_L3_error) - __pyx_v_move = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)values[1]); + __pyx_v_player_idx = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_player_idx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 700, __pyx_L3_error) + __pyx_v_move = ((struct __pyx_obj_13blokus_cython_Move *)values[1]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("apply_move", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 687, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("apply_move", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 700, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.apply_move", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.apply_move", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_move), __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move, 1, "move", 0))) __PYX_ERR(0, 687, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14apply_move(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_player_idx, __pyx_v_move); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_move), __pyx_mstate_global->__pyx_ptype_13blokus_cython_Move, 1, "move", 0))) __PYX_ERR(0, 700, __pyx_L1_error) + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_18apply_move(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_player_idx, __pyx_v_move); /* function exit code */ goto __pyx_L0; @@ -36798,9 +37391,9 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14apply_move(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_player = 0; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v_piece = 0; +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_18apply_move(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, struct __pyx_obj_13blokus_cython_Move *__pyx_v_move) { + struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_player = 0; + struct __pyx_obj_13blokus_cython_Piece *__pyx_v_piece = 0; PyObject *__pyx_v_placed_squares = 0; int __pyx_v_x; int __pyx_v_y; @@ -36825,7 +37418,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl int __pyx_clineno = 0; __Pyx_RefNannySetupContext("apply_move", 0); - /* "blokus_gym/core/blokus_cython.pyx":689 + /* "blokus_cython.pyx":702 * def apply_move(self, int player_idx, Move move) -> None: * """Apply a move to the game state. Does not validate.""" * cdef PlayerState player = self.players[player_idx] # <<<<<<<<<<<<<< @@ -36834,15 +37427,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl */ if (unlikely(__pyx_v_self->players == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 689, __pyx_L1_error) + __PYX_ERR(0, 702, __pyx_L1_error) } - __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->players, __pyx_v_player_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 689, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->players, __pyx_v_player_idx, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState))))) __PYX_ERR(0, 689, __pyx_L1_error) - __pyx_v_player = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_13blokus_cython_PlayerState))))) __PYX_ERR(0, 702, __pyx_L1_error) + __pyx_v_player = ((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":690 + /* "blokus_cython.pyx":703 * """Apply a move to the game state. Does not validate.""" * cdef PlayerState player = self.players[player_idx] * cdef Piece piece = self.piece_set.get_piece(move.piece_id) # <<<<<<<<<<<<<< @@ -36851,7 +37444,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl */ __pyx_t_2 = ((PyObject *)__pyx_v_self->piece_set); __Pyx_INCREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_move->piece_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 690, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_move->piece_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = 0; { @@ -36859,26 +37452,26 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_piece, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 690, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece))))) __PYX_ERR(0, 690, __pyx_L1_error) - __pyx_v_piece = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece))))) __PYX_ERR(0, 703, __pyx_L1_error) + __pyx_v_piece = ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":691 + /* "blokus_cython.pyx":704 * cdef PlayerState player = self.players[player_idx] * cdef Piece piece = self.piece_set.get_piece(move.piece_id) * cdef list placed_squares = self._get_placed_squares(move) # <<<<<<<<<<<<<< * cdef int x, y * */ - __pyx_t_1 = ((struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_get_placed_squares(__pyx_v_self, __pyx_v_move); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 691, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_get_placed_squares(__pyx_v_self, __pyx_v_move); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_placed_squares = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":695 + /* "blokus_cython.pyx":708 * * # Place the piece * self.board.place(player_idx + 1, placed_squares) # <<<<<<<<<<<<<< @@ -36887,7 +37480,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl */ __pyx_t_3 = __pyx_v_self->board; __Pyx_INCREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyLong_From_long((__pyx_v_player_idx + 1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 695, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyLong_From_long((__pyx_v_player_idx + 1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = 0; { @@ -36895,12 +37488,12 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_place, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 695, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":698 + /* "blokus_cython.pyx":711 * * # Update player state * player.available_pieces.discard(piece.name) # <<<<<<<<<<<<<< @@ -36909,33 +37502,33 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl */ if (unlikely(__pyx_v_player->available_pieces == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "discard"); - __PYX_ERR(0, 698, __pyx_L1_error) + __PYX_ERR(0, 711, __pyx_L1_error) } __pyx_t_1 = __pyx_v_piece->name; __Pyx_INCREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PySet_Discard(__pyx_v_player->available_pieces, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 698, __pyx_L1_error) + __pyx_t_5 = __Pyx_PySet_Discard(__pyx_v_player->available_pieces, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":699 + /* "blokus_cython.pyx":712 * # Update player state * player.available_pieces.discard(piece.name) * player.score += piece.size # <<<<<<<<<<<<<< * * # Update corners */ - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_player->score); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 699, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_player->score); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_piece), __pyx_mstate_global->__pyx_n_u_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 699, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_piece), __pyx_mstate_global->__pyx_n_u_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 699, __pyx_L1_error) + __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_6 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 699, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyLong_As_int(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 712, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_player->score = __pyx_t_6; - /* "blokus_gym/core/blokus_cython.pyx":702 + /* "blokus_cython.pyx":715 * * # Update corners * if not player.has_started: # <<<<<<<<<<<<<< @@ -36945,7 +37538,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl __pyx_t_7 = (!__pyx_v_player->has_started); if (__pyx_t_7) { - /* "blokus_gym/core/blokus_cython.pyx":703 + /* "blokus_cython.pyx":716 * # Update corners * if not player.has_started: * player.has_started = True # <<<<<<<<<<<<<< @@ -36954,14 +37547,14 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl */ __pyx_v_player->has_started = 1; - /* "blokus_gym/core/blokus_cython.pyx":704 + /* "blokus_cython.pyx":717 * if not player.has_started: * player.has_started = True * player.corners = set() # <<<<<<<<<<<<<< * * # Add new corners */ - __pyx_t_3 = PySet_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 704, __pyx_L1_error) + __pyx_t_3 = PySet_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 717, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_player->corners); @@ -36969,7 +37562,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl __pyx_v_player->corners = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":702 + /* "blokus_cython.pyx":715 * * # Update corners * if not player.has_started: # <<<<<<<<<<<<<< @@ -36978,19 +37571,19 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl */ } - /* "blokus_gym/core/blokus_cython.pyx":707 + /* "blokus_cython.pyx":720 * * # Add new corners * cdef list placed_corners = self._get_placed_corners(move) # <<<<<<<<<<<<<< * for x, y in placed_corners: * if self.board.in_bounds(x, y) and self.board.is_empty(x, y): */ - __pyx_t_3 = ((struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_get_placed_corners(__pyx_v_self, __pyx_v_move); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 707, __pyx_L1_error) + __pyx_t_3 = ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->_get_placed_corners(__pyx_v_self, __pyx_v_move); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 720, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_placed_corners = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":708 + /* "blokus_cython.pyx":721 * # Add new corners * cdef list placed_corners = self._get_placed_corners(move) * for x, y in placed_corners: # <<<<<<<<<<<<<< @@ -36999,7 +37592,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl */ if (unlikely(__pyx_v_placed_corners == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 708, __pyx_L1_error) + __PYX_ERR(0, 721, __pyx_L1_error) } __pyx_t_3 = __pyx_v_placed_corners; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0; @@ -37007,13 +37600,13 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 708, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 721, __pyx_L1_error) #endif if (__pyx_t_8 >= __pyx_temp) break; } __pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_8; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 708, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; @@ -37021,7 +37614,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 708, __pyx_L1_error) + __PYX_ERR(0, 721, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -37031,22 +37624,22 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl __Pyx_INCREF(__pyx_t_9); } else { __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 708, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 721, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 708, __pyx_L1_error) + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 721, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_9); } #else - __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 708, __pyx_L1_error) + __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_9 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 708, __pyx_L1_error) + __pyx_t_9 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; - __pyx_t_10 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 708, __pyx_L1_error) + __pyx_t_10 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_10); @@ -37054,7 +37647,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < (0)) __PYX_ERR(0, 708, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < (0)) __PYX_ERR(0, 721, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L7_unpacking_done; @@ -37062,17 +37655,17 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 708, __pyx_L1_error) + __PYX_ERR(0, 721, __pyx_L1_error) __pyx_L7_unpacking_done:; } - __pyx_t_6 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 708, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 721, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_12 = __Pyx_PyLong_As_int(__pyx_t_9); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 708, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyLong_As_int(__pyx_t_9); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 721, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_x = __pyx_t_6; __pyx_v_y = __pyx_t_12; - /* "blokus_gym/core/blokus_cython.pyx":709 + /* "blokus_cython.pyx":722 * cdef list placed_corners = self._get_placed_corners(move) * for x, y in placed_corners: * if self.board.in_bounds(x, y) and self.board.is_empty(x, y): # <<<<<<<<<<<<<< @@ -37081,9 +37674,9 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl */ __pyx_t_9 = __pyx_v_self->board; __Pyx_INCREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 709, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_10 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 709, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_4 = 0; { @@ -37092,10 +37685,10 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 709, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } - __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 709, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 722, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_13) { } else { @@ -37104,9 +37697,9 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl } __pyx_t_10 = __pyx_v_self->board; __Pyx_INCREF(__pyx_t_10); - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 709, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 709, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_4 = 0; { @@ -37115,16 +37708,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 709, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } - __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 709, __pyx_L1_error) + __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(0, 722, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __pyx_t_13; __pyx_L9_bool_binop_done:; if (__pyx_t_7) { - /* "blokus_gym/core/blokus_cython.pyx":710 + /* "blokus_cython.pyx":723 * for x, y in placed_corners: * if self.board.in_bounds(x, y) and self.board.is_empty(x, y): * player.corners.add((x, y)) # <<<<<<<<<<<<<< @@ -37133,24 +37726,24 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl */ if (unlikely(__pyx_v_player->corners == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add"); - __PYX_ERR(0, 710, __pyx_L1_error) + __PYX_ERR(0, 723, __pyx_L1_error) } - __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 710, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_x); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 710, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_y); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 710, __pyx_L1_error) + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2) != (0)) __PYX_ERR(0, 710, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2) != (0)) __PYX_ERR(0, 723, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_9); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_9) != (0)) __PYX_ERR(0, 710, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_9) != (0)) __PYX_ERR(0, 723, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_9 = 0; - __pyx_t_5 = PySet_Add(__pyx_v_player->corners, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 710, __pyx_L1_error) + __pyx_t_5 = PySet_Add(__pyx_v_player->corners, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 723, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":709 + /* "blokus_cython.pyx":722 * cdef list placed_corners = self._get_placed_corners(move) * for x, y in placed_corners: * if self.board.in_bounds(x, y) and self.board.is_empty(x, y): # <<<<<<<<<<<<<< @@ -37159,7 +37752,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl */ } - /* "blokus_gym/core/blokus_cython.pyx":708 + /* "blokus_cython.pyx":721 * # Add new corners * cdef list placed_corners = self._get_placed_corners(move) * for x, y in placed_corners: # <<<<<<<<<<<<<< @@ -37169,7 +37762,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":713 + /* "blokus_cython.pyx":726 * * # Check game over * self._check_game_over() # <<<<<<<<<<<<<< @@ -37183,12 +37776,12 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_check_game_over, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 713, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":687 + /* "blokus_cython.pyx":700 * return False * * def apply_move(self, int player_idx, Move move) -> None: # <<<<<<<<<<<<<< @@ -37205,7 +37798,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.apply_move", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.apply_move", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_player); @@ -37217,7 +37810,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":715 +/* "blokus_cython.pyx":728 * self._check_game_over() * * def play_move(self, int player_idx, int action) -> bint: # <<<<<<<<<<<<<< @@ -37226,16 +37819,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14appl */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17play_move(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_21play_move(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play_move, "Play an action for the given player. Validates first."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_17play_move = {"play_move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17play_move, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play_move}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17play_move(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_20play_move, "Play an action for the given player. Validates first."); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_21play_move = {"play_move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_21play_move, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_20play_move}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_21play_move(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -37266,50 +37859,50 @@ PyObject *__pyx_args, PyObject *__pyx_kwds { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_player_idx,&__pyx_mstate_global->__pyx_n_u_action,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; - if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 715, __pyx_L3_error) + if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(0, 728, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 715, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 728, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 715, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 728, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "play_move", 0) < (0)) __PYX_ERR(0, 715, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "play_move", 0) < (0)) __PYX_ERR(0, 728, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { - if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("play_move", 1, 2, 2, i); __PYX_ERR(0, 715, __pyx_L3_error) } + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("play_move", 1, 2, 2, i); __PYX_ERR(0, 728, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 715, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 728, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 715, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 728, __pyx_L3_error) } - __pyx_v_player_idx = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_player_idx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 715, __pyx_L3_error) - __pyx_v_action = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_action == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 715, __pyx_L3_error) + __pyx_v_player_idx = __Pyx_PyLong_As_int(values[0]); if (unlikely((__pyx_v_player_idx == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 728, __pyx_L3_error) + __pyx_v_action = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_action == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 728, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("play_move", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 715, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("play_move", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 728, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.play_move", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.play_move", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play_move(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_player_idx, __pyx_v_action); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_20play_move(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v_player_idx, __pyx_v_action); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -37319,8 +37912,8 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play_move(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, int __pyx_v_action) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v_move = 0; +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_20play_move(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, int __pyx_v_player_idx, int __pyx_v_action) { + struct __pyx_obj_13blokus_cython_Move *__pyx_v_move = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -37334,7 +37927,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play int __pyx_clineno = 0; __Pyx_RefNannySetupContext("play_move", 0); - /* "blokus_gym/core/blokus_cython.pyx":717 + /* "blokus_cython.pyx":730 * def play_move(self, int player_idx, int action) -> bint: * """Play an action for the given player. Validates first.""" * cdef Move move = self._action_moves[action] # <<<<<<<<<<<<<< @@ -37343,26 +37936,26 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play */ if (unlikely(__pyx_v_self->_action_moves == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 717, __pyx_L1_error) + __PYX_ERR(0, 730, __pyx_L1_error) } - __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->_action_moves, __pyx_v_action, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 717, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_self->_action_moves, __pyx_v_action, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move))))) __PYX_ERR(0, 717, __pyx_L1_error) - __pyx_v_move = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_t_1); + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_13blokus_cython_Move))))) __PYX_ERR(0, 730, __pyx_L1_error) + __pyx_v_move = ((struct __pyx_obj_13blokus_cython_Move *)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":719 + /* "blokus_cython.pyx":732 * cdef Move move = self._action_moves[action] * * if not self.valid_move(player_idx, move): # <<<<<<<<<<<<<< * return False * */ - __pyx_t_2 = ((struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->valid_move(__pyx_v_self, __pyx_v_player_idx, __pyx_v_move, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 719, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->valid_move(__pyx_v_self, __pyx_v_player_idx, __pyx_v_move, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 732, __pyx_L1_error) __pyx_t_3 = (!__pyx_t_2); if (__pyx_t_3) { - /* "blokus_gym/core/blokus_cython.pyx":720 + /* "blokus_cython.pyx":733 * * if not self.valid_move(player_idx, move): * return False # <<<<<<<<<<<<<< @@ -37374,7 +37967,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play __pyx_r = Py_False; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":719 + /* "blokus_cython.pyx":732 * cdef Move move = self._action_moves[action] * * if not self.valid_move(player_idx, move): # <<<<<<<<<<<<<< @@ -37383,7 +37976,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play */ } - /* "blokus_gym/core/blokus_cython.pyx":722 + /* "blokus_cython.pyx":735 * return False * * self.apply_move(player_idx, move) # <<<<<<<<<<<<<< @@ -37392,7 +37985,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play */ __pyx_t_4 = ((PyObject *)__pyx_v_self); __Pyx_INCREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_player_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 722, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_player_idx); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = 0; { @@ -37400,12 +37993,12 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_apply_move, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 722, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":723 + /* "blokus_cython.pyx":736 * * self.apply_move(player_idx, move) * return True # <<<<<<<<<<<<<< @@ -37417,7 +38010,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play __pyx_r = Py_True; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":715 + /* "blokus_cython.pyx":728 * self._check_game_over() * * def play_move(self, int player_idx, int action) -> bint: # <<<<<<<<<<<<<< @@ -37430,7 +38023,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.play_move", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.play_move", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_move); @@ -37439,7 +38032,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":725 +/* "blokus_cython.pyx":738 * return True * * def next_player(self): # <<<<<<<<<<<<<< @@ -37448,16 +38041,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_19next_player(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_23next_player(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next_player, "Advance to the next player who can still move.\n \n If no players can move, the game is over.\n "); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_19next_player = {"next_player", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_19next_player, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next_player}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_19next_player(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_22next_player, "Advance to the next player who can still move.\n \n If no players can move, the game is over.\n "); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_23next_player = {"next_player", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_23next_player, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_22next_player}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_23next_player(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -37483,14 +38076,14 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("next_player", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next_player(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_22next_player(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next_player(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_22next_player(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_v_offset = NULL; PyObject *__pyx_v_next_idx = NULL; PyObject *__pyx_v_next_player = NULL; @@ -37510,7 +38103,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next int __pyx_clineno = 0; __Pyx_RefNannySetupContext("next_player", 0); - /* "blokus_gym/core/blokus_cython.pyx":730 + /* "blokus_cython.pyx":743 * If no players can move, the game is over. * """ * if self.game_over: # <<<<<<<<<<<<<< @@ -37519,7 +38112,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next */ if (__pyx_v_self->game_over) { - /* "blokus_gym/core/blokus_cython.pyx":731 + /* "blokus_cython.pyx":744 * """ * if self.game_over: * return self.current_player # <<<<<<<<<<<<<< @@ -37527,13 +38120,13 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next * for offset in range(1, self.num_players + 1): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->current_player); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 731, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->current_player); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 744, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":730 + /* "blokus_cython.pyx":743 * If no players can move, the game is over. * """ * if self.game_over: # <<<<<<<<<<<<<< @@ -37542,7 +38135,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next */ } - /* "blokus_gym/core/blokus_cython.pyx":733 + /* "blokus_cython.pyx":746 * return self.current_player * * for offset in range(1, self.num_players + 1): # <<<<<<<<<<<<<< @@ -37550,7 +38143,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next * next_player = self.players[next_idx] */ __pyx_t_2 = NULL; - __pyx_t_3 = __Pyx_PyLong_From_long((__pyx_v_self->num_players + 1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 733, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_long((__pyx_v_self->num_players + 1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = 1; { @@ -37558,12 +38151,12 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(&PyRange_Type), __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 733, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } - __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 733, __pyx_L1_error) + __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 746, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 733, __pyx_L1_error) + __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 746, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { { @@ -37571,7 +38164,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { - if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 733, __pyx_L1_error) + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 746, __pyx_L1_error) PyErr_Clear(); } break; @@ -37581,28 +38174,28 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next __Pyx_XDECREF_SET(__pyx_v_offset, __pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":734 + /* "blokus_cython.pyx":747 * * for offset in range(1, self.num_players + 1): * next_idx = (self.current_player + offset) % self.num_players # <<<<<<<<<<<<<< * next_player = self.players[next_idx] * if next_player.can_move and self.has_valid_moves(next_idx): */ - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->current_player); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 734, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->current_player); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_offset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 734, __pyx_L1_error) + __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_offset); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->num_players); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 734, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->num_players); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = PyNumber_Remainder(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 734, __pyx_L1_error) + __pyx_t_6 = PyNumber_Remainder(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_next_idx, __pyx_t_6); __pyx_t_6 = 0; - /* "blokus_gym/core/blokus_cython.pyx":735 + /* "blokus_cython.pyx":748 * for offset in range(1, self.num_players + 1): * next_idx = (self.current_player + offset) % self.num_players * next_player = self.players[next_idx] # <<<<<<<<<<<<<< @@ -37611,46 +38204,46 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next */ if (unlikely(__pyx_v_self->players == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 735, __pyx_L1_error) + __PYX_ERR(0, 748, __pyx_L1_error) } - __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_self->players, __pyx_v_next_idx); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 735, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_self->players, __pyx_v_next_idx); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 748, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_next_player, __pyx_t_6); __pyx_t_6 = 0; - /* "blokus_gym/core/blokus_cython.pyx":736 + /* "blokus_cython.pyx":749 * next_idx = (self.current_player + offset) % self.num_players * next_player = self.players[next_idx] * if next_player.can_move and self.has_valid_moves(next_idx): # <<<<<<<<<<<<<< * self.current_player = next_idx * return next_idx */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_next_player, __pyx_mstate_global->__pyx_n_u_can_move); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 736, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_next_player, __pyx_mstate_global->__pyx_n_u_can_move); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 736, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 749, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_8) { } else { __pyx_t_7 = __pyx_t_8; goto __pyx_L7_bool_binop_done; } - __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_v_next_idx); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 736, __pyx_L1_error) - __pyx_t_8 = ((struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->has_valid_moves(__pyx_v_self, __pyx_t_9, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 736, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_v_next_idx); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 749, __pyx_L1_error) + __pyx_t_8 = ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->has_valid_moves(__pyx_v_self, __pyx_t_9, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 749, __pyx_L1_error) __pyx_t_7 = __pyx_t_8; __pyx_L7_bool_binop_done:; if (__pyx_t_7) { - /* "blokus_gym/core/blokus_cython.pyx":737 + /* "blokus_cython.pyx":750 * next_player = self.players[next_idx] * if next_player.can_move and self.has_valid_moves(next_idx): * self.current_player = next_idx # <<<<<<<<<<<<<< * return next_idx * */ - __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_v_next_idx); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 737, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyLong_As_int(__pyx_v_next_idx); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 750, __pyx_L1_error) __pyx_v_self->current_player = __pyx_t_9; - /* "blokus_gym/core/blokus_cython.pyx":738 + /* "blokus_cython.pyx":751 * if next_player.can_move and self.has_valid_moves(next_idx): * self.current_player = next_idx * return next_idx # <<<<<<<<<<<<<< @@ -37663,7 +38256,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":736 + /* "blokus_cython.pyx":749 * next_idx = (self.current_player + offset) % self.num_players * next_player = self.players[next_idx] * if next_player.can_move and self.has_valid_moves(next_idx): # <<<<<<<<<<<<<< @@ -37672,7 +38265,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next */ } - /* "blokus_gym/core/blokus_cython.pyx":733 + /* "blokus_cython.pyx":746 * return self.current_player * * for offset in range(1, self.num_players + 1): # <<<<<<<<<<<<<< @@ -37682,7 +38275,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":741 + /* "blokus_cython.pyx":754 * * # No one can move game over * self.game_over = True # <<<<<<<<<<<<<< @@ -37691,7 +38284,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next */ __pyx_v_self->game_over = 1; - /* "blokus_gym/core/blokus_cython.pyx":742 + /* "blokus_cython.pyx":755 * # No one can move game over * self.game_over = True * return self.current_player # <<<<<<<<<<<<<< @@ -37699,13 +38292,13 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next * def _check_game_over(self) -> None: */ __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_self->current_player); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 742, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_self->current_player); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":725 + /* "blokus_cython.pyx":738 * return True * * def next_player(self): # <<<<<<<<<<<<<< @@ -37719,7 +38312,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_6); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.next_player", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.next_player", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_offset); @@ -37730,7 +38323,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":744 +/* "blokus_cython.pyx":757 * return self.current_player * * def _check_game_over(self) -> None: # <<<<<<<<<<<<<< @@ -37739,16 +38332,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_21_check_game_over(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_25_check_game_over(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_check_game_over, "Check if the game is over."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_21_check_game_over = {"_check_game_over", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_21_check_game_over, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_check_game_over}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_21_check_game_over(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_24_check_game_over, "Check if the game is over."); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_25_check_game_over = {"_check_game_over", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_25_check_game_over, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_24_check_game_over}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_25_check_game_over(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -37774,15 +38367,15 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("_check_game_over", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_check_game_over(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_24_check_game_over(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_2generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ +static PyObject *__pyx_gb_13blokus_cython_10BlokusGame_16_check_game_over_2generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ -/* "blokus_gym/core/blokus_cython.pyx":754 +/* "blokus_cython.pyx":767 * * # Game ends if all players can't move * if all(not p.can_move for p in self.players): # <<<<<<<<<<<<<< @@ -37790,19 +38383,19 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che * elif all(p.has_started and not p.available_pieces for p in self.players): */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr *__pyx_cur_scope; +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_16_check_game_over_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { + struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("genexpr", 0); - __pyx_cur_scope = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL); + __pyx_cur_scope = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr *)__pyx_tp_new_13blokus_cython___pyx_scope_struct_5_genexpr(__pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr *)Py_None); + __pyx_cur_scope = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr *)Py_None); __Pyx_INCREF(Py_None); - __PYX_ERR(0, 754, __pyx_L1_error) + __PYX_ERR(0, 767, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } @@ -37810,7 +38403,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0); { - __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_2generator5, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_check_game_over_locals_genexpr, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython); if (unlikely(!gen)) __PYX_ERR(0, 754, __pyx_L1_error) + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_13blokus_cython_10BlokusGame_16_check_game_over_2generator5, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_check_game_over_locals_genexpr, __pyx_mstate_global->__pyx_n_u_blokus_cython); if (unlikely(!gen)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; @@ -37818,7 +38411,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che /* function exit code */ __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame._check_game_over.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame._check_game_over.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); @@ -37826,9 +38419,9 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che return __pyx_r; } -static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_2generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +static PyObject *__pyx_gb_13blokus_cython_10BlokusGame_16_check_game_over_2generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr *__pyx_cur_scope = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr *)__pyx_generator->closure); + struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr *__pyx_cur_scope = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; @@ -37847,11 +38440,11 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che return NULL; } __pyx_L3_first_run:; - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 754, __pyx_L1_error) - if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 754, __pyx_L1_error) } + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 767, __pyx_L1_error) + if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 767, __pyx_L1_error) } if (unlikely(__pyx_cur_scope->__pyx_genexpr_arg_0 == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 754, __pyx_L1_error) + __PYX_ERR(0, 767, __pyx_L1_error) } __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; @@ -37859,21 +38452,21 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 754, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 767, __pyx_L1_error) #endif if (__pyx_t_2 >= __pyx_temp) break; } __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_2; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 754, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_p); __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_p, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_p, __pyx_mstate_global->__pyx_n_u_can_move); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 754, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_p, __pyx_mstate_global->__pyx_n_u_can_move); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 754, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = (!(!__pyx_t_4)); if (__pyx_t_5) { @@ -37912,9 +38505,9 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_5generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ +static PyObject *__pyx_gb_13blokus_cython_10BlokusGame_16_check_game_over_5generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ -/* "blokus_gym/core/blokus_cython.pyx":756 +/* "blokus_cython.pyx":769 * if all(not p.can_move for p in self.players): * self.game_over = True * elif all(p.has_started and not p.available_pieces for p in self.players): # <<<<<<<<<<<<<< @@ -37922,19 +38515,19 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che * self.game_over = True */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr *__pyx_cur_scope; +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_16_check_game_over_3genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) { + struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("genexpr", 0); - __pyx_cur_scope = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL); + __pyx_cur_scope = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr *)__pyx_tp_new_13blokus_cython___pyx_scope_struct_6_genexpr(__pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr *)Py_None); + __pyx_cur_scope = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr *)Py_None); __Pyx_INCREF(Py_None); - __PYX_ERR(0, 756, __pyx_L1_error) + __PYX_ERR(0, 769, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } @@ -37942,7 +38535,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0); { - __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_5generator6, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[6]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_check_game_over_locals_genexpr, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython); if (unlikely(!gen)) __PYX_ERR(0, 756, __pyx_L1_error) + __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_13blokus_cython_10BlokusGame_16_check_game_over_5generator6, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[6]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_check_game_over_locals_genexpr, __pyx_mstate_global->__pyx_n_u_blokus_cython); if (unlikely(!gen)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; @@ -37950,7 +38543,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che /* function exit code */ __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame._check_game_over.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame._check_game_over.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); @@ -37958,9 +38551,9 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che return __pyx_r; } -static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_5generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ +static PyObject *__pyx_gb_13blokus_cython_10BlokusGame_16_check_game_over_5generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr *__pyx_cur_scope = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr *)__pyx_generator->closure); + struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr *__pyx_cur_scope = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; @@ -37980,11 +38573,11 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che return NULL; } __pyx_L3_first_run:; - if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 756, __pyx_L1_error) - if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 756, __pyx_L1_error) } + if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 769, __pyx_L1_error) + if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 769, __pyx_L1_error) } if (unlikely(__pyx_cur_scope->__pyx_genexpr_arg_0 == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 756, __pyx_L1_error) + __PYX_ERR(0, 769, __pyx_L1_error) } __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; @@ -37992,30 +38585,30 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 756, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 769, __pyx_L1_error) #endif if (__pyx_t_2 >= __pyx_temp) break; } __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_2; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_p); __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_p, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_p, __pyx_mstate_global->__pyx_n_u_has_started); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_p, __pyx_mstate_global->__pyx_n_u_has_started); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 756, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_5) { } else { __pyx_t_4 = __pyx_t_5; goto __pyx_L7_bool_binop_done; } - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_p, __pyx_mstate_global->__pyx_n_u_available_pieces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_p, __pyx_mstate_global->__pyx_n_u_available_pieces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 756, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = (!__pyx_t_5); __pyx_t_4 = __pyx_t_6; @@ -38058,7 +38651,7 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":744 +/* "blokus_cython.pyx":757 * return self.current_player * * def _check_game_over(self) -> None: # <<<<<<<<<<<<<< @@ -38066,11 +38659,11 @@ static PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_che * cdef PlayerState player */ -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_check_game_over(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v_player = 0; +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_24_check_game_over(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { + struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_player = 0; int __pyx_v_player_idx; - PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_2generator5 = 0; - PyObject *__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_5generator6 = 0; + PyObject *__pyx_gb_13blokus_cython_10BlokusGame_16_check_game_over_2generator5 = 0; + PyObject *__pyx_gb_13blokus_cython_10BlokusGame_16_check_game_over_5generator6 = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; @@ -38084,7 +38677,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_che int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_check_game_over", 0); - /* "blokus_gym/core/blokus_cython.pyx":749 + /* "blokus_cython.pyx":762 * cdef int player_idx * * for player_idx, player in enumerate(self.players): # <<<<<<<<<<<<<< @@ -38098,32 +38691,32 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_che { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 749, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 762, __pyx_L1_error) #endif if (__pyx_t_3 >= __pyx_temp) break; } __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_2, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_3; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 749, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState))))) __PYX_ERR(0, 749, __pyx_L1_error) - __Pyx_XDECREF_SET(__pyx_v_player, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_t_4)); + if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_mstate_global->__pyx_ptype_13blokus_cython_PlayerState))))) __PYX_ERR(0, 762, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_player, ((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_t_4)); __pyx_t_4 = 0; __pyx_v_player_idx = __pyx_t_1; __pyx_t_1 = (__pyx_t_1 + 1); - /* "blokus_gym/core/blokus_cython.pyx":750 + /* "blokus_cython.pyx":763 * * for player_idx, player in enumerate(self.players): * if not self.has_valid_moves(player_idx): # <<<<<<<<<<<<<< * player.can_move = False * */ - __pyx_t_5 = ((struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->has_valid_moves(__pyx_v_self, __pyx_v_player_idx, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 750, __pyx_L1_error) + __pyx_t_5 = ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->has_valid_moves(__pyx_v_self, __pyx_v_player_idx, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 763, __pyx_L1_error) __pyx_t_6 = (!__pyx_t_5); if (__pyx_t_6) { - /* "blokus_gym/core/blokus_cython.pyx":751 + /* "blokus_cython.pyx":764 * for player_idx, player in enumerate(self.players): * if not self.has_valid_moves(player_idx): * player.can_move = False # <<<<<<<<<<<<<< @@ -38132,7 +38725,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_che */ __pyx_v_player->can_move = 0; - /* "blokus_gym/core/blokus_cython.pyx":750 + /* "blokus_cython.pyx":763 * * for player_idx, player in enumerate(self.players): * if not self.has_valid_moves(player_idx): # <<<<<<<<<<<<<< @@ -38141,7 +38734,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_che */ } - /* "blokus_gym/core/blokus_cython.pyx":749 + /* "blokus_cython.pyx":762 * cdef int player_idx * * for player_idx, player in enumerate(self.players): # <<<<<<<<<<<<<< @@ -38151,23 +38744,23 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_che } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "blokus_gym/core/blokus_cython.pyx":754 + /* "blokus_cython.pyx":767 * * # Game ends if all players can't move * if all(not p.can_move for p in self.players): # <<<<<<<<<<<<<< * self.game_over = True * elif all(p.has_started and not p.available_pieces for p in self.players): */ - __pyx_t_2 = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_genexpr(NULL, __pyx_v_self->players); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 754, __pyx_L1_error) + __pyx_t_2 = __pyx_pf_13blokus_cython_10BlokusGame_16_check_game_over_genexpr(NULL, __pyx_v_self->players); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_Generator_GetInlinedResult(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 754, __pyx_L1_error) + __pyx_t_4 = __Pyx_Generator_GetInlinedResult(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 754, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_6) { - /* "blokus_gym/core/blokus_cython.pyx":755 + /* "blokus_cython.pyx":768 * # Game ends if all players can't move * if all(not p.can_move for p in self.players): * self.game_over = True # <<<<<<<<<<<<<< @@ -38176,7 +38769,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_che */ __pyx_v_self->game_over = 1; - /* "blokus_gym/core/blokus_cython.pyx":754 + /* "blokus_cython.pyx":767 * * # Game ends if all players can't move * if all(not p.can_move for p in self.players): # <<<<<<<<<<<<<< @@ -38186,32 +38779,32 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_che goto __pyx_L7; } - /* "blokus_gym/core/blokus_cython.pyx":756 + /* "blokus_cython.pyx":769 * if all(not p.can_move for p in self.players): * self.game_over = True * elif all(p.has_started and not p.available_pieces for p in self.players): # <<<<<<<<<<<<<< * # All pieces played * self.game_over = True */ - __pyx_t_4 = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_3genexpr(NULL, __pyx_v_self->players); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 756, __pyx_L1_error) + __pyx_t_4 = __pyx_pf_13blokus_cython_10BlokusGame_16_check_game_over_3genexpr(NULL, __pyx_v_self->players); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_2 = __Pyx_Generator_GetInlinedResult(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 756, __pyx_L1_error) + __pyx_t_2 = __Pyx_Generator_GetInlinedResult(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 756, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 769, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_6) { - /* "blokus_gym/core/blokus_cython.pyx":758 + /* "blokus_cython.pyx":771 * elif all(p.has_started and not p.available_pieces for p in self.players): * # All pieces played * self.game_over = True # <<<<<<<<<<<<<< * - * def get_state(self) -> dict: + * def is_game_over(self) -> bool: */ __pyx_v_self->game_over = 1; - /* "blokus_gym/core/blokus_cython.pyx":756 + /* "blokus_cython.pyx":769 * if all(not p.can_move for p in self.players): * self.game_over = True * elif all(p.has_started and not p.available_pieces for p in self.players): # <<<<<<<<<<<<<< @@ -38221,7 +38814,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_che } __pyx_L7:; - /* "blokus_gym/core/blokus_cython.pyx":744 + /* "blokus_cython.pyx":757 * return self.current_player * * def _check_game_over(self) -> None: # <<<<<<<<<<<<<< @@ -38235,36 +38828,786 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_che __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_4); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame._check_game_over", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame._check_game_over", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_player); - __Pyx_XDECREF(__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_2generator5); - __Pyx_XDECREF(__pyx_gb_10blokus_gym_4core_13blokus_cython_10BlokusGame_16_check_game_over_5generator6); + __Pyx_XDECREF(__pyx_gb_13blokus_cython_10BlokusGame_16_check_game_over_2generator5); + __Pyx_XDECREF(__pyx_gb_13blokus_cython_10BlokusGame_16_check_game_over_5generator6); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":760 +/* "blokus_cython.pyx":773 * self.game_over = True * + * def is_game_over(self) -> bool: # <<<<<<<<<<<<<< + * """Check if the game is over (no player can make a move).""" + * if self.game_over: +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_27is_game_over(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_26is_game_over, "Check if the game is over (no player can make a move)."); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_27is_game_over = {"is_game_over", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_27is_game_over, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_26is_game_over}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_27is_game_over(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("is_game_over (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_game_over", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_game_over", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_26is_game_over(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_26is_game_over(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { + int __pyx_v_i; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + int __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("is_game_over", 0); + + /* "blokus_cython.pyx":775 + * def is_game_over(self) -> bool: + * """Check if the game is over (no player can make a move).""" + * if self.game_over: # <<<<<<<<<<<<<< + * return True + * # Check if any player can still move +*/ + if (__pyx_v_self->game_over) { + + /* "blokus_cython.pyx":776 + * """Check if the game is over (no player can make a move).""" + * if self.game_over: + * return True # <<<<<<<<<<<<<< + * # Check if any player can still move + * cdef int i +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + goto __pyx_L0; + + /* "blokus_cython.pyx":775 + * def is_game_over(self) -> bool: + * """Check if the game is over (no player can make a move).""" + * if self.game_over: # <<<<<<<<<<<<<< + * return True + * # Check if any player can still move +*/ + } + + /* "blokus_cython.pyx":779 + * # Check if any player can still move + * cdef int i + * for i in range(self.num_players): # <<<<<<<<<<<<<< + * if self.players[i].can_move and self.has_valid_moves(i): + * return False +*/ + __pyx_t_1 = __pyx_v_self->num_players; + __pyx_t_2 = __pyx_t_1; + for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { + __pyx_v_i = __pyx_t_3; + + /* "blokus_cython.pyx":780 + * cdef int i + * for i in range(self.num_players): + * if self.players[i].can_move and self.has_valid_moves(i): # <<<<<<<<<<<<<< + * return False + * self.game_over = True +*/ + if (unlikely(__pyx_v_self->players == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(0, 780, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_self->players, __pyx_v_i, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 780, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_can_move); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 780, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 780, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (__pyx_t_7) { + } else { + __pyx_t_4 = __pyx_t_7; + goto __pyx_L7_bool_binop_done; + } + __pyx_t_7 = ((struct __pyx_vtabstruct_13blokus_cython_BlokusGame *)__pyx_v_self->__pyx_vtab)->has_valid_moves(__pyx_v_self, __pyx_v_i, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 780, __pyx_L1_error) + __pyx_t_4 = __pyx_t_7; + __pyx_L7_bool_binop_done:; + if (__pyx_t_4) { + + /* "blokus_cython.pyx":781 + * for i in range(self.num_players): + * if self.players[i].can_move and self.has_valid_moves(i): + * return False # <<<<<<<<<<<<<< + * self.game_over = True + * return True +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "blokus_cython.pyx":780 + * cdef int i + * for i in range(self.num_players): + * if self.players[i].can_move and self.has_valid_moves(i): # <<<<<<<<<<<<<< + * return False + * self.game_over = True +*/ + } + } + + /* "blokus_cython.pyx":782 + * if self.players[i].can_move and self.has_valid_moves(i): + * return False + * self.game_over = True # <<<<<<<<<<<<<< + * return True + * +*/ + __pyx_v_self->game_over = 1; + + /* "blokus_cython.pyx":783 + * return False + * self.game_over = True + * return True # <<<<<<<<<<<<<< + * + * def get_scores(self) -> list: +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_True); + __pyx_r = Py_True; + goto __pyx_L0; + + /* "blokus_cython.pyx":773 + * self.game_over = True + * + * def is_game_over(self) -> bool: # <<<<<<<<<<<<<< + * """Check if the game is over (no player can make a move).""" + * if self.game_over: +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_AddTraceback("blokus_cython.BlokusGame.is_game_over", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "blokus_cython.pyx":785 + * return True + * + * def get_scores(self) -> list: # <<<<<<<<<<<<<< + * """Get the score for each player. + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_29get_scores(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_28get_scores, "Get the score for each player.\n \n Score = squares placed (positive) - unplaced squares (negative).\n A player who placed all pieces gets a +15 bonus.\n If the last piece was the monomino, an additional +5 bonus.\n "); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_29get_scores = {"get_scores", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_29get_scores, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_28get_scores}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_29get_scores(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_scores (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("get_scores", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("get_scores", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_28get_scores(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_28get_scores(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { + PyObject *__pyx_v_scores = 0; + struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v_player = 0; + int __pyx_v_unplaced; + int __pyx_v_score; + int __pyx_v_pid; + PyObject *__pyx_v_piece = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; + Py_ssize_t __pyx_t_5; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_t_10; + int __pyx_t_11; + int __pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_scores", 0); + + /* "blokus_cython.pyx":792 + * If the last piece was the monomino, an additional +5 bonus. + * """ + * cdef list scores = [] # <<<<<<<<<<<<<< + * cdef PlayerState player + * cdef int unplaced +*/ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 792, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_scores = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "blokus_cython.pyx":798 + * cdef int pid + * + * for player in self.players: # <<<<<<<<<<<<<< + * # Sum sizes of remaining pieces + * unplaced = 0 +*/ + if (unlikely(__pyx_v_self->players == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(0, 798, __pyx_L1_error) + } + __pyx_t_1 = __pyx_v_self->players; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 798, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_2; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 798, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_13blokus_cython_PlayerState))))) __PYX_ERR(0, 798, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_player, ((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "blokus_cython.pyx":800 + * for player in self.players: + * # Sum sizes of remaining pieces + * unplaced = 0 # <<<<<<<<<<<<<< + * for pid in range(self.piece_set.num_pieces): + * piece = self.piece_set.get_piece(pid) +*/ + __pyx_v_unplaced = 0; + + /* "blokus_cython.pyx":801 + * # Sum sizes of remaining pieces + * unplaced = 0 + * for pid in range(self.piece_set.num_pieces): # <<<<<<<<<<<<<< + * piece = self.piece_set.get_piece(pid) + * if piece.name in player.available_pieces: +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->piece_set), __pyx_mstate_global->__pyx_n_u_num_pieces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 801, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 801, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_5 = __pyx_t_4; + for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { + __pyx_v_pid = __pyx_t_6; + + /* "blokus_cython.pyx":802 + * unplaced = 0 + * for pid in range(self.piece_set.num_pieces): + * piece = self.piece_set.get_piece(pid) # <<<<<<<<<<<<<< + * if piece.name in player.available_pieces: + * unplaced += piece.size +*/ + __pyx_t_7 = ((PyObject *)__pyx_v_self->piece_set); + __Pyx_INCREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyLong_From_int(__pyx_v_pid); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 802, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_piece, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 802, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_XDECREF_SET(__pyx_v_piece, __pyx_t_3); + __pyx_t_3 = 0; + + /* "blokus_cython.pyx":803 + * for pid in range(self.piece_set.num_pieces): + * piece = self.piece_set.get_piece(pid) + * if piece.name in player.available_pieces: # <<<<<<<<<<<<<< + * unplaced += piece.size + * score = player.score - unplaced +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_piece, __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(__pyx_v_player->available_pieces == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); + __PYX_ERR(0, 803, __pyx_L1_error) + } + __pyx_t_10 = (__Pyx_PySet_ContainsTF(__pyx_t_3, __pyx_v_player->available_pieces, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 803, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_10) { + + /* "blokus_cython.pyx":804 + * piece = self.piece_set.get_piece(pid) + * if piece.name in player.available_pieces: + * unplaced += piece.size # <<<<<<<<<<<<<< + * score = player.score - unplaced + * +*/ + __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_unplaced); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 804, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_piece, __pyx_mstate_global->__pyx_n_u_size); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 804, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 804, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_11 = __Pyx_PyLong_As_int(__pyx_t_7); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 804, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_v_unplaced = __pyx_t_11; + + /* "blokus_cython.pyx":803 + * for pid in range(self.piece_set.num_pieces): + * piece = self.piece_set.get_piece(pid) + * if piece.name in player.available_pieces: # <<<<<<<<<<<<<< + * unplaced += piece.size + * score = player.score - unplaced +*/ + } + } + + /* "blokus_cython.pyx":805 + * if piece.name in player.available_pieces: + * unplaced += piece.size + * score = player.score - unplaced # <<<<<<<<<<<<<< + * + * # Bonus for placing all pieces +*/ + __pyx_v_score = (__pyx_v_player->score - __pyx_v_unplaced); + + /* "blokus_cython.pyx":808 + * + * # Bonus for placing all pieces + * if len(player.available_pieces) == 0: # <<<<<<<<<<<<<< + * score += 15 + * +*/ + __pyx_t_7 = __pyx_v_player->available_pieces; + __Pyx_INCREF(__pyx_t_7); + if (unlikely(__pyx_t_7 == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(0, 808, __pyx_L1_error) + } + __pyx_t_4 = __Pyx_PySet_GET_SIZE(__pyx_t_7); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 808, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_10 = (__pyx_t_4 == 0); + if (__pyx_t_10) { + + /* "blokus_cython.pyx":809 + * # Bonus for placing all pieces + * if len(player.available_pieces) == 0: + * score += 15 # <<<<<<<<<<<<<< + * + * scores.append(score) +*/ + __pyx_v_score = (__pyx_v_score + 15); + + /* "blokus_cython.pyx":808 + * + * # Bonus for placing all pieces + * if len(player.available_pieces) == 0: # <<<<<<<<<<<<<< + * score += 15 + * +*/ + } + + /* "blokus_cython.pyx":811 + * score += 15 + * + * scores.append(score) # <<<<<<<<<<<<<< + * return scores + * +*/ + __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_score); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 811, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_scores, __pyx_t_7); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 811, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "blokus_cython.pyx":798 + * cdef int pid + * + * for player in self.players: # <<<<<<<<<<<<<< + * # Sum sizes of remaining pieces + * unplaced = 0 +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "blokus_cython.pyx":812 + * + * scores.append(score) + * return scores # <<<<<<<<<<<<<< + * + * def get_winners(self) -> list | None: +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_scores); + __pyx_r = __pyx_v_scores; + goto __pyx_L0; + + /* "blokus_cython.pyx":785 + * return True + * + * def get_scores(self) -> list: # <<<<<<<<<<<<<< + * """Get the score for each player. + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_scores", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_scores); + __Pyx_XDECREF((PyObject *)__pyx_v_player); + __Pyx_XDECREF(__pyx_v_piece); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "blokus_cython.pyx":814 + * return scores + * + * def get_winners(self) -> list | None: # <<<<<<<<<<<<<< + * """Get the winning player(s). Returns None if game is not over.""" + * if not self.is_game_over(): +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_31get_winners(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +); /*proto*/ +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_30get_winners, "Get the winning player(s). Returns None if game is not over."); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_31get_winners = {"get_winners", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_31get_winners, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_30get_winners}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_31get_winners(PyObject *__pyx_v_self, +#if CYTHON_METH_FASTCALL +PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds +#else +PyObject *__pyx_args, PyObject *__pyx_kwds +#endif +) { + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_winners (wrapper)", 0); + #if !CYTHON_METH_FASTCALL + #if CYTHON_ASSUME_SAFE_SIZE + __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); + #else + __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; + #endif + #endif + __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); + if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("get_winners", 1, 0, 0, __pyx_nargs); return NULL; } + const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len < 0)) return NULL; + if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("get_winners", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_30get_winners(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_30get_winners(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { + PyObject *__pyx_v_scores = 0; + int __pyx_v_max_score; + Py_ssize_t __pyx_9genexpr11__pyx_v_i; + PyObject *__pyx_9genexpr11__pyx_v_s = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_t_4; + int __pyx_t_5; + int __pyx_t_6; + Py_ssize_t __pyx_t_7; + Py_ssize_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_winners", 0); + + /* "blokus_cython.pyx":816 + * def get_winners(self) -> list | None: + * """Get the winning player(s). Returns None if game is not over.""" + * if not self.is_game_over(): # <<<<<<<<<<<<<< + * return None + * +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_game_over, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 816, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_5 = (!__pyx_t_4); + if (__pyx_t_5) { + + /* "blokus_cython.pyx":817 + * """Get the winning player(s). Returns None if game is not over.""" + * if not self.is_game_over(): + * return None # <<<<<<<<<<<<<< + * + * cdef list scores = self.get_scores() +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "blokus_cython.pyx":816 + * def get_winners(self) -> list | None: + * """Get the winning player(s). Returns None if game is not over.""" + * if not self.is_game_over(): # <<<<<<<<<<<<<< + * return None + * +*/ + } + + /* "blokus_cython.pyx":819 + * return None + * + * cdef list scores = self.get_scores() # <<<<<<<<<<<<<< + * cdef int max_score = max(scores) + * return [i for i, s in enumerate(scores) if s == max_score] +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_self); + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_scores, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 819, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(0, 819, __pyx_L1_error) + __pyx_v_scores = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "blokus_cython.pyx":820 + * + * cdef list scores = self.get_scores() + * cdef int max_score = max(scores) # <<<<<<<<<<<<<< + * return [i for i, s in enumerate(scores) if s == max_score] + * +*/ + __pyx_t_2 = NULL; + __pyx_t_3 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_scores}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_max, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 820, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_t_6 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 820, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_max_score = __pyx_t_6; + + /* "blokus_cython.pyx":821 + * cdef list scores = self.get_scores() + * cdef int max_score = max(scores) + * return [i for i, s in enumerate(scores) if s == max_score] # <<<<<<<<<<<<<< + * + * def get_state(self) -> dict: +*/ + __Pyx_XDECREF(__pyx_r); + { /* enter inner scope */ + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 821, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = 0; + __pyx_t_2 = __pyx_v_scores; __Pyx_INCREF(__pyx_t_2); + __pyx_t_8 = 0; + for (;;) { + { + Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 821, __pyx_L6_error) + #endif + if (__pyx_t_8 >= __pyx_temp) break; + } + __pyx_t_9 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_2, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference); + ++__pyx_t_8; + if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 821, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_XDECREF_SET(__pyx_9genexpr11__pyx_v_s, __pyx_t_9); + __pyx_t_9 = 0; + __pyx_9genexpr11__pyx_v_i = __pyx_t_7; + __pyx_t_7 = (__pyx_t_7 + 1); + __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_max_score); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 821, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = PyObject_RichCompare(__pyx_9genexpr11__pyx_v_s, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 821, __pyx_L6_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 821, __pyx_L6_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (__pyx_t_5) { + __pyx_t_10 = PyLong_FromSsize_t(__pyx_9genexpr11__pyx_v_i); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 821, __pyx_L6_error) + __Pyx_GOTREF(__pyx_t_10); + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_10))) __PYX_ERR(0, 821, __pyx_L6_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + } + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_s); __pyx_9genexpr11__pyx_v_s = 0; + goto __pyx_L11_exit_scope; + __pyx_L6_error:; + __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_s); __pyx_9genexpr11__pyx_v_s = 0; + goto __pyx_L1_error; + __pyx_L11_exit_scope:; + } /* exit inner scope */ + __pyx_r = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "blokus_cython.pyx":814 + * return scores + * + * def get_winners(self) -> list | None: # <<<<<<<<<<<<<< + * """Get the winning player(s). Returns None if game is not over.""" + * if not self.is_game_over(): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_winners", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_scores); + __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_s); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "blokus_cython.pyx":823 + * return [i for i, s in enumerate(scores) if s == max_score] + * * def get_state(self) -> dict: # <<<<<<<<<<<<<< * """Get the current game state as a dictionary.""" * return { */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_23get_state(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_33get_state(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_22get_state, "Get the current game state as a dictionary."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_23get_state = {"get_state", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_23get_state, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_22get_state}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_23get_state(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_32get_state, "Get the current game state as a dictionary."); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_33get_state = {"get_state", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_33get_state, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_32get_state}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_33get_state(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -38290,15 +39633,15 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("get_state", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22get_state(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_32get_state(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22get_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { - PyObject *__pyx_9genexpr11__pyx_v_p = NULL; +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_32get_state(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { + PyObject *__pyx_9genexpr12__pyx_v_p = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -38313,7 +39656,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22get_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_state", 0); - /* "blokus_gym/core/blokus_cython.pyx":762 + /* "blokus_cython.pyx":825 * def get_state(self) -> dict: * """Get the current game state as a dictionary.""" * return { # <<<<<<<<<<<<<< @@ -38322,80 +39665,80 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22get_ */ __Pyx_XDECREF(__pyx_r); - /* "blokus_gym/core/blokus_cython.pyx":763 + /* "blokus_cython.pyx":826 * """Get the current game state as a dictionary.""" * return { * "board_size": self.board_size, # <<<<<<<<<<<<<< * "num_players": self.num_players, * "current_player": self.current_player, */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 763, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_self->board_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 763, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_self->board_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_board_size, __pyx_t_2) < (0)) __PYX_ERR(0, 763, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_board_size, __pyx_t_2) < (0)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "blokus_gym/core/blokus_cython.pyx":764 + /* "blokus_cython.pyx":827 * return { * "board_size": self.board_size, * "num_players": self.num_players, # <<<<<<<<<<<<<< * "current_player": self.current_player, * "rounds": self.rounds, */ - __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_self->num_players); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 764, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_self->num_players); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_num_players, __pyx_t_2) < (0)) __PYX_ERR(0, 763, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_num_players, __pyx_t_2) < (0)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "blokus_gym/core/blokus_cython.pyx":765 + /* "blokus_cython.pyx":828 * "board_size": self.board_size, * "num_players": self.num_players, * "current_player": self.current_player, # <<<<<<<<<<<<<< * "rounds": self.rounds, * "game_over": self.game_over, */ - __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_self->current_player); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 765, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_self->current_player); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_current_player, __pyx_t_2) < (0)) __PYX_ERR(0, 763, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_current_player, __pyx_t_2) < (0)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "blokus_gym/core/blokus_cython.pyx":766 + /* "blokus_cython.pyx":829 * "num_players": self.num_players, * "current_player": self.current_player, * "rounds": self.rounds, # <<<<<<<<<<<<<< * "game_over": self.game_over, * "players": [ */ - __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_self->rounds); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 766, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_self->rounds); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_rounds, __pyx_t_2) < (0)) __PYX_ERR(0, 763, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_rounds, __pyx_t_2) < (0)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "blokus_gym/core/blokus_cython.pyx":767 + /* "blokus_cython.pyx":830 * "current_player": self.current_player, * "rounds": self.rounds, * "game_over": self.game_over, # <<<<<<<<<<<<<< * "players": [ * { */ - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->game_over); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 767, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_self->game_over); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_game_over, __pyx_t_2) < (0)) __PYX_ERR(0, 763, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_game_over, __pyx_t_2) < (0)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; { /* enter inner scope */ - /* "blokus_gym/core/blokus_cython.pyx":768 + /* "blokus_cython.pyx":831 * "rounds": self.rounds, * "game_over": self.game_over, * "players": [ # <<<<<<<<<<<<<< * { * "idx": p.idx, */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 768, __pyx_L5_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 831, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_2); - /* "blokus_gym/core/blokus_cython.pyx":776 + /* "blokus_cython.pyx":839 * "can_move": p.can_move, * } * for p in self.players # <<<<<<<<<<<<<< @@ -38404,7 +39747,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22get_ */ if (unlikely(__pyx_v_self->players == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(0, 776, __pyx_L5_error) + __PYX_ERR(0, 839, __pyx_L5_error) } __pyx_t_3 = __pyx_v_self->players; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; @@ -38412,85 +39755,85 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22get_ { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 776, __pyx_L5_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 839, __pyx_L5_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_4; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 776, __pyx_L5_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 839, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_XDECREF_SET(__pyx_9genexpr11__pyx_v_p, __pyx_t_5); + __Pyx_XDECREF_SET(__pyx_9genexpr12__pyx_v_p, __pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":770 + /* "blokus_cython.pyx":833 * "players": [ * { * "idx": p.idx, # <<<<<<<<<<<<<< * "available_pieces": list(p.available_pieces), * "score": p.score, */ - __pyx_t_5 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 770, __pyx_L5_error) + __pyx_t_5 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 833, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_9genexpr11__pyx_v_p, __pyx_mstate_global->__pyx_n_u_idx); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 770, __pyx_L5_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_9genexpr12__pyx_v_p, __pyx_mstate_global->__pyx_n_u_idx); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 833, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_idx, __pyx_t_6) < (0)) __PYX_ERR(0, 770, __pyx_L5_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_idx, __pyx_t_6) < (0)) __PYX_ERR(0, 833, __pyx_L5_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "blokus_gym/core/blokus_cython.pyx":771 + /* "blokus_cython.pyx":834 * { * "idx": p.idx, * "available_pieces": list(p.available_pieces), # <<<<<<<<<<<<<< * "score": p.score, * "has_started": p.has_started, */ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_9genexpr11__pyx_v_p, __pyx_mstate_global->__pyx_n_u_available_pieces); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 771, __pyx_L5_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_9genexpr12__pyx_v_p, __pyx_mstate_global->__pyx_n_u_available_pieces); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 834, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = __Pyx_PySequence_ListKeepNew(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 771, __pyx_L5_error) + __pyx_t_7 = __Pyx_PySequence_ListKeepNew(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 834, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_available_pieces, __pyx_t_7) < (0)) __PYX_ERR(0, 770, __pyx_L5_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_available_pieces, __pyx_t_7) < (0)) __PYX_ERR(0, 833, __pyx_L5_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "blokus_gym/core/blokus_cython.pyx":772 + /* "blokus_cython.pyx":835 * "idx": p.idx, * "available_pieces": list(p.available_pieces), * "score": p.score, # <<<<<<<<<<<<<< * "has_started": p.has_started, * "can_move": p.can_move, */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_9genexpr11__pyx_v_p, __pyx_mstate_global->__pyx_n_u_score); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 772, __pyx_L5_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_9genexpr12__pyx_v_p, __pyx_mstate_global->__pyx_n_u_score); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 835, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_7); - if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_score, __pyx_t_7) < (0)) __PYX_ERR(0, 770, __pyx_L5_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_score, __pyx_t_7) < (0)) __PYX_ERR(0, 833, __pyx_L5_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "blokus_gym/core/blokus_cython.pyx":773 + /* "blokus_cython.pyx":836 * "available_pieces": list(p.available_pieces), * "score": p.score, * "has_started": p.has_started, # <<<<<<<<<<<<<< * "can_move": p.can_move, * } */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_9genexpr11__pyx_v_p, __pyx_mstate_global->__pyx_n_u_has_started); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 773, __pyx_L5_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_9genexpr12__pyx_v_p, __pyx_mstate_global->__pyx_n_u_has_started); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 836, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_7); - if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_has_started, __pyx_t_7) < (0)) __PYX_ERR(0, 770, __pyx_L5_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_has_started, __pyx_t_7) < (0)) __PYX_ERR(0, 833, __pyx_L5_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "blokus_gym/core/blokus_cython.pyx":774 + /* "blokus_cython.pyx":837 * "score": p.score, * "has_started": p.has_started, * "can_move": p.can_move, # <<<<<<<<<<<<<< * } * for p in self.players */ - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_9genexpr11__pyx_v_p, __pyx_mstate_global->__pyx_n_u_can_move); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 774, __pyx_L5_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_9genexpr12__pyx_v_p, __pyx_mstate_global->__pyx_n_u_can_move); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 837, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_7); - if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_can_move, __pyx_t_7) < (0)) __PYX_ERR(0, 770, __pyx_L5_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_can_move, __pyx_t_7) < (0)) __PYX_ERR(0, 833, __pyx_L5_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 768, __pyx_L5_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 831, __pyx_L5_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":776 + /* "blokus_cython.pyx":839 * "can_move": p.can_move, * } * for p in self.players # <<<<<<<<<<<<<< @@ -38499,21 +39842,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22get_ */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_p); __pyx_9genexpr11__pyx_v_p = 0; + __Pyx_XDECREF(__pyx_9genexpr12__pyx_v_p); __pyx_9genexpr12__pyx_v_p = 0; goto __pyx_L9_exit_scope; __pyx_L5_error:; - __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_p); __pyx_9genexpr11__pyx_v_p = 0; + __Pyx_XDECREF(__pyx_9genexpr12__pyx_v_p); __pyx_9genexpr12__pyx_v_p = 0; goto __pyx_L1_error; __pyx_L9_exit_scope:; } /* exit inner scope */ - if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_players, __pyx_t_2) < (0)) __PYX_ERR(0, 763, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_players, __pyx_t_2) < (0)) __PYX_ERR(0, 826, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":760 - * self.game_over = True + /* "blokus_cython.pyx":823 + * return [i for i, s in enumerate(scores) if s == max_score] * * def get_state(self) -> dict: # <<<<<<<<<<<<<< * """Get the current game state as a dictionary.""" @@ -38528,16 +39871,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22get_ __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.get_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.get_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; - __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_p); + __Pyx_XDECREF(__pyx_9genexpr12__pyx_v_p); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":780 +/* "blokus_cython.pyx":843 * } * * def copy(self) -> BlokusGame: # <<<<<<<<<<<<<< @@ -38546,16 +39889,16 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_22get_ */ /* Python wrapper */ -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_25copy(PyObject *__pyx_v_self, +static struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_pw_13blokus_cython_10BlokusGame_35copy(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -PyDoc_STRVAR(__pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_24copy, "Create a deep copy of the game."); -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_25copy = {"copy", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_25copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_24copy}; -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_25copy(PyObject *__pyx_v_self, +PyDoc_STRVAR(__pyx_doc_13blokus_cython_10BlokusGame_34copy, "Create a deep copy of the game."); +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_35copy = {"copy", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_35copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_34copy}; +static struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_pw_13blokus_cython_10BlokusGame_35copy(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -38566,7 +39909,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_r = 0; + struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("copy (wrapper)", 0); #if !CYTHON_METH_FASTCALL @@ -38581,18 +39924,18 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("copy", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_24copy(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_34copy(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_24copy(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_new_game = 0; +static struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_pf_13blokus_cython_10BlokusGame_34copy(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { + struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_new_game = 0; PyObject *__pyx_v_i = NULL; PyObject *__pyx_v_p = NULL; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_r = NULL; + struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; @@ -38609,7 +39952,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("copy", 0); - /* "blokus_gym/core/blokus_cython.pyx":782 + /* "blokus_cython.pyx":845 * def copy(self) -> BlokusGame: * """Create a deep copy of the game.""" * cdef BlokusGame new_game = BlokusGame( # <<<<<<<<<<<<<< @@ -38618,57 +39961,57 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ */ __pyx_t_2 = NULL; - /* "blokus_gym/core/blokus_cython.pyx":783 + /* "blokus_cython.pyx":846 * """Create a deep copy of the game.""" * cdef BlokusGame new_game = BlokusGame( * board_size=self.board_size, # <<<<<<<<<<<<<< * pieces=self.piece_set, * num_players=self.num_players, */ - __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_self->board_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 783, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_self->board_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - /* "blokus_gym/core/blokus_cython.pyx":785 + /* "blokus_cython.pyx":848 * board_size=self.board_size, * pieces=self.piece_set, * num_players=self.num_players, # <<<<<<<<<<<<<< * corner_rule=self.corner_rule * ) */ - __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_self->num_players); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 785, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_self->num_players); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - /* "blokus_gym/core/blokus_cython.pyx":786 + /* "blokus_cython.pyx":849 * pieces=self.piece_set, * num_players=self.num_players, * corner_rule=self.corner_rule # <<<<<<<<<<<<<< * ) * */ - __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_self->corner_rule); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 786, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_self->corner_rule); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = 1; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 4 : 0)] = {__pyx_t_2, NULL}; - __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 782, __pyx_L1_error) + __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 845, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_board_size, __pyx_t_3, __pyx_t_7, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 782, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_pieces, ((PyObject *)__pyx_v_self->piece_set), __pyx_t_7, __pyx_callargs+1, 1) < (0)) __PYX_ERR(0, 782, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_num_players, __pyx_t_4, __pyx_t_7, __pyx_callargs+1, 2) < (0)) __PYX_ERR(0, 782, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_corner_rule, __pyx_t_5, __pyx_t_7, __pyx_callargs+1, 3) < (0)) __PYX_ERR(0, 782, __pyx_L1_error) - __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_board_size, __pyx_t_3, __pyx_t_7, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 845, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_pieces, ((PyObject *)__pyx_v_self->piece_set), __pyx_t_7, __pyx_callargs+1, 1) < (0)) __PYX_ERR(0, 845, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_num_players, __pyx_t_4, __pyx_t_7, __pyx_callargs+1, 2) < (0)) __PYX_ERR(0, 845, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_corner_rule, __pyx_t_5, __pyx_t_7, __pyx_callargs+1, 3) < (0)) __PYX_ERR(0, 845, __pyx_L1_error) + __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 782, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 845, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } - __pyx_v_new_game = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_t_1); + __pyx_v_new_game = ((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":789 + /* "blokus_cython.pyx":852 * ) * * new_game.board = self.board.copy() # <<<<<<<<<<<<<< @@ -38682,7 +40025,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_copy, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 789, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 852, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_GIVEREF(__pyx_t_1); @@ -38691,7 +40034,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ __pyx_v_new_game->board = __pyx_t_1; __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":790 + /* "blokus_cython.pyx":853 * * new_game.board = self.board.copy() * new_game.current_player = self.current_player # <<<<<<<<<<<<<< @@ -38701,7 +40044,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ __pyx_t_8 = __pyx_v_self->current_player; __pyx_v_new_game->current_player = __pyx_t_8; - /* "blokus_gym/core/blokus_cython.pyx":791 + /* "blokus_cython.pyx":854 * new_game.board = self.board.copy() * new_game.current_player = self.current_player * new_game.rounds = self.rounds # <<<<<<<<<<<<<< @@ -38711,7 +40054,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ __pyx_t_8 = __pyx_v_self->rounds; __pyx_v_new_game->rounds = __pyx_t_8; - /* "blokus_gym/core/blokus_cython.pyx":792 + /* "blokus_cython.pyx":855 * new_game.current_player = self.current_player * new_game.rounds = self.rounds * new_game.game_over = self.game_over # <<<<<<<<<<<<<< @@ -38721,7 +40064,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ __pyx_t_9 = __pyx_v_self->game_over; __pyx_v_new_game->game_over = __pyx_t_9; - /* "blokus_gym/core/blokus_cython.pyx":794 + /* "blokus_cython.pyx":857 * new_game.game_over = self.game_over * * for i, p in enumerate(self.players): # <<<<<<<<<<<<<< @@ -38736,32 +40079,32 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_7); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 794, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 857, __pyx_L1_error) #endif if (__pyx_t_10 >= __pyx_temp) break; } __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_7, __pyx_t_10, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_10; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 794, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); - __pyx_t_5 = __Pyx_PyLong_AddObjC(__pyx_t_1, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 794, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyLong_AddObjC(__pyx_t_1, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 857, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":795 + /* "blokus_cython.pyx":858 * * for i, p in enumerate(self.players): * new_game.players[i].available_pieces = p.available_pieces.copy() # <<<<<<<<<<<<<< * new_game.players[i].corners = p.corners.copy() * new_game.players[i].score = p.score */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_mstate_global->__pyx_n_u_available_pieces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 795, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_mstate_global->__pyx_n_u_available_pieces); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); @@ -38771,27 +40114,27 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_copy, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 795, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } if (unlikely(__pyx_v_new_game->players == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 795, __pyx_L1_error) + __PYX_ERR(0, 858, __pyx_L1_error) } - __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_new_game->players, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 795, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_new_game->players, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 858, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_available_pieces, __pyx_t_5) < (0)) __PYX_ERR(0, 795, __pyx_L1_error) + if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_available_pieces, __pyx_t_5) < (0)) __PYX_ERR(0, 858, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":796 + /* "blokus_cython.pyx":859 * for i, p in enumerate(self.players): * new_game.players[i].available_pieces = p.available_pieces.copy() * new_game.players[i].corners = p.corners.copy() # <<<<<<<<<<<<<< * new_game.players[i].score = p.score * new_game.players[i].has_started = p.has_started */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_mstate_global->__pyx_n_u_corners); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 796, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_mstate_global->__pyx_n_u_corners); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); @@ -38801,77 +40144,77 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_copy, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 796, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } if (unlikely(__pyx_v_new_game->players == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 796, __pyx_L1_error) + __PYX_ERR(0, 859, __pyx_L1_error) } - __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_new_game->players, __pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 796, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_new_game->players, __pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_PyObject_SetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_corners, __pyx_t_3) < (0)) __PYX_ERR(0, 796, __pyx_L1_error) + if (__Pyx_PyObject_SetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_corners, __pyx_t_3) < (0)) __PYX_ERR(0, 859, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":797 + /* "blokus_cython.pyx":860 * new_game.players[i].available_pieces = p.available_pieces.copy() * new_game.players[i].corners = p.corners.copy() * new_game.players[i].score = p.score # <<<<<<<<<<<<<< * new_game.players[i].has_started = p.has_started * new_game.players[i].can_move = p.can_move */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_mstate_global->__pyx_n_u_score); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 797, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_mstate_global->__pyx_n_u_score); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 860, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(__pyx_v_new_game->players == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 797, __pyx_L1_error) + __PYX_ERR(0, 860, __pyx_L1_error) } - __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_new_game->players, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 797, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_new_game->players, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 860, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_score, __pyx_t_4) < (0)) __PYX_ERR(0, 797, __pyx_L1_error) + if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_score, __pyx_t_4) < (0)) __PYX_ERR(0, 860, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":798 + /* "blokus_cython.pyx":861 * new_game.players[i].corners = p.corners.copy() * new_game.players[i].score = p.score * new_game.players[i].has_started = p.has_started # <<<<<<<<<<<<<< * new_game.players[i].can_move = p.can_move * */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_mstate_global->__pyx_n_u_has_started); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 798, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_mstate_global->__pyx_n_u_has_started); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 861, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(__pyx_v_new_game->players == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 798, __pyx_L1_error) + __PYX_ERR(0, 861, __pyx_L1_error) } - __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_new_game->players, __pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 798, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_new_game->players, __pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 861, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_PyObject_SetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_has_started, __pyx_t_3) < (0)) __PYX_ERR(0, 798, __pyx_L1_error) + if (__Pyx_PyObject_SetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_has_started, __pyx_t_3) < (0)) __PYX_ERR(0, 861, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":799 + /* "blokus_cython.pyx":862 * new_game.players[i].score = p.score * new_game.players[i].has_started = p.has_started * new_game.players[i].can_move = p.can_move # <<<<<<<<<<<<<< * * return new_game */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_mstate_global->__pyx_n_u_can_move); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 799, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_mstate_global->__pyx_n_u_can_move); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 862, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(__pyx_v_new_game->players == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(0, 799, __pyx_L1_error) + __PYX_ERR(0, 862, __pyx_L1_error) } - __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_new_game->players, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 799, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_new_game->players, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 862, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_can_move, __pyx_t_4) < (0)) __PYX_ERR(0, 799, __pyx_L1_error) + if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_can_move, __pyx_t_4) < (0)) __PYX_ERR(0, 862, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "blokus_gym/core/blokus_cython.pyx":794 + /* "blokus_cython.pyx":857 * new_game.game_over = self.game_over * * for i, p in enumerate(self.players): # <<<<<<<<<<<<<< @@ -38882,7 +40225,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "blokus_gym/core/blokus_cython.pyx":801 + /* "blokus_cython.pyx":864 * new_game.players[i].can_move = p.can_move * * return new_game # <<<<<<<<<<<<<< @@ -38892,7 +40235,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ __pyx_r = __pyx_v_new_game; goto __pyx_L0; - /* "blokus_gym/core/blokus_cython.pyx":780 + /* "blokus_cython.pyx":843 * } * * def copy(self) -> BlokusGame: # <<<<<<<<<<<<<< @@ -38908,7 +40251,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.copy", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.copy", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_new_game); @@ -38919,7 +40262,7 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":399 +/* "blokus_cython.pyx":404 * """Cython-optimized Blokus game engine.""" * * cdef public int board_size # <<<<<<<<<<<<<< @@ -38928,21 +40271,21 @@ static struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_pf_ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_10board_size_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_10board_size_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_10board_size_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_10board_size_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10board_size___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_10board_size___get__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10board_size___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_10board_size___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -38951,7 +40294,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10boar int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->board_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->board_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 404, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -38960,7 +40303,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10boar /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.board_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.board_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -38969,40 +40312,40 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10boar } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_10board_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_10board_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_10BlokusGame_10board_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_10board_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10board_size_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_10board_size_2__set__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10board_size_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_10BlokusGame_10board_size_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 399, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 404, __pyx_L1_error) __pyx_v_self->board_size = __pyx_t_1; /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.board_size.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.board_size.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":400 +/* "blokus_cython.pyx":405 * * cdef public int board_size * cdef public PieceSet piece_set # <<<<<<<<<<<<<< @@ -39011,21 +40354,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_10board_size */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_9piece_set_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_9piece_set_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_9piece_set___get__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_9piece_set___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -39042,21 +40385,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_10BlokusGame_9piece_set_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_9piece_set_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_9piece_set_2__set__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_10BlokusGame_9piece_set_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -39066,11 +40409,11 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_2 __Pyx_RefNannySetupContext("__set__", 0); __pyx_t_1 = __pyx_v_value; __Pyx_INCREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet))))) __PYX_ERR(0, 400, __pyx_L1_error) + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceSet))))) __PYX_ERR(0, 405, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF((PyObject *)__pyx_v_self->piece_set); __Pyx_DECREF((PyObject *)__pyx_v_self->piece_set); - __pyx_v_self->piece_set = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_t_1); + __pyx_v_self->piece_set = ((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ @@ -39078,7 +40421,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_2 goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.piece_set.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.piece_set.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -39086,21 +40429,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_2 } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_10BlokusGame_9piece_set_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_9piece_set_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_9piece_set_4__del__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_10BlokusGame_9piece_set_4__del__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -39108,7 +40451,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_4 __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->piece_set); __Pyx_DECREF((PyObject *)__pyx_v_self->piece_set); - __pyx_v_self->piece_set = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)Py_None); + __pyx_v_self->piece_set = ((struct __pyx_obj_13blokus_cython_PieceSet *)Py_None); /* function exit code */ __pyx_r = 0; @@ -39116,7 +40459,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_4 return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":401 +/* "blokus_cython.pyx":406 * cdef public int board_size * cdef public PieceSet piece_set * cdef public int num_players # <<<<<<<<<<<<<< @@ -39125,21 +40468,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_4 */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_players_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_players_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_11num_players_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_11num_players_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_players___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_11num_players___get__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_players___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_11num_players___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -39148,7 +40491,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->num_players); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 401, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->num_players); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -39157,7 +40500,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.num_players.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.num_players.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -39166,40 +40509,40 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_players_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_players_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_10BlokusGame_11num_players_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_11num_players_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_players_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_11num_players_2__set__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_players_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_10BlokusGame_11num_players_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 401, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 406, __pyx_L1_error) __pyx_v_self->num_players = __pyx_t_1; /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.num_players.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.num_players.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":402 +/* "blokus_cython.pyx":407 * cdef public PieceSet piece_set * cdef public int num_players * cdef public bint corner_rule # <<<<<<<<<<<<<< @@ -39208,21 +40551,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_player */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corner_rule_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corner_rule_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_11corner_rule_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_11corner_rule_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corner_rule___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_11corner_rule___get__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corner_rule___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_11corner_rule___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -39231,7 +40574,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corn int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->corner_rule); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 402, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->corner_rule); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 407, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -39240,7 +40583,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corn /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.corner_rule.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.corner_rule.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -39249,40 +40592,40 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corn } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corner_rule_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corner_rule_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_10BlokusGame_11corner_rule_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_11corner_rule_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corner_rule_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_11corner_rule_2__set__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corner_rule_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_10BlokusGame_11corner_rule_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 402, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 407, __pyx_L1_error) __pyx_v_self->corner_rule = __pyx_t_1; /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.corner_rule.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.corner_rule.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":403 +/* "blokus_cython.pyx":408 * cdef public int num_players * cdef public bint corner_rule * cdef public object board # <<<<<<<<<<<<<< @@ -39291,21 +40634,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corner_rul */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_5board_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_5board_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_5board___get__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_5board___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -39322,21 +40665,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_10BlokusGame_5board_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_5board_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_5board_2__set__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_10BlokusGame_5board_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__", 0); @@ -39353,21 +40696,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_2__se } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_10BlokusGame_5board_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_5board_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_5board_4__del__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_10BlokusGame_5board_4__del__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -39383,7 +40726,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_4__de return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":404 +/* "blokus_cython.pyx":409 * cdef public bint corner_rule * cdef public object board * cdef public list players # <<<<<<<<<<<<<< @@ -39392,21 +40735,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_4__de */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_7players_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_7players_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_7players___get__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_7players___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -39423,21 +40766,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7playe } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_10BlokusGame_7players_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_7players_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_7players_2__set__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_10BlokusGame_7players_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -39447,7 +40790,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_2__ __Pyx_RefNannySetupContext("__set__", 0); __pyx_t_1 = __pyx_v_value; __Pyx_INCREF(__pyx_t_1); - if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(0, 404, __pyx_L1_error) + if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(0, 409, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->players); __Pyx_DECREF(__pyx_v_self->players); @@ -39459,7 +40802,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_2__ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.players.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.players.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -39467,21 +40810,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_2__ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_10BlokusGame_7players_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_7players_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_7players_4__del__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_10BlokusGame_7players_4__del__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -39497,7 +40840,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_4__ return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":405 +/* "blokus_cython.pyx":410 * cdef public object board * cdef public list players * cdef public int current_player # <<<<<<<<<<<<<< @@ -39506,21 +40849,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_4__ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_14current_player_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_14current_player_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_14current_player_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_14current_player_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14current_player___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_14current_player___get__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14current_player___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_14current_player___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -39529,7 +40872,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14curr int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->current_player); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 405, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->current_player); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -39538,7 +40881,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14curr /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.current_player.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.current_player.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -39547,40 +40890,40 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14curr } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_14current_player_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_14current_player_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_10BlokusGame_14current_player_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_14current_player_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14current_player_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_14current_player_2__set__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14current_player_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_10BlokusGame_14current_player_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 405, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 410, __pyx_L1_error) __pyx_v_self->current_player = __pyx_t_1; /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.current_player.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.current_player.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":406 +/* "blokus_cython.pyx":411 * cdef public list players * cdef public int current_player * cdef public int rounds # <<<<<<<<<<<<<< @@ -39589,21 +40932,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_14current_pl */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_6rounds_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_6rounds_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_6rounds_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_6rounds_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6rounds___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_6rounds___get__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6rounds___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_6rounds___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -39612,7 +40955,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6round int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->rounds); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 406, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->rounds); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -39621,7 +40964,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6round /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.rounds.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.rounds.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -39630,40 +40973,40 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6round } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_6rounds_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_6rounds_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_10BlokusGame_6rounds_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_6rounds_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6rounds_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_6rounds_2__set__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6rounds_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_10BlokusGame_6rounds_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 406, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 411, __pyx_L1_error) __pyx_v_self->rounds = __pyx_t_1; /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.rounds.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.rounds.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":407 +/* "blokus_cython.pyx":412 * cdef public int current_player * cdef public int rounds * cdef public bint game_over # <<<<<<<<<<<<<< @@ -39672,21 +41015,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_6rounds_2__s */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_over_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_over_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_9game_over_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_9game_over_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_over___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_9game_over___get__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_over___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_9game_over___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -39695,7 +41038,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->game_over); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 407, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->game_over); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; @@ -39704,7 +41047,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.game_over.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.game_over.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -39713,40 +41056,40 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_over_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_over_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_10BlokusGame_9game_over_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_9game_over_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_over_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_9game_over_2__set__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_over_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_10BlokusGame_9game_over_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 407, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L1_error) __pyx_v_self->game_over = __pyx_t_1; /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.game_over.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.game_over.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":408 +/* "blokus_cython.pyx":413 * cdef public int rounds * cdef public bint game_over * cdef public list _action_moves # <<<<<<<<<<<<<< @@ -39755,21 +41098,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_over_2 */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_13_action_moves_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_13_action_moves_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_13_action_moves___get__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_13_action_moves___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -39786,21 +41129,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_act } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_10BlokusGame_13_action_moves_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_13_action_moves_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_13_action_moves_2__set__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_10BlokusGame_13_action_moves_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -39810,7 +41153,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_mo __Pyx_RefNannySetupContext("__set__", 0); __pyx_t_1 = __pyx_v_value; __Pyx_INCREF(__pyx_t_1); - if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(0, 408, __pyx_L1_error) + if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(0, 413, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_action_moves); __Pyx_DECREF(__pyx_v_self->_action_moves); @@ -39822,7 +41165,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_mo goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame._action_moves.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame._action_moves.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -39830,21 +41173,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_mo } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_10BlokusGame_13_action_moves_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_13_action_moves_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_13_action_moves_4__del__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_10BlokusGame_13_action_moves_4__del__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -39860,7 +41203,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_mo return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":409 +/* "blokus_cython.pyx":414 * cdef public bint game_over * cdef public list _action_moves * cdef public dict _move_to_action # <<<<<<<<<<<<<< @@ -39869,21 +41212,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_mo */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_15_move_to_action_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_15_move_to_action_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_15_move_to_action___get__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_15_move_to_action___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -39900,21 +41243,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_mov } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_10BlokusGame_15_move_to_action_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_15_move_to_action_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_15_move_to_action_2__set__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_10BlokusGame_15_move_to_action_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -39924,7 +41267,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_a __Pyx_RefNannySetupContext("__set__", 0); __pyx_t_1 = __pyx_v_value; __Pyx_INCREF(__pyx_t_1); - if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(0, 409, __pyx_L1_error) + if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(0, 414, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_move_to_action); __Pyx_DECREF(__pyx_v_self->_move_to_action); @@ -39936,7 +41279,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_a goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame._move_to_action.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame._move_to_action.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -39944,21 +41287,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_a } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_10BlokusGame_15_move_to_action_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_15_move_to_action_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_15_move_to_action_4__del__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_10BlokusGame_15_move_to_action_4__del__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -39974,7 +41317,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_a return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":410 +/* "blokus_cython.pyx":415 * cdef public list _action_moves * cdef public dict _move_to_action * cdef public list _actions_by_piece # <<<<<<<<<<<<<< @@ -39983,21 +41326,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_a */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_17_actions_by_piece_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_17_actions_by_piece_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_17_actions_by_piece___get__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_17_actions_by_piece___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -40014,21 +41357,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_act } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_10BlokusGame_17_actions_by_piece_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_17_actions_by_piece_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_17_actions_by_piece_2__set__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_10BlokusGame_17_actions_by_piece_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -40038,7 +41381,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_b __Pyx_RefNannySetupContext("__set__", 0); __pyx_t_1 = __pyx_v_value; __Pyx_INCREF(__pyx_t_1); - if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(0, 410, __pyx_L1_error) + if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(0, 415, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_actions_by_piece); __Pyx_DECREF(__pyx_v_self->_actions_by_piece); @@ -40050,7 +41393,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_b goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame._actions_by_piece.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame._actions_by_piece.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -40058,21 +41401,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_b } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_10BlokusGame_17_actions_by_piece_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_17_actions_by_piece_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_17_actions_by_piece_4__del__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_10BlokusGame_17_actions_by_piece_4__del__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -40088,7 +41431,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_b return __pyx_r; } -/* "blokus_gym/core/blokus_cython.pyx":411 +/* "blokus_cython.pyx":416 * cdef public dict _move_to_action * cdef public list _actions_by_piece * cdef public list _starting_corners # <<<<<<<<<<<<<< @@ -40097,21 +41440,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_b */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_1__get__(PyObject *__pyx_v_self); /*proto*/ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_1__get__(PyObject *__pyx_v_self) { +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_17_starting_corners_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_17_starting_corners_1__get__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners___get__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_17_starting_corners___get__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners___get__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_17_starting_corners___get__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); @@ -40128,21 +41471,21 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_sta } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pw_13blokus_cython_10BlokusGame_17_starting_corners_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_17_starting_corners_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__set__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_2__set__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_17_starting_corners_2__set__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), ((PyObject *)__pyx_v_value)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_2__set__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { +static int __pyx_pf_13blokus_cython_10BlokusGame_17_starting_corners_2__set__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v_value) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -40152,7 +41495,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_ __Pyx_RefNannySetupContext("__set__", 0); __pyx_t_1 = __pyx_v_value; __Pyx_INCREF(__pyx_t_1); - if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(0, 411, __pyx_L1_error) + if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(0, 416, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_starting_corners); __Pyx_DECREF(__pyx_v_self->_starting_corners); @@ -40164,7 +41507,7 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame._starting_corners.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame._starting_corners.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -40172,21 +41515,21 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_ } /* Python wrapper */ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_5__del__(PyObject *__pyx_v_self); /*proto*/ -static int __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_5__del__(PyObject *__pyx_v_self) { +static int __pyx_pw_13blokus_cython_10BlokusGame_17_starting_corners_5__del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_pw_13blokus_cython_10BlokusGame_17_starting_corners_5__del__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_4__del__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_17_starting_corners_4__del__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_4__del__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static int __pyx_pf_13blokus_cython_10BlokusGame_17_starting_corners_4__del__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__del__", 0); @@ -40209,15 +41552,15 @@ static int __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_27__reduce_cython__(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_37__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_27__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_27__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_27__reduce_cython__(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_37__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_37__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_37__reduce_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -40243,14 +41586,14 @@ PyObject *__pyx_args, PyObject *__pyx_kwds const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;} - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_26__reduce_cython__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self)); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_36__reduce_cython__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_26__reduce_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_36__reduce_cython__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self) { PyObject *__pyx_v_state = 0; PyObject *__pyx_v__dict = 0; int __pyx_v_use_setstate; @@ -40555,7 +41898,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_26__re __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_state); @@ -40573,15 +41916,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_26__re */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_29__setstate_cython__(PyObject *__pyx_v_self, +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_39__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_29__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_29__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_29__setstate_cython__(PyObject *__pyx_v_self, +static PyMethodDef __pyx_mdef_13blokus_cython_10BlokusGame_39__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_39__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_10BlokusGame_39__setstate_cython__(PyObject *__pyx_v_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -40643,11 +41986,11 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_28__setstate_cython__(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v___pyx_state); + __pyx_r = __pyx_pf_13blokus_cython_10BlokusGame_38__setstate_cython__(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v_self), __pyx_v___pyx_state); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { @@ -40657,7 +42000,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_28__setstate_cython__(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_pf_13blokus_cython_10BlokusGame_38__setstate_cython__(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -40679,7 +42022,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_28__se PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); __PYX_ERR(1, 17, __pyx_L1_error) } - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_BlokusGame__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython___pyx_unpickle_BlokusGame__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -40697,7 +42040,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_28__se __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.BlokusGame.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.BlokusGame.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -40714,15 +42057,15 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10BlokusGame_28__se */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_1__pyx_unpickle_Board(PyObject *__pyx_self, +static PyObject *__pyx_pw_13blokus_cython_3__pyx_unpickle_Board(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_1__pyx_unpickle_Board = {"__pyx_unpickle_Board", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_1__pyx_unpickle_Board, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_1__pyx_unpickle_Board(PyObject *__pyx_self, +static PyMethodDef __pyx_mdef_13blokus_cython_3__pyx_unpickle_Board = {"__pyx_unpickle_Board", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_3__pyx_unpickle_Board, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_3__pyx_unpickle_Board(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -40800,12 +42143,12 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_Board", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_Board", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v___pyx_state), (&PyTuple_Type), 1, "__pyx_state", 1))) __PYX_ERR(1, 4, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Board(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + __pyx_r = __pyx_pf_13blokus_cython_2__pyx_unpickle_Board(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); /* function exit code */ goto __pyx_L0; @@ -40824,7 +42167,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Board(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_pf_13blokus_cython_2__pyx_unpickle_Board(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_v___pyx_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -40854,7 +42197,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Boar * if __pyx_state is not None: * __pyx_unpickle_Board__set_state( __pyx_result, __pyx_state) */ - __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board); + __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board); __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; { @@ -40888,7 +42231,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Boar PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); __PYX_ERR(1, 9, __pyx_L1_error) } - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Board__set_state(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython___pyx_unpickle_Board__set_state(((struct __pyx_obj_13blokus_cython_Board *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -40925,7 +42268,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Boar __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_Board", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_Board", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v___pyx_result); @@ -40942,7 +42285,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Boar * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 3) */ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Board__set_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_f_13blokus_cython___pyx_unpickle_Board__set_state(struct __pyx_obj_13blokus_cython_Board *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -41002,7 +42345,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Board __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __PYX_XCLEAR_MEMVIEW(&__pyx_t_2, 1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_Board__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_Board__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -41019,15 +42362,15 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Board */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_3__pyx_unpickle_Move(PyObject *__pyx_self, +static PyObject *__pyx_pw_13blokus_cython_5__pyx_unpickle_Move(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_3__pyx_unpickle_Move = {"__pyx_unpickle_Move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_3__pyx_unpickle_Move, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_3__pyx_unpickle_Move(PyObject *__pyx_self, +static PyMethodDef __pyx_mdef_13blokus_cython_5__pyx_unpickle_Move = {"__pyx_unpickle_Move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5__pyx_unpickle_Move, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_5__pyx_unpickle_Move(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -41105,12 +42448,12 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_Move", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_Move", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v___pyx_state), (&PyTuple_Type), 1, "__pyx_state", 1))) __PYX_ERR(1, 4, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_2__pyx_unpickle_Move(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + __pyx_r = __pyx_pf_13blokus_cython_4__pyx_unpickle_Move(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); /* function exit code */ goto __pyx_L0; @@ -41129,7 +42472,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_2__pyx_unpickle_Move(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_pf_13blokus_cython_4__pyx_unpickle_Move(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_v___pyx_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -41159,7 +42502,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_2__pyx_unpickle_Mov * if __pyx_state is not None: * __pyx_unpickle_Move__set_state( __pyx_result, __pyx_state) */ - __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move); + __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Move); __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; { @@ -41193,7 +42536,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_2__pyx_unpickle_Mov PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); __PYX_ERR(1, 9, __pyx_L1_error) } - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Move__set_state(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython___pyx_unpickle_Move__set_state(((struct __pyx_obj_13blokus_cython_Move *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -41230,7 +42573,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_2__pyx_unpickle_Mov __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_Move", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_Move", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v___pyx_result); @@ -41247,7 +42590,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_2__pyx_unpickle_Mov * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 4) */ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Move__set_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_f_13blokus_cython___pyx_unpickle_Move__set_state(struct __pyx_obj_13blokus_cython_Move *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -41304,7 +42647,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Move_ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_Move__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_Move__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -41321,15 +42664,15 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Move_ */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5__pyx_unpickle_PieceOrientation(PyObject *__pyx_self, +static PyObject *__pyx_pw_13blokus_cython_7__pyx_unpickle_PieceOrientation(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_5__pyx_unpickle_PieceOrientation = {"__pyx_unpickle_PieceOrientation", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5__pyx_unpickle_PieceOrientation, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_5__pyx_unpickle_PieceOrientation(PyObject *__pyx_self, +static PyMethodDef __pyx_mdef_13blokus_cython_7__pyx_unpickle_PieceOrientation = {"__pyx_unpickle_PieceOrientation", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_7__pyx_unpickle_PieceOrientation, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_7__pyx_unpickle_PieceOrientation(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -41407,12 +42750,12 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_PieceOrientation", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_PieceOrientation", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v___pyx_state), (&PyTuple_Type), 1, "__pyx_state", 1))) __PYX_ERR(1, 4, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_4__pyx_unpickle_PieceOrientation(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + __pyx_r = __pyx_pf_13blokus_cython_6__pyx_unpickle_PieceOrientation(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); /* function exit code */ goto __pyx_L0; @@ -41431,7 +42774,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4__pyx_unpickle_PieceOrientation(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_pf_13blokus_cython_6__pyx_unpickle_PieceOrientation(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_v___pyx_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -41461,7 +42804,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4__pyx_unpickle_Pie * if __pyx_state is not None: * __pyx_unpickle_PieceOrientation__set_state( __pyx_result, __pyx_state) */ - __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation); + __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceOrientation); __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; { @@ -41495,7 +42838,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4__pyx_unpickle_Pie PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); __PYX_ERR(1, 9, __pyx_L1_error) } - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_PieceOrientation__set_state(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython___pyx_unpickle_PieceOrientation__set_state(((struct __pyx_obj_13blokus_cython_PieceOrientation *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -41532,7 +42875,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4__pyx_unpickle_Pie __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_PieceOrientation", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_PieceOrientation", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v___pyx_result); @@ -41549,7 +42892,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_4__pyx_unpickle_Pie * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 4) */ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_PieceOrientation__set_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_f_13blokus_cython___pyx_unpickle_PieceOrientation__set_state(struct __pyx_obj_13blokus_cython_PieceOrientation *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -41612,7 +42955,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Piece goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_PieceOrientation__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_PieceOrientation__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -41629,15 +42972,15 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Piece */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_7__pyx_unpickle_Piece(PyObject *__pyx_self, +static PyObject *__pyx_pw_13blokus_cython_9__pyx_unpickle_Piece(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_7__pyx_unpickle_Piece = {"__pyx_unpickle_Piece", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_7__pyx_unpickle_Piece, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_7__pyx_unpickle_Piece(PyObject *__pyx_self, +static PyMethodDef __pyx_mdef_13blokus_cython_9__pyx_unpickle_Piece = {"__pyx_unpickle_Piece", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_9__pyx_unpickle_Piece, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_9__pyx_unpickle_Piece(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -41715,12 +43058,12 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_Piece", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_Piece", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v___pyx_state), (&PyTuple_Type), 1, "__pyx_state", 1))) __PYX_ERR(1, 4, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_6__pyx_unpickle_Piece(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + __pyx_r = __pyx_pf_13blokus_cython_8__pyx_unpickle_Piece(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); /* function exit code */ goto __pyx_L0; @@ -41739,7 +43082,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_6__pyx_unpickle_Piece(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_pf_13blokus_cython_8__pyx_unpickle_Piece(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_v___pyx_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -41769,7 +43112,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_6__pyx_unpickle_Pie * if __pyx_state is not None: * __pyx_unpickle_Piece__set_state( __pyx_result, __pyx_state) */ - __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece); + __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece); __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; { @@ -41803,7 +43146,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_6__pyx_unpickle_Pie PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); __PYX_ERR(1, 9, __pyx_L1_error) } - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Piece__set_state(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython___pyx_unpickle_Piece__set_state(((struct __pyx_obj_13blokus_cython_Piece *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -41840,7 +43183,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_6__pyx_unpickle_Pie __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_Piece", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_Piece", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v___pyx_result); @@ -41857,7 +43200,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_6__pyx_unpickle_Pie * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 2) */ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Piece__set_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_f_13blokus_cython___pyx_unpickle_Piece__set_state(struct __pyx_obj_13blokus_cython_Piece *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -41909,7 +43252,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Piece goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_Piece__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_Piece__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -41926,15 +43269,15 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Piece */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_9__pyx_unpickle_PieceSet(PyObject *__pyx_self, +static PyObject *__pyx_pw_13blokus_cython_11__pyx_unpickle_PieceSet(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_9__pyx_unpickle_PieceSet = {"__pyx_unpickle_PieceSet", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_9__pyx_unpickle_PieceSet, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_9__pyx_unpickle_PieceSet(PyObject *__pyx_self, +static PyMethodDef __pyx_mdef_13blokus_cython_11__pyx_unpickle_PieceSet = {"__pyx_unpickle_PieceSet", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_11__pyx_unpickle_PieceSet, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_11__pyx_unpickle_PieceSet(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -42012,12 +43355,12 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_PieceSet", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_PieceSet", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v___pyx_state), (&PyTuple_Type), 1, "__pyx_state", 1))) __PYX_ERR(1, 4, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_8__pyx_unpickle_PieceSet(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + __pyx_r = __pyx_pf_13blokus_cython_10__pyx_unpickle_PieceSet(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); /* function exit code */ goto __pyx_L0; @@ -42036,7 +43379,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8__pyx_unpickle_PieceSet(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_pf_13blokus_cython_10__pyx_unpickle_PieceSet(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_v___pyx_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -42066,7 +43409,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8__pyx_unpickle_Pie * if __pyx_state is not None: * __pyx_unpickle_PieceSet__set_state( __pyx_result, __pyx_state) */ - __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet); + __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceSet); __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; { @@ -42100,7 +43443,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8__pyx_unpickle_Pie PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); __PYX_ERR(1, 9, __pyx_L1_error) } - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_PieceSet__set_state(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython___pyx_unpickle_PieceSet__set_state(((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -42137,7 +43480,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8__pyx_unpickle_Pie __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_PieceSet", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_PieceSet", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v___pyx_result); @@ -42154,7 +43497,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_8__pyx_unpickle_Pie * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 5) */ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_PieceSet__set_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_f_13blokus_cython___pyx_unpickle_PieceSet__set_state(struct __pyx_obj_13blokus_cython_PieceSet *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -42228,7 +43571,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Piece goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_PieceSet__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_PieceSet__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -42245,15 +43588,15 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Piece */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11__pyx_unpickle_PlayerState(PyObject *__pyx_self, +static PyObject *__pyx_pw_13blokus_cython_13__pyx_unpickle_PlayerState(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_11__pyx_unpickle_PlayerState = {"__pyx_unpickle_PlayerState", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_11__pyx_unpickle_PlayerState, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_11__pyx_unpickle_PlayerState(PyObject *__pyx_self, +static PyMethodDef __pyx_mdef_13blokus_cython_13__pyx_unpickle_PlayerState = {"__pyx_unpickle_PlayerState", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_13__pyx_unpickle_PlayerState, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_13__pyx_unpickle_PlayerState(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -42331,12 +43674,12 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_PlayerState", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_PlayerState", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v___pyx_state), (&PyTuple_Type), 1, "__pyx_state", 1))) __PYX_ERR(1, 4, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_10__pyx_unpickle_PlayerState(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + __pyx_r = __pyx_pf_13blokus_cython_12__pyx_unpickle_PlayerState(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); /* function exit code */ goto __pyx_L0; @@ -42355,7 +43698,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10__pyx_unpickle_PlayerState(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_pf_13blokus_cython_12__pyx_unpickle_PlayerState(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_v___pyx_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -42385,7 +43728,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10__pyx_unpickle_Pl * if __pyx_state is not None: * __pyx_unpickle_PlayerState__set_state( __pyx_result, __pyx_state) */ - __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState); + __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_13blokus_cython_PlayerState); __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; { @@ -42419,7 +43762,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10__pyx_unpickle_Pl PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); __PYX_ERR(1, 9, __pyx_L1_error) } - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_PlayerState__set_state(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython___pyx_unpickle_PlayerState__set_state(((struct __pyx_obj_13blokus_cython_PlayerState *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -42456,7 +43799,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10__pyx_unpickle_Pl __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_PlayerState", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_PlayerState", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v___pyx_result); @@ -42473,7 +43816,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_10__pyx_unpickle_Pl * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 6) */ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_PlayerState__set_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_f_13blokus_cython___pyx_unpickle_PlayerState__set_state(struct __pyx_obj_13blokus_cython_PlayerState *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -42547,7 +43890,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Playe goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_PlayerState__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_PlayerState__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -42564,15 +43907,15 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Playe */ /* Python wrapper */ -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_13__pyx_unpickle_BlokusGame(PyObject *__pyx_self, +static PyObject *__pyx_pw_13blokus_cython_15__pyx_unpickle_BlokusGame(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ -static PyMethodDef __pyx_mdef_10blokus_gym_4core_13blokus_cython_13__pyx_unpickle_BlokusGame = {"__pyx_unpickle_BlokusGame", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_13__pyx_unpickle_BlokusGame, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10blokus_gym_4core_13blokus_cython_13__pyx_unpickle_BlokusGame(PyObject *__pyx_self, +static PyMethodDef __pyx_mdef_13blokus_cython_15__pyx_unpickle_BlokusGame = {"__pyx_unpickle_BlokusGame", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_15__pyx_unpickle_BlokusGame, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13blokus_cython_15__pyx_unpickle_BlokusGame(PyObject *__pyx_self, #if CYTHON_METH_FASTCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else @@ -42650,12 +43993,12 @@ PyObject *__pyx_args, PyObject *__pyx_kwds for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_BlokusGame", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_BlokusGame", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v___pyx_state), (&PyTuple_Type), 1, "__pyx_state", 1))) __PYX_ERR(1, 4, __pyx_L1_error) - __pyx_r = __pyx_pf_10blokus_gym_4core_13blokus_cython_12__pyx_unpickle_BlokusGame(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + __pyx_r = __pyx_pf_13blokus_cython_14__pyx_unpickle_BlokusGame(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); /* function exit code */ goto __pyx_L0; @@ -42674,7 +44017,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds return __pyx_r; } -static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_12__pyx_unpickle_BlokusGame(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_pf_13blokus_cython_14__pyx_unpickle_BlokusGame(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_v___pyx_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations @@ -42704,7 +44047,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_12__pyx_unpickle_Bl * if __pyx_state is not None: * __pyx_unpickle_BlokusGame__set_state( __pyx_result, __pyx_state) */ - __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame); + __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame); __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; { @@ -42738,7 +44081,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_12__pyx_unpickle_Bl PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); __PYX_ERR(1, 9, __pyx_L1_error) } - __pyx_t_2 = __pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_BlokusGame__set_state(((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13blokus_cython___pyx_unpickle_BlokusGame__set_state(((struct __pyx_obj_13blokus_cython_BlokusGame *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -42775,7 +44118,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_12__pyx_unpickle_Bl __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_BlokusGame", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_BlokusGame", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v___pyx_result); @@ -42792,7 +44135,7 @@ static PyObject *__pyx_pf_10blokus_gym_4core_13blokus_cython_12__pyx_unpickle_Bl * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 13) */ -static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_BlokusGame__set_state(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { +static PyObject *__pyx_f_13blokus_cython___pyx_unpickle_BlokusGame__set_state(struct __pyx_obj_13blokus_cython_BlokusGame *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -42875,11 +44218,11 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Bloku __pyx_v___pyx_result->num_players = __pyx_t_2; __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 10, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet))))) __PYX_ERR(1, 12, __pyx_L1_error) + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceSet))))) __PYX_ERR(1, 12, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->piece_set); __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->piece_set); - __pyx_v___pyx_result->piece_set = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)__pyx_t_1); + __pyx_v___pyx_result->piece_set = ((struct __pyx_obj_13blokus_cython_PieceSet *)__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 11, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); @@ -42915,7 +44258,7 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Bloku goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("blokus_gym.core.blokus_cython.__pyx_unpickle_BlokusGame__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("blokus_cython.__pyx_unpickle_BlokusGame__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); @@ -42923,26 +44266,26 @@ static PyObject *__pyx_f_10blokus_gym_4core_13blokus_cython___pyx_unpickle_Bloku return __pyx_r; } /* #### Code section: module_exttypes ### */ -static struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_Board __pyx_vtable_10blokus_gym_4core_13blokus_cython_Board; +static struct __pyx_vtabstruct_13blokus_cython_Board __pyx_vtable_13blokus_cython_Board; -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_Board(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *p; +static PyObject *__pyx_tp_new_13blokus_cython_Board(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_13blokus_cython_Board *p; PyObject *o; o = __Pyx_AllocateExtensionType(t, 0); if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)o); - p->__pyx_vtab = __pyx_vtabptr_10blokus_gym_4core_13blokus_cython_Board; + p = ((struct __pyx_obj_13blokus_cython_Board *)o); + p->__pyx_vtab = __pyx_vtabptr_13blokus_cython_Board; p->_occupied_cache = ((PyObject*)Py_None); Py_INCREF(Py_None); p->grid.data = NULL; p->grid.memview = NULL; return o; } -static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Board(PyObject *o) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)o; +static void __pyx_tp_dealloc_13blokus_cython_Board(PyObject *o) { + struct __pyx_obj_13blokus_cython_Board *p = (struct __pyx_obj_13blokus_cython_Board *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Board) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13blokus_cython_Board) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } @@ -42965,9 +44308,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Board(PyObject * #endif } -static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_Board(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_13blokus_cython_Board(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)o; + struct __pyx_obj_13blokus_cython_Board *p = (struct __pyx_obj_13blokus_cython_Board *)o; { e = __Pyx_call_type_traverse(o, 1, v, a); if (e) return e; @@ -42978,22 +44321,22 @@ static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_Board(PyObject * return 0; } -static int __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_Board(PyObject *o) { +static int __pyx_tp_clear_13blokus_cython_Board(PyObject *o) { PyObject* tmp; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *)o; + struct __pyx_obj_13blokus_cython_Board *p = (struct __pyx_obj_13blokus_cython_Board *)o; tmp = ((PyObject*)p->_occupied_cache); p->_occupied_cache = ((PyObject*)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_5Board_size(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_4size_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_5Board_size(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_5Board_4size_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_5Board_size(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_5Board_size(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_4size_3__set__(o, v); + return __pyx_pw_13blokus_cython_5Board_4size_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -43001,13 +44344,13 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_5Board_size(PyObject } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_5Board_grid(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_4grid_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_5Board_grid(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_5Board_4grid_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_5Board_grid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_5Board_grid(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_4grid_3__set__(o, v); + return __pyx_pw_13blokus_cython_5Board_4grid_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -43015,70 +44358,70 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_5Board_grid(PyObject } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_5Board__occupied_cache(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_5Board__occupied_cache(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_5Board_15_occupied_cache_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_5Board__occupied_cache(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_5Board__occupied_cache(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_3__set__(o, v); + return __pyx_pw_13blokus_cython_5Board_15_occupied_cache_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_15_occupied_cache_5__del__(o); + return __pyx_pw_13blokus_cython_5Board_15_occupied_cache_5__del__(o); } } -static PyMethodDef __pyx_methods_10blokus_gym_4core_13blokus_cython_Board[] = { - {"place", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_3place, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_2place}, - {"clear", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_5clear, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_4clear}, - {"is_empty", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_7is_empty, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_6is_empty}, - {"in_bounds", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_9in_bounds, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_8in_bounds}, - {"has_overlap", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_11has_overlap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_10has_overlap}, - {"get_cell", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_13get_cell, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_12get_cell}, - {"get_player_squares", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_15get_player_squares, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_14get_player_squares}, - {"get_player_occupied", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_17get_player_occupied, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_16get_player_occupied}, - {"get_player_corners", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_19get_player_corners, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_18get_player_corners}, - {"get_occupied", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_21get_occupied, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_20get_occupied}, - {"is_full", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_23is_full, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_22is_full}, - {"coverage", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_25coverage, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_5Board_24coverage}, - {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_27__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_29__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, +static PyMethodDef __pyx_methods_13blokus_cython_Board[] = { + {"place", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_3place, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_2place}, + {"clear", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_5clear, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_4clear}, + {"is_empty", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_7is_empty, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_6is_empty}, + {"in_bounds", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_9in_bounds, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_8in_bounds}, + {"has_overlap", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_11has_overlap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_10has_overlap}, + {"get_cell", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_13get_cell, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_12get_cell}, + {"get_player_squares", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_15get_player_squares, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_14get_player_squares}, + {"get_player_occupied", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_17get_player_occupied, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_16get_player_occupied}, + {"get_player_corners", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_19get_player_corners, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_18get_player_corners}, + {"get_occupied", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_21get_occupied, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_20get_occupied}, + {"is_full", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_23is_full, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_22is_full}, + {"coverage", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_25coverage, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_5Board_24coverage}, + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_27__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Board_29__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {0, 0, 0, 0} }; -static struct PyGetSetDef __pyx_getsets_10blokus_gym_4core_13blokus_cython_Board[] = { - {"size", __pyx_getprop_10blokus_gym_4core_13blokus_cython_5Board_size, __pyx_setprop_10blokus_gym_4core_13blokus_cython_5Board_size, 0, 0}, - {"grid", __pyx_getprop_10blokus_gym_4core_13blokus_cython_5Board_grid, __pyx_setprop_10blokus_gym_4core_13blokus_cython_5Board_grid, 0, 0}, - {"_occupied_cache", __pyx_getprop_10blokus_gym_4core_13blokus_cython_5Board__occupied_cache, __pyx_setprop_10blokus_gym_4core_13blokus_cython_5Board__occupied_cache, 0, 0}, +static struct PyGetSetDef __pyx_getsets_13blokus_cython_Board[] = { + {"size", __pyx_getprop_13blokus_cython_5Board_size, __pyx_setprop_13blokus_cython_5Board_size, 0, 0}, + {"grid", __pyx_getprop_13blokus_cython_5Board_grid, __pyx_setprop_13blokus_cython_5Board_grid, 0, 0}, + {"_occupied_cache", __pyx_getprop_13blokus_cython_5Board__occupied_cache, __pyx_setprop_13blokus_cython_5Board__occupied_cache, 0, 0}, {0, 0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_10blokus_gym_4core_13blokus_cython_Board_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Board}, +static PyType_Slot __pyx_type_13blokus_cython_Board_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13blokus_cython_Board}, {Py_tp_doc, (void *)PyDoc_STR("Cython-optimized Board class with static typing.\n \n Key optimizations:\n - Static typing eliminates Python interpreter overhead\n - Direct C-level array access instead of Python method calls\n - Precomputed bounds checking\n ")}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_Board}, - {Py_tp_clear, (void *)__pyx_tp_clear_10blokus_gym_4core_13blokus_cython_Board}, - {Py_tp_methods, (void *)__pyx_methods_10blokus_gym_4core_13blokus_cython_Board}, - {Py_tp_getset, (void *)__pyx_getsets_10blokus_gym_4core_13blokus_cython_Board}, - {Py_tp_init, (void *)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_1__init__}, - {Py_tp_new, (void *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython_Board}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13blokus_cython_Board}, + {Py_tp_clear, (void *)__pyx_tp_clear_13blokus_cython_Board}, + {Py_tp_methods, (void *)__pyx_methods_13blokus_cython_Board}, + {Py_tp_getset, (void *)__pyx_getsets_13blokus_cython_Board}, + {Py_tp_init, (void *)__pyx_pw_13blokus_cython_5Board_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_13blokus_cython_Board}, {0, 0}, }; -static PyType_Spec __pyx_type_10blokus_gym_4core_13blokus_cython_Board_spec = { - "blokus_gym.core.blokus_cython.Board", - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board), +static PyType_Spec __pyx_type_13blokus_cython_Board_spec = { + "blokus_cython.Board", + sizeof(struct __pyx_obj_13blokus_cython_Board), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_10blokus_gym_4core_13blokus_cython_Board_slots, + __pyx_type_13blokus_cython_Board_slots, }; #else -static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_Board = { +static PyTypeObject __pyx_type_13blokus_cython_Board = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""Board", /*tp_name*/ - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board), /*tp_basicsize*/ + "blokus_cython.""Board", /*tp_name*/ + sizeof(struct __pyx_obj_13blokus_cython_Board), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Board, /*tp_dealloc*/ + __pyx_tp_dealloc_13blokus_cython_Board, /*tp_dealloc*/ 0, /*tp_vectorcall_offset*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -43095,15 +44438,15 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_Board = { 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ PyDoc_STR("Cython-optimized Board class with static typing.\n \n Key optimizations:\n - Static typing eliminates Python interpreter overhead\n - Direct C-level array access instead of Python method calls\n - Precomputed bounds checking\n "), /*tp_doc*/ - __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_Board, /*tp_traverse*/ - __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_Board, /*tp_clear*/ + __pyx_tp_traverse_13blokus_cython_Board, /*tp_traverse*/ + __pyx_tp_clear_13blokus_cython_Board, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ - __pyx_methods_10blokus_gym_4core_13blokus_cython_Board, /*tp_methods*/ + __pyx_methods_13blokus_cython_Board, /*tp_methods*/ 0, /*tp_members*/ - __pyx_getsets_10blokus_gym_4core_13blokus_cython_Board, /*tp_getset*/ + __pyx_getsets_13blokus_cython_Board, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ @@ -43111,9 +44454,9 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_Board = { #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif - __pyx_pw_10blokus_gym_4core_13blokus_cython_5Board_1__init__, /*tp_init*/ + __pyx_pw_13blokus_cython_5Board_1__init__, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_10blokus_gym_4core_13blokus_cython_Board, /*tp_new*/ + __pyx_tp_new_13blokus_cython_Board, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -43146,17 +44489,17 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_Board = { }; #endif -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_Move(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +static PyObject *__pyx_tp_new_13blokus_cython_Move(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; o = __Pyx_AllocateExtensionType(t, 0); if (unlikely(!o)) return 0; return o; } -static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Move(PyObject *o) { +static void __pyx_tp_dealloc_13blokus_cython_Move(PyObject *o) { #if CYTHON_USE_TP_FINALIZE if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Move) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13blokus_cython_Move) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } @@ -43175,13 +44518,13 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Move(PyObject *o #endif } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_4Move_piece_id(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_8piece_id_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_4Move_piece_id(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_4Move_8piece_id_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_4Move_piece_id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_4Move_piece_id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_8piece_id_3__set__(o, v); + return __pyx_pw_13blokus_cython_4Move_8piece_id_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -43189,13 +44532,13 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_4Move_piece_id(PyObj } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_4Move_orientation_id(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_14orientation_id_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_4Move_orientation_id(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_4Move_14orientation_id_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_4Move_orientation_id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_4Move_orientation_id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_14orientation_id_3__set__(o, v); + return __pyx_pw_13blokus_cython_4Move_14orientation_id_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -43203,13 +44546,13 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_4Move_orientation_id } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_4Move_x(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1x_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_4Move_x(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_4Move_1x_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_4Move_x(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_4Move_x(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1x_3__set__(o, v); + return __pyx_pw_13blokus_cython_4Move_1x_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -43217,13 +44560,13 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_4Move_x(PyObject *o, } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_4Move_y(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1y_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_4Move_y(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_4Move_1y_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_4Move_y(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_4Move_y(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1y_3__set__(o, v); + return __pyx_pw_13blokus_cython_4Move_1y_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -43231,50 +44574,50 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_4Move_y(PyObject *o, } } -static PyMethodDef __pyx_methods_10blokus_gym_4core_13blokus_cython_Move[] = { - {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, +static PyMethodDef __pyx_methods_13blokus_cython_Move[] = { + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_4Move_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_4Move_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {0, 0, 0, 0} }; -static struct PyGetSetDef __pyx_getsets_10blokus_gym_4core_13blokus_cython_Move[] = { - {"piece_id", __pyx_getprop_10blokus_gym_4core_13blokus_cython_4Move_piece_id, __pyx_setprop_10blokus_gym_4core_13blokus_cython_4Move_piece_id, 0, 0}, - {"orientation_id", __pyx_getprop_10blokus_gym_4core_13blokus_cython_4Move_orientation_id, __pyx_setprop_10blokus_gym_4core_13blokus_cython_4Move_orientation_id, 0, 0}, - {"x", __pyx_getprop_10blokus_gym_4core_13blokus_cython_4Move_x, __pyx_setprop_10blokus_gym_4core_13blokus_cython_4Move_x, 0, 0}, - {"y", __pyx_getprop_10blokus_gym_4core_13blokus_cython_4Move_y, __pyx_setprop_10blokus_gym_4core_13blokus_cython_4Move_y, 0, 0}, +static struct PyGetSetDef __pyx_getsets_13blokus_cython_Move[] = { + {"piece_id", __pyx_getprop_13blokus_cython_4Move_piece_id, __pyx_setprop_13blokus_cython_4Move_piece_id, 0, 0}, + {"orientation_id", __pyx_getprop_13blokus_cython_4Move_orientation_id, __pyx_setprop_13blokus_cython_4Move_orientation_id, 0, 0}, + {"x", __pyx_getprop_13blokus_cython_4Move_x, __pyx_setprop_13blokus_cython_4Move_x, 0, 0}, + {"y", __pyx_getprop_13blokus_cython_4Move_y, __pyx_setprop_13blokus_cython_4Move_y, 0, 0}, {0, 0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_10blokus_gym_4core_13blokus_cython_Move_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Move}, - {Py_tp_repr, (void *)__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_3__repr__}, +static PyType_Slot __pyx_type_13blokus_cython_Move_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13blokus_cython_Move}, + {Py_tp_repr, (void *)__pyx_pw_13blokus_cython_4Move_3__repr__}, {Py_tp_doc, (void *)PyDoc_STR("A move in the game (piece, orientation, position).")}, - {Py_tp_methods, (void *)__pyx_methods_10blokus_gym_4core_13blokus_cython_Move}, - {Py_tp_getset, (void *)__pyx_getsets_10blokus_gym_4core_13blokus_cython_Move}, - {Py_tp_init, (void *)__pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1__init__}, - {Py_tp_new, (void *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython_Move}, + {Py_tp_methods, (void *)__pyx_methods_13blokus_cython_Move}, + {Py_tp_getset, (void *)__pyx_getsets_13blokus_cython_Move}, + {Py_tp_init, (void *)__pyx_pw_13blokus_cython_4Move_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_13blokus_cython_Move}, {0, 0}, }; -static PyType_Spec __pyx_type_10blokus_gym_4core_13blokus_cython_Move_spec = { - "blokus_gym.core.blokus_cython.Move", - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move), +static PyType_Spec __pyx_type_13blokus_cython_Move_spec = { + "blokus_cython.Move", + sizeof(struct __pyx_obj_13blokus_cython_Move), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, - __pyx_type_10blokus_gym_4core_13blokus_cython_Move_slots, + __pyx_type_13blokus_cython_Move_slots, }; #else -static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_Move = { +static PyTypeObject __pyx_type_13blokus_cython_Move = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""Move", /*tp_name*/ - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move), /*tp_basicsize*/ + "blokus_cython.""Move", /*tp_name*/ + sizeof(struct __pyx_obj_13blokus_cython_Move), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Move, /*tp_dealloc*/ + __pyx_tp_dealloc_13blokus_cython_Move, /*tp_dealloc*/ 0, /*tp_vectorcall_offset*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_as_async*/ - __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_3__repr__, /*tp_repr*/ + __pyx_pw_13blokus_cython_4Move_3__repr__, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ @@ -43292,9 +44635,9 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_Move = { 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ - __pyx_methods_10blokus_gym_4core_13blokus_cython_Move, /*tp_methods*/ + __pyx_methods_13blokus_cython_Move, /*tp_methods*/ 0, /*tp_members*/ - __pyx_getsets_10blokus_gym_4core_13blokus_cython_Move, /*tp_getset*/ + __pyx_getsets_13blokus_cython_Move, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ @@ -43302,9 +44645,9 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_Move = { #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif - __pyx_pw_10blokus_gym_4core_13blokus_cython_4Move_1__init__, /*tp_init*/ + __pyx_pw_13blokus_cython_4Move_1__init__, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_10blokus_gym_4core_13blokus_cython_Move, /*tp_new*/ + __pyx_tp_new_13blokus_cython_Move, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -43337,22 +44680,22 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_Move = { }; #endif -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_PieceOrientation(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *p; +static PyObject *__pyx_tp_new_13blokus_cython_PieceOrientation(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_13blokus_cython_PieceOrientation *p; PyObject *o; o = __Pyx_AllocateExtensionType(t, 0); if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)o); + p = ((struct __pyx_obj_13blokus_cython_PieceOrientation *)o); p->squares = ((PyObject*)Py_None); Py_INCREF(Py_None); p->corners = ((PyObject*)Py_None); Py_INCREF(Py_None); return o; } -static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PieceOrientation(PyObject *o) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)o; +static void __pyx_tp_dealloc_13blokus_cython_PieceOrientation(PyObject *o) { + struct __pyx_obj_13blokus_cython_PieceOrientation *p = (struct __pyx_obj_13blokus_cython_PieceOrientation *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PieceOrientation) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13blokus_cython_PieceOrientation) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } @@ -43374,9 +44717,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PieceOrientation #endif } -static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_PieceOrientation(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_13blokus_cython_PieceOrientation(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)o; + struct __pyx_obj_13blokus_cython_PieceOrientation *p = (struct __pyx_obj_13blokus_cython_PieceOrientation *)o; { e = __Pyx_call_type_traverse(o, 1, v, a); if (e) return e; @@ -43390,9 +44733,9 @@ static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_PieceOrientation return 0; } -static int __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_PieceOrientation(PyObject *o) { +static int __pyx_tp_clear_13blokus_cython_PieceOrientation(PyObject *o) { PyObject* tmp; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation *)o; + struct __pyx_obj_13blokus_cython_PieceOrientation *p = (struct __pyx_obj_13blokus_cython_PieceOrientation *)o; tmp = ((PyObject*)p->squares); p->squares = ((PyObject*)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); @@ -43402,13 +44745,13 @@ static int __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_PieceOrientation(Py return 0; } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_piece_id(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_8piece_id_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_16PieceOrientation_piece_id(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_16PieceOrientation_8piece_id_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_piece_id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_16PieceOrientation_piece_id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_8piece_id_3__set__(o, v); + return __pyx_pw_13blokus_cython_16PieceOrientation_8piece_id_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -43416,13 +44759,13 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_p } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_orientation_id(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_14orientation_id_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_16PieceOrientation_orientation_id(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_16PieceOrientation_14orientation_id_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_orientation_id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_16PieceOrientation_orientation_id(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_14orientation_id_3__set__(o, v); + return __pyx_pw_13blokus_cython_16PieceOrientation_14orientation_id_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -43430,72 +44773,72 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_o } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_squares(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_16PieceOrientation_squares(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_16PieceOrientation_7squares_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_squares(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_16PieceOrientation_squares(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_3__set__(o, v); + return __pyx_pw_13blokus_cython_16PieceOrientation_7squares_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7squares_5__del__(o); + return __pyx_pw_13blokus_cython_16PieceOrientation_7squares_5__del__(o); } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_corners(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_16PieceOrientation_corners(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_16PieceOrientation_7corners_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_corners(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_16PieceOrientation_corners(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_3__set__(o, v); + return __pyx_pw_13blokus_cython_16PieceOrientation_7corners_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_7corners_5__del__(o); + return __pyx_pw_13blokus_cython_16PieceOrientation_7corners_5__del__(o); } } -static PyMethodDef __pyx_methods_10blokus_gym_4core_13blokus_cython_PieceOrientation[] = { - {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, +static PyMethodDef __pyx_methods_13blokus_cython_PieceOrientation[] = { + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_16PieceOrientation_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_16PieceOrientation_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {0, 0, 0, 0} }; -static struct PyGetSetDef __pyx_getsets_10blokus_gym_4core_13blokus_cython_PieceOrientation[] = { - {"piece_id", __pyx_getprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_piece_id, __pyx_setprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_piece_id, 0, 0}, - {"orientation_id", __pyx_getprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_orientation_id, __pyx_setprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_orientation_id, 0, 0}, - {"squares", __pyx_getprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_squares, __pyx_setprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_squares, 0, 0}, - {"corners", __pyx_getprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_corners, __pyx_setprop_10blokus_gym_4core_13blokus_cython_16PieceOrientation_corners, 0, 0}, +static struct PyGetSetDef __pyx_getsets_13blokus_cython_PieceOrientation[] = { + {"piece_id", __pyx_getprop_13blokus_cython_16PieceOrientation_piece_id, __pyx_setprop_13blokus_cython_16PieceOrientation_piece_id, 0, 0}, + {"orientation_id", __pyx_getprop_13blokus_cython_16PieceOrientation_orientation_id, __pyx_setprop_13blokus_cython_16PieceOrientation_orientation_id, 0, 0}, + {"squares", __pyx_getprop_13blokus_cython_16PieceOrientation_squares, __pyx_setprop_13blokus_cython_16PieceOrientation_squares, 0, 0}, + {"corners", __pyx_getprop_13blokus_cython_16PieceOrientation_corners, __pyx_setprop_13blokus_cython_16PieceOrientation_corners, 0, 0}, {0, 0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_10blokus_gym_4core_13blokus_cython_PieceOrientation_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PieceOrientation}, +static PyType_Slot __pyx_type_13blokus_cython_PieceOrientation_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13blokus_cython_PieceOrientation}, {Py_tp_doc, (void *)PyDoc_STR("A piece in a specific orientation (before placement on board).")}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_PieceOrientation}, - {Py_tp_clear, (void *)__pyx_tp_clear_10blokus_gym_4core_13blokus_cython_PieceOrientation}, - {Py_tp_methods, (void *)__pyx_methods_10blokus_gym_4core_13blokus_cython_PieceOrientation}, - {Py_tp_getset, (void *)__pyx_getsets_10blokus_gym_4core_13blokus_cython_PieceOrientation}, - {Py_tp_init, (void *)__pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_1__init__}, - {Py_tp_new, (void *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython_PieceOrientation}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13blokus_cython_PieceOrientation}, + {Py_tp_clear, (void *)__pyx_tp_clear_13blokus_cython_PieceOrientation}, + {Py_tp_methods, (void *)__pyx_methods_13blokus_cython_PieceOrientation}, + {Py_tp_getset, (void *)__pyx_getsets_13blokus_cython_PieceOrientation}, + {Py_tp_init, (void *)__pyx_pw_13blokus_cython_16PieceOrientation_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_13blokus_cython_PieceOrientation}, {0, 0}, }; -static PyType_Spec __pyx_type_10blokus_gym_4core_13blokus_cython_PieceOrientation_spec = { - "blokus_gym.core.blokus_cython.PieceOrientation", - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation), +static PyType_Spec __pyx_type_13blokus_cython_PieceOrientation_spec = { + "blokus_cython.PieceOrientation", + sizeof(struct __pyx_obj_13blokus_cython_PieceOrientation), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_10blokus_gym_4core_13blokus_cython_PieceOrientation_slots, + __pyx_type_13blokus_cython_PieceOrientation_slots, }; #else -static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_PieceOrientation = { +static PyTypeObject __pyx_type_13blokus_cython_PieceOrientation = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""PieceOrientation", /*tp_name*/ - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceOrientation), /*tp_basicsize*/ + "blokus_cython.""PieceOrientation", /*tp_name*/ + sizeof(struct __pyx_obj_13blokus_cython_PieceOrientation), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PieceOrientation, /*tp_dealloc*/ + __pyx_tp_dealloc_13blokus_cython_PieceOrientation, /*tp_dealloc*/ 0, /*tp_vectorcall_offset*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -43512,15 +44855,15 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_PieceOrientati 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ PyDoc_STR("A piece in a specific orientation (before placement on board)."), /*tp_doc*/ - __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_PieceOrientation, /*tp_traverse*/ - __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_PieceOrientation, /*tp_clear*/ + __pyx_tp_traverse_13blokus_cython_PieceOrientation, /*tp_traverse*/ + __pyx_tp_clear_13blokus_cython_PieceOrientation, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ - __pyx_methods_10blokus_gym_4core_13blokus_cython_PieceOrientation, /*tp_methods*/ + __pyx_methods_13blokus_cython_PieceOrientation, /*tp_methods*/ 0, /*tp_members*/ - __pyx_getsets_10blokus_gym_4core_13blokus_cython_PieceOrientation, /*tp_getset*/ + __pyx_getsets_13blokus_cython_PieceOrientation, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ @@ -43528,9 +44871,9 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_PieceOrientati #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif - __pyx_pw_10blokus_gym_4core_13blokus_cython_16PieceOrientation_1__init__, /*tp_init*/ + __pyx_pw_13blokus_cython_16PieceOrientation_1__init__, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_10blokus_gym_4core_13blokus_cython_PieceOrientation, /*tp_new*/ + __pyx_tp_new_13blokus_cython_PieceOrientation, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -43563,22 +44906,22 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_PieceOrientati }; #endif -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_Piece(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *p; +static PyObject *__pyx_tp_new_13blokus_cython_Piece(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_13blokus_cython_Piece *p; PyObject *o; o = __Pyx_AllocateExtensionType(t, 0); if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)o); + p = ((struct __pyx_obj_13blokus_cython_Piece *)o); p->name = ((PyObject*)Py_None); Py_INCREF(Py_None); p->squares = Py_None; Py_INCREF(Py_None); return o; } -static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Piece(PyObject *o) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)o; +static void __pyx_tp_dealloc_13blokus_cython_Piece(PyObject *o) { + struct __pyx_obj_13blokus_cython_Piece *p = (struct __pyx_obj_13blokus_cython_Piece *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Piece) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13blokus_cython_Piece) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } @@ -43600,9 +44943,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Piece(PyObject * #endif } -static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_Piece(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_13blokus_cython_Piece(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)o; + struct __pyx_obj_13blokus_cython_Piece *p = (struct __pyx_obj_13blokus_cython_Piece *)o; { e = __Pyx_call_type_traverse(o, 1, v, a); if (e) return e; @@ -43613,84 +44956,84 @@ static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_Piece(PyObject * return 0; } -static int __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_Piece(PyObject *o) { +static int __pyx_tp_clear_13blokus_cython_Piece(PyObject *o) { PyObject* tmp; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)o; + struct __pyx_obj_13blokus_cython_Piece *p = (struct __pyx_obj_13blokus_cython_Piece *)o; tmp = ((PyObject*)p->squares); p->squares = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_5Piece_size(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_4size_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_5Piece_size(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_5Piece_4size_1__get__(o); } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_5Piece_name(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_4name_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_5Piece_name(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_5Piece_4name_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_5Piece_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_5Piece_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_4name_3__set__(o, v); + return __pyx_pw_13blokus_cython_5Piece_4name_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_4name_5__del__(o); + return __pyx_pw_13blokus_cython_5Piece_4name_5__del__(o); } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_5Piece_squares(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_7squares_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_5Piece_squares(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_5Piece_7squares_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_5Piece_squares(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_5Piece_squares(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_7squares_3__set__(o, v); + return __pyx_pw_13blokus_cython_5Piece_7squares_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_7squares_5__del__(o); + return __pyx_pw_13blokus_cython_5Piece_7squares_5__del__(o); } } -static PyMethodDef __pyx_methods_10blokus_gym_4core_13blokus_cython_Piece[] = { - {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, +static PyMethodDef __pyx_methods_13blokus_cython_Piece[] = { + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Piece_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_5Piece_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {0, 0, 0, 0} }; -static struct PyGetSetDef __pyx_getsets_10blokus_gym_4core_13blokus_cython_Piece[] = { - {"size", __pyx_getprop_10blokus_gym_4core_13blokus_cython_5Piece_size, 0, 0, 0}, - {"name", __pyx_getprop_10blokus_gym_4core_13blokus_cython_5Piece_name, __pyx_setprop_10blokus_gym_4core_13blokus_cython_5Piece_name, 0, 0}, - {"squares", __pyx_getprop_10blokus_gym_4core_13blokus_cython_5Piece_squares, __pyx_setprop_10blokus_gym_4core_13blokus_cython_5Piece_squares, 0, 0}, +static struct PyGetSetDef __pyx_getsets_13blokus_cython_Piece[] = { + {"size", __pyx_getprop_13blokus_cython_5Piece_size, 0, 0, 0}, + {"name", __pyx_getprop_13blokus_cython_5Piece_name, __pyx_setprop_13blokus_cython_5Piece_name, 0, 0}, + {"squares", __pyx_getprop_13blokus_cython_5Piece_squares, __pyx_setprop_13blokus_cython_5Piece_squares, 0, 0}, {0, 0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_10blokus_gym_4core_13blokus_cython_Piece_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Piece}, +static PyType_Slot __pyx_type_13blokus_cython_Piece_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13blokus_cython_Piece}, {Py_tp_doc, (void *)PyDoc_STR("A polyomino piece defined by a set of (x, y) coordinates.")}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_Piece}, - {Py_tp_clear, (void *)__pyx_tp_clear_10blokus_gym_4core_13blokus_cython_Piece}, - {Py_tp_methods, (void *)__pyx_methods_10blokus_gym_4core_13blokus_cython_Piece}, - {Py_tp_getset, (void *)__pyx_getsets_10blokus_gym_4core_13blokus_cython_Piece}, - {Py_tp_init, (void *)__pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_1__init__}, - {Py_tp_new, (void *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython_Piece}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13blokus_cython_Piece}, + {Py_tp_clear, (void *)__pyx_tp_clear_13blokus_cython_Piece}, + {Py_tp_methods, (void *)__pyx_methods_13blokus_cython_Piece}, + {Py_tp_getset, (void *)__pyx_getsets_13blokus_cython_Piece}, + {Py_tp_init, (void *)__pyx_pw_13blokus_cython_5Piece_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_13blokus_cython_Piece}, {0, 0}, }; -static PyType_Spec __pyx_type_10blokus_gym_4core_13blokus_cython_Piece_spec = { - "blokus_gym.core.blokus_cython.Piece", - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece), +static PyType_Spec __pyx_type_13blokus_cython_Piece_spec = { + "blokus_cython.Piece", + sizeof(struct __pyx_obj_13blokus_cython_Piece), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_10blokus_gym_4core_13blokus_cython_Piece_slots, + __pyx_type_13blokus_cython_Piece_slots, }; #else -static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_Piece = { +static PyTypeObject __pyx_type_13blokus_cython_Piece = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""Piece", /*tp_name*/ - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece), /*tp_basicsize*/ + "blokus_cython.""Piece", /*tp_name*/ + sizeof(struct __pyx_obj_13blokus_cython_Piece), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_Piece, /*tp_dealloc*/ + __pyx_tp_dealloc_13blokus_cython_Piece, /*tp_dealloc*/ 0, /*tp_vectorcall_offset*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -43707,15 +45050,15 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_Piece = { 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ PyDoc_STR("A polyomino piece defined by a set of (x, y) coordinates."), /*tp_doc*/ - __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_Piece, /*tp_traverse*/ - __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_Piece, /*tp_clear*/ + __pyx_tp_traverse_13blokus_cython_Piece, /*tp_traverse*/ + __pyx_tp_clear_13blokus_cython_Piece, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ - __pyx_methods_10blokus_gym_4core_13blokus_cython_Piece, /*tp_methods*/ + __pyx_methods_13blokus_cython_Piece, /*tp_methods*/ 0, /*tp_members*/ - __pyx_getsets_10blokus_gym_4core_13blokus_cython_Piece, /*tp_getset*/ + __pyx_getsets_13blokus_cython_Piece, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ @@ -43723,9 +45066,9 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_Piece = { #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif - __pyx_pw_10blokus_gym_4core_13blokus_cython_5Piece_1__init__, /*tp_init*/ + __pyx_pw_13blokus_cython_5Piece_1__init__, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_10blokus_gym_4core_13blokus_cython_Piece, /*tp_new*/ + __pyx_tp_new_13blokus_cython_Piece, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -43758,12 +45101,12 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_Piece = { }; #endif -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_PieceSet(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *p; +static PyObject *__pyx_tp_new_13blokus_cython_PieceSet(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_13blokus_cython_PieceSet *p; PyObject *o; o = __Pyx_AllocateExtensionType(t, 0); if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)o); + p = ((struct __pyx_obj_13blokus_cython_PieceSet *)o); p->pieces = ((PyObject*)Py_None); Py_INCREF(Py_None); p->piece_names = ((PyObject*)Py_None); Py_INCREF(Py_None); p->piece_id_map = ((PyObject*)Py_None); Py_INCREF(Py_None); @@ -43771,11 +45114,11 @@ static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_PieceSet(PyType return o; } -static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PieceSet(PyObject *o) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)o; +static void __pyx_tp_dealloc_13blokus_cython_PieceSet(PyObject *o) { + struct __pyx_obj_13blokus_cython_PieceSet *p = (struct __pyx_obj_13blokus_cython_PieceSet *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PieceSet) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13blokus_cython_PieceSet) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } @@ -43799,9 +45142,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PieceSet(PyObjec #endif } -static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_PieceSet(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_13blokus_cython_PieceSet(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)o; + struct __pyx_obj_13blokus_cython_PieceSet *p = (struct __pyx_obj_13blokus_cython_PieceSet *)o; { e = __Pyx_call_type_traverse(o, 1, v, a); if (e) return e; @@ -43821,9 +45164,9 @@ static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_PieceSet(PyObjec return 0; } -static int __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_PieceSet(PyObject *o) { +static int __pyx_tp_clear_13blokus_cython_PieceSet(PyObject *o) { PyObject* tmp; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)o; + struct __pyx_obj_13blokus_cython_PieceSet *p = (struct __pyx_obj_13blokus_cython_PieceSet *)o; tmp = ((PyObject*)p->pieces); p->pieces = ((PyObject*)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); @@ -43839,69 +45182,69 @@ static int __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_PieceSet(PyObject * return 0; } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_8PieceSet_num_pieces(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_10num_pieces_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_8PieceSet_num_pieces(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_8PieceSet_10num_pieces_1__get__(o); } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_8PieceSet_pieces(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_8PieceSet_pieces(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_8PieceSet_6pieces_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_8PieceSet_pieces(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_8PieceSet_pieces(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_3__set__(o, v); + return __pyx_pw_13blokus_cython_8PieceSet_6pieces_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_6pieces_5__del__(o); + return __pyx_pw_13blokus_cython_8PieceSet_6pieces_5__del__(o); } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_8PieceSet_piece_names(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_8PieceSet_piece_names(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_8PieceSet_11piece_names_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_8PieceSet_piece_names(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_8PieceSet_piece_names(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_3__set__(o, v); + return __pyx_pw_13blokus_cython_8PieceSet_11piece_names_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_11piece_names_5__del__(o); + return __pyx_pw_13blokus_cython_8PieceSet_11piece_names_5__del__(o); } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_8PieceSet_piece_id_map(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_8PieceSet_piece_id_map(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_8PieceSet_12piece_id_map_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_8PieceSet_piece_id_map(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_8PieceSet_piece_id_map(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_3__set__(o, v); + return __pyx_pw_13blokus_cython_8PieceSet_12piece_id_map_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12piece_id_map_5__del__(o); + return __pyx_pw_13blokus_cython_8PieceSet_12piece_id_map_5__del__(o); } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_8PieceSet_orientations(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_8PieceSet_orientations(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_8PieceSet_12orientations_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_8PieceSet_orientations(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_8PieceSet_orientations(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_3__set__(o, v); + return __pyx_pw_13blokus_cython_8PieceSet_12orientations_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_12orientations_5__del__(o); + return __pyx_pw_13blokus_cython_8PieceSet_12orientations_5__del__(o); } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_8PieceSet_num_orientations(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_orientations_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_8PieceSet_num_orientations(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_8PieceSet_16num_orientations_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_8PieceSet_num_orientations(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_8PieceSet_num_orientations(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_16num_orientations_3__set__(o, v); + return __pyx_pw_13blokus_cython_8PieceSet_16num_orientations_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -43909,51 +45252,51 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_8PieceSet_num_orient } } -static PyMethodDef __pyx_methods_10blokus_gym_4core_13blokus_cython_PieceSet[] = { - {"get_orientations", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_3get_orientations, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"get_piece", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_5get_piece, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"get_piece_id", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_7get_piece_id, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, +static PyMethodDef __pyx_methods_13blokus_cython_PieceSet[] = { + {"get_orientations", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_8PieceSet_3get_orientations, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"get_piece", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_8PieceSet_5get_piece, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"get_piece_id", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_8PieceSet_7get_piece_id, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_8PieceSet_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_8PieceSet_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {0, 0, 0, 0} }; -static struct PyGetSetDef __pyx_getsets_10blokus_gym_4core_13blokus_cython_PieceSet[] = { - {"num_pieces", __pyx_getprop_10blokus_gym_4core_13blokus_cython_8PieceSet_num_pieces, 0, 0, 0}, - {"pieces", __pyx_getprop_10blokus_gym_4core_13blokus_cython_8PieceSet_pieces, __pyx_setprop_10blokus_gym_4core_13blokus_cython_8PieceSet_pieces, 0, 0}, - {"piece_names", __pyx_getprop_10blokus_gym_4core_13blokus_cython_8PieceSet_piece_names, __pyx_setprop_10blokus_gym_4core_13blokus_cython_8PieceSet_piece_names, 0, 0}, - {"piece_id_map", __pyx_getprop_10blokus_gym_4core_13blokus_cython_8PieceSet_piece_id_map, __pyx_setprop_10blokus_gym_4core_13blokus_cython_8PieceSet_piece_id_map, 0, 0}, - {"orientations", __pyx_getprop_10blokus_gym_4core_13blokus_cython_8PieceSet_orientations, __pyx_setprop_10blokus_gym_4core_13blokus_cython_8PieceSet_orientations, 0, 0}, - {"num_orientations", __pyx_getprop_10blokus_gym_4core_13blokus_cython_8PieceSet_num_orientations, __pyx_setprop_10blokus_gym_4core_13blokus_cython_8PieceSet_num_orientations, 0, 0}, +static struct PyGetSetDef __pyx_getsets_13blokus_cython_PieceSet[] = { + {"num_pieces", __pyx_getprop_13blokus_cython_8PieceSet_num_pieces, 0, 0, 0}, + {"pieces", __pyx_getprop_13blokus_cython_8PieceSet_pieces, __pyx_setprop_13blokus_cython_8PieceSet_pieces, 0, 0}, + {"piece_names", __pyx_getprop_13blokus_cython_8PieceSet_piece_names, __pyx_setprop_13blokus_cython_8PieceSet_piece_names, 0, 0}, + {"piece_id_map", __pyx_getprop_13blokus_cython_8PieceSet_piece_id_map, __pyx_setprop_13blokus_cython_8PieceSet_piece_id_map, 0, 0}, + {"orientations", __pyx_getprop_13blokus_cython_8PieceSet_orientations, __pyx_setprop_13blokus_cython_8PieceSet_orientations, 0, 0}, + {"num_orientations", __pyx_getprop_13blokus_cython_8PieceSet_num_orientations, __pyx_setprop_13blokus_cython_8PieceSet_num_orientations, 0, 0}, {0, 0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_10blokus_gym_4core_13blokus_cython_PieceSet_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PieceSet}, +static PyType_Slot __pyx_type_13blokus_cython_PieceSet_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13blokus_cython_PieceSet}, {Py_tp_doc, (void *)PyDoc_STR("A collection of pieces with pre-computed orientations.")}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_PieceSet}, - {Py_tp_clear, (void *)__pyx_tp_clear_10blokus_gym_4core_13blokus_cython_PieceSet}, - {Py_tp_methods, (void *)__pyx_methods_10blokus_gym_4core_13blokus_cython_PieceSet}, - {Py_tp_getset, (void *)__pyx_getsets_10blokus_gym_4core_13blokus_cython_PieceSet}, - {Py_tp_init, (void *)__pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_1__init__}, - {Py_tp_new, (void *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython_PieceSet}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13blokus_cython_PieceSet}, + {Py_tp_clear, (void *)__pyx_tp_clear_13blokus_cython_PieceSet}, + {Py_tp_methods, (void *)__pyx_methods_13blokus_cython_PieceSet}, + {Py_tp_getset, (void *)__pyx_getsets_13blokus_cython_PieceSet}, + {Py_tp_init, (void *)__pyx_pw_13blokus_cython_8PieceSet_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_13blokus_cython_PieceSet}, {0, 0}, }; -static PyType_Spec __pyx_type_10blokus_gym_4core_13blokus_cython_PieceSet_spec = { - "blokus_gym.core.blokus_cython.PieceSet", - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet), +static PyType_Spec __pyx_type_13blokus_cython_PieceSet_spec = { + "blokus_cython.PieceSet", + sizeof(struct __pyx_obj_13blokus_cython_PieceSet), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_10blokus_gym_4core_13blokus_cython_PieceSet_slots, + __pyx_type_13blokus_cython_PieceSet_slots, }; #else -static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_PieceSet = { +static PyTypeObject __pyx_type_13blokus_cython_PieceSet = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""PieceSet", /*tp_name*/ - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet), /*tp_basicsize*/ + "blokus_cython.""PieceSet", /*tp_name*/ + sizeof(struct __pyx_obj_13blokus_cython_PieceSet), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PieceSet, /*tp_dealloc*/ + __pyx_tp_dealloc_13blokus_cython_PieceSet, /*tp_dealloc*/ 0, /*tp_vectorcall_offset*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -43970,15 +45313,15 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_PieceSet = { 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ PyDoc_STR("A collection of pieces with pre-computed orientations."), /*tp_doc*/ - __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_PieceSet, /*tp_traverse*/ - __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_PieceSet, /*tp_clear*/ + __pyx_tp_traverse_13blokus_cython_PieceSet, /*tp_traverse*/ + __pyx_tp_clear_13blokus_cython_PieceSet, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ - __pyx_methods_10blokus_gym_4core_13blokus_cython_PieceSet, /*tp_methods*/ + __pyx_methods_13blokus_cython_PieceSet, /*tp_methods*/ 0, /*tp_members*/ - __pyx_getsets_10blokus_gym_4core_13blokus_cython_PieceSet, /*tp_getset*/ + __pyx_getsets_13blokus_cython_PieceSet, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ @@ -43986,9 +45329,9 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_PieceSet = { #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif - __pyx_pw_10blokus_gym_4core_13blokus_cython_8PieceSet_1__init__, /*tp_init*/ + __pyx_pw_13blokus_cython_8PieceSet_1__init__, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_10blokus_gym_4core_13blokus_cython_PieceSet, /*tp_new*/ + __pyx_tp_new_13blokus_cython_PieceSet, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -44021,22 +45364,22 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_PieceSet = { }; #endif -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_PlayerState(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *p; +static PyObject *__pyx_tp_new_13blokus_cython_PlayerState(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_13blokus_cython_PlayerState *p; PyObject *o; o = __Pyx_AllocateExtensionType(t, 0); if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)o); + p = ((struct __pyx_obj_13blokus_cython_PlayerState *)o); p->available_pieces = ((PyObject*)Py_None); Py_INCREF(Py_None); p->corners = ((PyObject*)Py_None); Py_INCREF(Py_None); return o; } -static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PlayerState(PyObject *o) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)o; +static void __pyx_tp_dealloc_13blokus_cython_PlayerState(PyObject *o) { + struct __pyx_obj_13blokus_cython_PlayerState *p = (struct __pyx_obj_13blokus_cython_PlayerState *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PlayerState) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13blokus_cython_PlayerState) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } @@ -44058,9 +45401,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PlayerState(PyOb #endif } -static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_PlayerState(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_13blokus_cython_PlayerState(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)o; + struct __pyx_obj_13blokus_cython_PlayerState *p = (struct __pyx_obj_13blokus_cython_PlayerState *)o; { e = __Pyx_call_type_traverse(o, 1, v, a); if (e) return e; @@ -44074,9 +45417,9 @@ static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_PlayerState(PyOb return 0; } -static int __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_PlayerState(PyObject *o) { +static int __pyx_tp_clear_13blokus_cython_PlayerState(PyObject *o) { PyObject* tmp; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState *)o; + struct __pyx_obj_13blokus_cython_PlayerState *p = (struct __pyx_obj_13blokus_cython_PlayerState *)o; tmp = ((PyObject*)p->available_pieces); p->available_pieces = ((PyObject*)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); @@ -44086,13 +45429,13 @@ static int __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_PlayerState(PyObjec return 0; } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_11PlayerState_idx(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_11PlayerState_idx(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_11PlayerState_3idx_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_idx(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_11PlayerState_idx(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_3idx_3__set__(o, v); + return __pyx_pw_13blokus_cython_11PlayerState_3idx_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -44100,39 +45443,39 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_idx(Py } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_11PlayerState_available_pieces(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_11PlayerState_available_pieces(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_11PlayerState_16available_pieces_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_available_pieces(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_11PlayerState_available_pieces(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_3__set__(o, v); + return __pyx_pw_13blokus_cython_11PlayerState_16available_pieces_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_16available_pieces_5__del__(o); + return __pyx_pw_13blokus_cython_11PlayerState_16available_pieces_5__del__(o); } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_11PlayerState_corners(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_11PlayerState_corners(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_11PlayerState_7corners_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_corners(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_11PlayerState_corners(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_3__set__(o, v); + return __pyx_pw_13blokus_cython_11PlayerState_7corners_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_7corners_5__del__(o); + return __pyx_pw_13blokus_cython_11PlayerState_7corners_5__del__(o); } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_11PlayerState_score(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_5score_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_11PlayerState_score(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_11PlayerState_5score_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_score(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_11PlayerState_score(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_5score_3__set__(o, v); + return __pyx_pw_13blokus_cython_11PlayerState_5score_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -44140,13 +45483,13 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_score( } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_11PlayerState_has_started(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_11has_started_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_11PlayerState_has_started(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_11PlayerState_11has_started_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_has_started(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_11PlayerState_has_started(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_11has_started_3__set__(o, v); + return __pyx_pw_13blokus_cython_11PlayerState_11has_started_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -44154,13 +45497,13 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_has_st } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_11PlayerState_can_move(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_move_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_11PlayerState_can_move(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_11PlayerState_8can_move_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_can_move(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_11PlayerState_can_move(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_8can_move_3__set__(o, v); + return __pyx_pw_13blokus_cython_11PlayerState_8can_move_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -44168,48 +45511,48 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_can_mo } } -static PyMethodDef __pyx_methods_10blokus_gym_4core_13blokus_cython_PlayerState[] = { - {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, +static PyMethodDef __pyx_methods_13blokus_cython_PlayerState[] = { + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_11PlayerState_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_11PlayerState_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {0, 0, 0, 0} }; -static struct PyGetSetDef __pyx_getsets_10blokus_gym_4core_13blokus_cython_PlayerState[] = { - {"idx", __pyx_getprop_10blokus_gym_4core_13blokus_cython_11PlayerState_idx, __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_idx, 0, 0}, - {"available_pieces", __pyx_getprop_10blokus_gym_4core_13blokus_cython_11PlayerState_available_pieces, __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_available_pieces, 0, 0}, - {"corners", __pyx_getprop_10blokus_gym_4core_13blokus_cython_11PlayerState_corners, __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_corners, 0, 0}, - {"score", __pyx_getprop_10blokus_gym_4core_13blokus_cython_11PlayerState_score, __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_score, 0, 0}, - {"has_started", __pyx_getprop_10blokus_gym_4core_13blokus_cython_11PlayerState_has_started, __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_has_started, 0, 0}, - {"can_move", __pyx_getprop_10blokus_gym_4core_13blokus_cython_11PlayerState_can_move, __pyx_setprop_10blokus_gym_4core_13blokus_cython_11PlayerState_can_move, 0, 0}, +static struct PyGetSetDef __pyx_getsets_13blokus_cython_PlayerState[] = { + {"idx", __pyx_getprop_13blokus_cython_11PlayerState_idx, __pyx_setprop_13blokus_cython_11PlayerState_idx, 0, 0}, + {"available_pieces", __pyx_getprop_13blokus_cython_11PlayerState_available_pieces, __pyx_setprop_13blokus_cython_11PlayerState_available_pieces, 0, 0}, + {"corners", __pyx_getprop_13blokus_cython_11PlayerState_corners, __pyx_setprop_13blokus_cython_11PlayerState_corners, 0, 0}, + {"score", __pyx_getprop_13blokus_cython_11PlayerState_score, __pyx_setprop_13blokus_cython_11PlayerState_score, 0, 0}, + {"has_started", __pyx_getprop_13blokus_cython_11PlayerState_has_started, __pyx_setprop_13blokus_cython_11PlayerState_has_started, 0, 0}, + {"can_move", __pyx_getprop_13blokus_cython_11PlayerState_can_move, __pyx_setprop_13blokus_cython_11PlayerState_can_move, 0, 0}, {0, 0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_10blokus_gym_4core_13blokus_cython_PlayerState_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PlayerState}, +static PyType_Slot __pyx_type_13blokus_cython_PlayerState_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13blokus_cython_PlayerState}, {Py_tp_doc, (void *)PyDoc_STR("State for a single player.")}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_PlayerState}, - {Py_tp_clear, (void *)__pyx_tp_clear_10blokus_gym_4core_13blokus_cython_PlayerState}, - {Py_tp_methods, (void *)__pyx_methods_10blokus_gym_4core_13blokus_cython_PlayerState}, - {Py_tp_getset, (void *)__pyx_getsets_10blokus_gym_4core_13blokus_cython_PlayerState}, - {Py_tp_init, (void *)__pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_1__init__}, - {Py_tp_new, (void *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython_PlayerState}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13blokus_cython_PlayerState}, + {Py_tp_clear, (void *)__pyx_tp_clear_13blokus_cython_PlayerState}, + {Py_tp_methods, (void *)__pyx_methods_13blokus_cython_PlayerState}, + {Py_tp_getset, (void *)__pyx_getsets_13blokus_cython_PlayerState}, + {Py_tp_init, (void *)__pyx_pw_13blokus_cython_11PlayerState_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_13blokus_cython_PlayerState}, {0, 0}, }; -static PyType_Spec __pyx_type_10blokus_gym_4core_13blokus_cython_PlayerState_spec = { - "blokus_gym.core.blokus_cython.PlayerState", - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState), +static PyType_Spec __pyx_type_13blokus_cython_PlayerState_spec = { + "blokus_cython.PlayerState", + sizeof(struct __pyx_obj_13blokus_cython_PlayerState), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_10blokus_gym_4core_13blokus_cython_PlayerState_slots, + __pyx_type_13blokus_cython_PlayerState_slots, }; #else -static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_PlayerState = { +static PyTypeObject __pyx_type_13blokus_cython_PlayerState = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""PlayerState", /*tp_name*/ - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PlayerState), /*tp_basicsize*/ + "blokus_cython.""PlayerState", /*tp_name*/ + sizeof(struct __pyx_obj_13blokus_cython_PlayerState), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_PlayerState, /*tp_dealloc*/ + __pyx_tp_dealloc_13blokus_cython_PlayerState, /*tp_dealloc*/ 0, /*tp_vectorcall_offset*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -44226,15 +45569,15 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_PlayerState = 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ PyDoc_STR("State for a single player."), /*tp_doc*/ - __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_PlayerState, /*tp_traverse*/ - __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_PlayerState, /*tp_clear*/ + __pyx_tp_traverse_13blokus_cython_PlayerState, /*tp_traverse*/ + __pyx_tp_clear_13blokus_cython_PlayerState, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ - __pyx_methods_10blokus_gym_4core_13blokus_cython_PlayerState, /*tp_methods*/ + __pyx_methods_13blokus_cython_PlayerState, /*tp_methods*/ 0, /*tp_members*/ - __pyx_getsets_10blokus_gym_4core_13blokus_cython_PlayerState, /*tp_getset*/ + __pyx_getsets_13blokus_cython_PlayerState, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ @@ -44242,9 +45585,9 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_PlayerState = #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif - __pyx_pw_10blokus_gym_4core_13blokus_cython_11PlayerState_1__init__, /*tp_init*/ + __pyx_pw_13blokus_cython_11PlayerState_1__init__, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_10blokus_gym_4core_13blokus_cython_PlayerState, /*tp_new*/ + __pyx_tp_new_13blokus_cython_PlayerState, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -44276,16 +45619,16 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_PlayerState = #endif }; #endif -static struct __pyx_vtabstruct_10blokus_gym_4core_13blokus_cython_BlokusGame __pyx_vtable_10blokus_gym_4core_13blokus_cython_BlokusGame; +static struct __pyx_vtabstruct_13blokus_cython_BlokusGame __pyx_vtable_13blokus_cython_BlokusGame; -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_BlokusGame(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *p; +static PyObject *__pyx_tp_new_13blokus_cython_BlokusGame(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_13blokus_cython_BlokusGame *p; PyObject *o; o = __Pyx_AllocateExtensionType(t, 0); if (unlikely(!o)) return 0; - p = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)o); - p->__pyx_vtab = __pyx_vtabptr_10blokus_gym_4core_13blokus_cython_BlokusGame; - p->piece_set = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)Py_None); Py_INCREF(Py_None); + p = ((struct __pyx_obj_13blokus_cython_BlokusGame *)o); + p->__pyx_vtab = __pyx_vtabptr_13blokus_cython_BlokusGame; + p->piece_set = ((struct __pyx_obj_13blokus_cython_PieceSet *)Py_None); Py_INCREF(Py_None); p->board = Py_None; Py_INCREF(Py_None); p->players = ((PyObject*)Py_None); Py_INCREF(Py_None); p->_action_moves = ((PyObject*)Py_None); Py_INCREF(Py_None); @@ -44295,11 +45638,11 @@ static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython_BlokusGame(PyTy return o; } -static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_BlokusGame(PyObject *o) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)o; +static void __pyx_tp_dealloc_13blokus_cython_BlokusGame(PyObject *o) { + struct __pyx_obj_13blokus_cython_BlokusGame *p = (struct __pyx_obj_13blokus_cython_BlokusGame *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_BlokusGame) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13blokus_cython_BlokusGame) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } @@ -44326,9 +45669,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_BlokusGame(PyObj #endif } -static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_BlokusGame(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_13blokus_cython_BlokusGame(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)o; + struct __pyx_obj_13blokus_cython_BlokusGame *p = (struct __pyx_obj_13blokus_cython_BlokusGame *)o; { e = __Pyx_call_type_traverse(o, 1, v, a); if (e) return e; @@ -44357,11 +45700,11 @@ static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_BlokusGame(PyObj return 0; } -static int __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_BlokusGame(PyObject *o) { +static int __pyx_tp_clear_13blokus_cython_BlokusGame(PyObject *o) { PyObject* tmp; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *)o; + struct __pyx_obj_13blokus_cython_BlokusGame *p = (struct __pyx_obj_13blokus_cython_BlokusGame *)o; tmp = ((PyObject*)p->piece_set); - p->piece_set = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_PieceSet *)Py_None); Py_INCREF(Py_None); + p->piece_set = ((struct __pyx_obj_13blokus_cython_PieceSet *)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); tmp = ((PyObject*)p->board); p->board = Py_None; Py_INCREF(Py_None); @@ -44384,17 +45727,17 @@ static int __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_BlokusGame(PyObject return 0; } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_num_actions(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_actions_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_10BlokusGame_num_actions(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_10BlokusGame_11num_actions_1__get__(o); } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_board_size(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_10board_size_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_10BlokusGame_board_size(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_10BlokusGame_10board_size_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_board_size(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_10BlokusGame_board_size(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_10board_size_3__set__(o, v); + return __pyx_pw_13blokus_cython_10BlokusGame_10board_size_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -44402,26 +45745,26 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_board_s } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_piece_set(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_10BlokusGame_piece_set(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_10BlokusGame_9piece_set_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_piece_set(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_10BlokusGame_piece_set(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_3__set__(o, v); + return __pyx_pw_13blokus_cython_10BlokusGame_9piece_set_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9piece_set_5__del__(o); + return __pyx_pw_13blokus_cython_10BlokusGame_9piece_set_5__del__(o); } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_num_players(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_players_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_10BlokusGame_num_players(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_10BlokusGame_11num_players_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_num_players(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_10BlokusGame_num_players(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11num_players_3__set__(o, v); + return __pyx_pw_13blokus_cython_10BlokusGame_11num_players_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -44429,13 +45772,13 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_num_pla } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_corner_rule(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corner_rule_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_10BlokusGame_corner_rule(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_10BlokusGame_11corner_rule_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_corner_rule(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_10BlokusGame_corner_rule(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_11corner_rule_3__set__(o, v); + return __pyx_pw_13blokus_cython_10BlokusGame_11corner_rule_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -44443,39 +45786,39 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_corner_ } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_board(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_10BlokusGame_board(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_10BlokusGame_5board_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_board(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_10BlokusGame_board(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_3__set__(o, v); + return __pyx_pw_13blokus_cython_10BlokusGame_5board_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_5board_5__del__(o); + return __pyx_pw_13blokus_cython_10BlokusGame_5board_5__del__(o); } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_players(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_10BlokusGame_players(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_10BlokusGame_7players_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_players(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_10BlokusGame_players(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_3__set__(o, v); + return __pyx_pw_13blokus_cython_10BlokusGame_7players_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_7players_5__del__(o); + return __pyx_pw_13blokus_cython_10BlokusGame_7players_5__del__(o); } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_current_player(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_14current_player_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_10BlokusGame_current_player(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_10BlokusGame_14current_player_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_current_player(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_10BlokusGame_current_player(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_14current_player_3__set__(o, v); + return __pyx_pw_13blokus_cython_10BlokusGame_14current_player_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -44483,13 +45826,13 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_current } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_rounds(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_6rounds_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_10BlokusGame_rounds(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_10BlokusGame_6rounds_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_rounds(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_10BlokusGame_rounds(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_6rounds_3__set__(o, v); + return __pyx_pw_13blokus_cython_10BlokusGame_6rounds_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -44497,13 +45840,13 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_rounds( } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_game_over(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_over_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_10BlokusGame_game_over(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_10BlokusGame_9game_over_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_game_over(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_10BlokusGame_game_over(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_9game_over_3__set__(o, v); + return __pyx_pw_13blokus_cython_10BlokusGame_9game_over_3__set__(o, v); } else { PyErr_SetString(PyExc_NotImplementedError, "__del__"); @@ -44511,117 +45854,120 @@ static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_game_ov } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__action_moves(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_10BlokusGame__action_moves(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_10BlokusGame_13_action_moves_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__action_moves(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_10BlokusGame__action_moves(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_3__set__(o, v); + return __pyx_pw_13blokus_cython_10BlokusGame_13_action_moves_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_13_action_moves_5__del__(o); + return __pyx_pw_13blokus_cython_10BlokusGame_13_action_moves_5__del__(o); } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__move_to_action(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_10BlokusGame__move_to_action(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_10BlokusGame_15_move_to_action_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__move_to_action(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_10BlokusGame__move_to_action(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_3__set__(o, v); + return __pyx_pw_13blokus_cython_10BlokusGame_15_move_to_action_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_15_move_to_action_5__del__(o); + return __pyx_pw_13blokus_cython_10BlokusGame_15_move_to_action_5__del__(o); } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__actions_by_piece(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_10BlokusGame__actions_by_piece(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_10BlokusGame_17_actions_by_piece_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__actions_by_piece(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_10BlokusGame__actions_by_piece(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_3__set__(o, v); + return __pyx_pw_13blokus_cython_10BlokusGame_17_actions_by_piece_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_actions_by_piece_5__del__(o); + return __pyx_pw_13blokus_cython_10BlokusGame_17_actions_by_piece_5__del__(o); } } -static PyObject *__pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__starting_corners(PyObject *o, CYTHON_UNUSED void *x) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_1__get__(o); +static PyObject *__pyx_getprop_13blokus_cython_10BlokusGame__starting_corners(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13blokus_cython_10BlokusGame_17_starting_corners_1__get__(o); } -static int __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__starting_corners(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { +static int __pyx_setprop_13blokus_cython_10BlokusGame__starting_corners(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) { if (v) { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_3__set__(o, v); + return __pyx_pw_13blokus_cython_10BlokusGame_17_starting_corners_3__set__(o, v); } else { - return __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17_starting_corners_5__del__(o); + return __pyx_pw_13blokus_cython_10BlokusGame_17_starting_corners_5__del__(o); } } -static PyMethodDef __pyx_methods_10blokus_gym_4core_13blokus_cython_BlokusGame[] = { - {"get_move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_3get_move, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"get_action", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_5get_action, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"reset", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_7reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_6reset}, - {"apply_move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_15apply_move, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_14apply_move}, - {"play_move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_17play_move, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_16play_move}, - {"next_player", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_19next_player, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_18next_player}, - {"_check_game_over", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_21_check_game_over, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_20_check_game_over}, - {"get_state", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_23get_state, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_22get_state}, - {"copy", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_25copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_10blokus_gym_4core_13blokus_cython_10BlokusGame_24copy}, - {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_27__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, - {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_29__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, +static PyMethodDef __pyx_methods_13blokus_cython_BlokusGame[] = { + {"get_move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_3get_move, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"get_action", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_5get_action, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"reset", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_7reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_6reset}, + {"apply_move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_19apply_move, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_18apply_move}, + {"play_move", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_21play_move, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_20play_move}, + {"next_player", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_23next_player, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_22next_player}, + {"_check_game_over", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_25_check_game_over, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_24_check_game_over}, + {"is_game_over", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_27is_game_over, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_26is_game_over}, + {"get_scores", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_29get_scores, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_28get_scores}, + {"get_winners", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_31get_winners, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_30get_winners}, + {"get_state", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_33get_state, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_32get_state}, + {"copy", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_35copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_13blokus_cython_10BlokusGame_34copy}, + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_37__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13blokus_cython_10BlokusGame_39__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, {0, 0, 0, 0} }; -static struct PyGetSetDef __pyx_getsets_10blokus_gym_4core_13blokus_cython_BlokusGame[] = { - {"num_actions", __pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_num_actions, 0, 0, 0}, - {"board_size", __pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_board_size, __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_board_size, 0, 0}, - {"piece_set", __pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_piece_set, __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_piece_set, 0, 0}, - {"num_players", __pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_num_players, __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_num_players, 0, 0}, - {"corner_rule", __pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_corner_rule, __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_corner_rule, 0, 0}, - {"board", __pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_board, __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_board, 0, 0}, - {"players", __pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_players, __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_players, 0, 0}, - {"current_player", __pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_current_player, __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_current_player, 0, 0}, - {"rounds", __pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_rounds, __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_rounds, 0, 0}, - {"game_over", __pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_game_over, __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame_game_over, 0, 0}, - {"_action_moves", __pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__action_moves, __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__action_moves, 0, 0}, - {"_move_to_action", __pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__move_to_action, __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__move_to_action, 0, 0}, - {"_actions_by_piece", __pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__actions_by_piece, __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__actions_by_piece, 0, 0}, - {"_starting_corners", __pyx_getprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__starting_corners, __pyx_setprop_10blokus_gym_4core_13blokus_cython_10BlokusGame__starting_corners, 0, 0}, +static struct PyGetSetDef __pyx_getsets_13blokus_cython_BlokusGame[] = { + {"num_actions", __pyx_getprop_13blokus_cython_10BlokusGame_num_actions, 0, 0, 0}, + {"board_size", __pyx_getprop_13blokus_cython_10BlokusGame_board_size, __pyx_setprop_13blokus_cython_10BlokusGame_board_size, 0, 0}, + {"piece_set", __pyx_getprop_13blokus_cython_10BlokusGame_piece_set, __pyx_setprop_13blokus_cython_10BlokusGame_piece_set, 0, 0}, + {"num_players", __pyx_getprop_13blokus_cython_10BlokusGame_num_players, __pyx_setprop_13blokus_cython_10BlokusGame_num_players, 0, 0}, + {"corner_rule", __pyx_getprop_13blokus_cython_10BlokusGame_corner_rule, __pyx_setprop_13blokus_cython_10BlokusGame_corner_rule, 0, 0}, + {"board", __pyx_getprop_13blokus_cython_10BlokusGame_board, __pyx_setprop_13blokus_cython_10BlokusGame_board, 0, 0}, + {"players", __pyx_getprop_13blokus_cython_10BlokusGame_players, __pyx_setprop_13blokus_cython_10BlokusGame_players, 0, 0}, + {"current_player", __pyx_getprop_13blokus_cython_10BlokusGame_current_player, __pyx_setprop_13blokus_cython_10BlokusGame_current_player, 0, 0}, + {"rounds", __pyx_getprop_13blokus_cython_10BlokusGame_rounds, __pyx_setprop_13blokus_cython_10BlokusGame_rounds, 0, 0}, + {"game_over", __pyx_getprop_13blokus_cython_10BlokusGame_game_over, __pyx_setprop_13blokus_cython_10BlokusGame_game_over, 0, 0}, + {"_action_moves", __pyx_getprop_13blokus_cython_10BlokusGame__action_moves, __pyx_setprop_13blokus_cython_10BlokusGame__action_moves, 0, 0}, + {"_move_to_action", __pyx_getprop_13blokus_cython_10BlokusGame__move_to_action, __pyx_setprop_13blokus_cython_10BlokusGame__move_to_action, 0, 0}, + {"_actions_by_piece", __pyx_getprop_13blokus_cython_10BlokusGame__actions_by_piece, __pyx_setprop_13blokus_cython_10BlokusGame__actions_by_piece, 0, 0}, + {"_starting_corners", __pyx_getprop_13blokus_cython_10BlokusGame__starting_corners, __pyx_setprop_13blokus_cython_10BlokusGame__starting_corners, 0, 0}, {0, 0, 0, 0, 0} }; #if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_10blokus_gym_4core_13blokus_cython_BlokusGame_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_BlokusGame}, +static PyType_Slot __pyx_type_13blokus_cython_BlokusGame_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13blokus_cython_BlokusGame}, {Py_tp_doc, (void *)PyDoc_STR("Cython-optimized Blokus game engine.")}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_BlokusGame}, - {Py_tp_clear, (void *)__pyx_tp_clear_10blokus_gym_4core_13blokus_cython_BlokusGame}, - {Py_tp_methods, (void *)__pyx_methods_10blokus_gym_4core_13blokus_cython_BlokusGame}, - {Py_tp_getset, (void *)__pyx_getsets_10blokus_gym_4core_13blokus_cython_BlokusGame}, - {Py_tp_init, (void *)__pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_1__init__}, - {Py_tp_new, (void *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython_BlokusGame}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13blokus_cython_BlokusGame}, + {Py_tp_clear, (void *)__pyx_tp_clear_13blokus_cython_BlokusGame}, + {Py_tp_methods, (void *)__pyx_methods_13blokus_cython_BlokusGame}, + {Py_tp_getset, (void *)__pyx_getsets_13blokus_cython_BlokusGame}, + {Py_tp_init, (void *)__pyx_pw_13blokus_cython_10BlokusGame_1__init__}, + {Py_tp_new, (void *)__pyx_tp_new_13blokus_cython_BlokusGame}, {0, 0}, }; -static PyType_Spec __pyx_type_10blokus_gym_4core_13blokus_cython_BlokusGame_spec = { - "blokus_gym.core.blokus_cython.BlokusGame", - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame), +static PyType_Spec __pyx_type_13blokus_cython_BlokusGame_spec = { + "blokus_cython.BlokusGame", + sizeof(struct __pyx_obj_13blokus_cython_BlokusGame), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, - __pyx_type_10blokus_gym_4core_13blokus_cython_BlokusGame_slots, + __pyx_type_13blokus_cython_BlokusGame_slots, }; #else -static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_BlokusGame = { +static PyTypeObject __pyx_type_13blokus_cython_BlokusGame = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""BlokusGame", /*tp_name*/ - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame), /*tp_basicsize*/ + "blokus_cython.""BlokusGame", /*tp_name*/ + sizeof(struct __pyx_obj_13blokus_cython_BlokusGame), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython_BlokusGame, /*tp_dealloc*/ + __pyx_tp_dealloc_13blokus_cython_BlokusGame, /*tp_dealloc*/ 0, /*tp_vectorcall_offset*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -44638,15 +45984,15 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_BlokusGame = { 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ PyDoc_STR("Cython-optimized Blokus game engine."), /*tp_doc*/ - __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython_BlokusGame, /*tp_traverse*/ - __pyx_tp_clear_10blokus_gym_4core_13blokus_cython_BlokusGame, /*tp_clear*/ + __pyx_tp_traverse_13blokus_cython_BlokusGame, /*tp_traverse*/ + __pyx_tp_clear_13blokus_cython_BlokusGame, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ - __pyx_methods_10blokus_gym_4core_13blokus_cython_BlokusGame, /*tp_methods*/ + __pyx_methods_13blokus_cython_BlokusGame, /*tp_methods*/ 0, /*tp_members*/ - __pyx_getsets_10blokus_gym_4core_13blokus_cython_BlokusGame, /*tp_getset*/ + __pyx_getsets_13blokus_cython_BlokusGame, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ @@ -44654,9 +46000,9 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_BlokusGame = { #if !CYTHON_USE_TYPE_SPECS 0, /*tp_dictoffset*/ #endif - __pyx_pw_10blokus_gym_4core_13blokus_cython_10BlokusGame_1__init__, /*tp_init*/ + __pyx_pw_13blokus_cython_10BlokusGame_1__init__, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_10blokus_gym_4core_13blokus_cython_BlokusGame, /*tp_new*/ + __pyx_tp_new_13blokus_cython_BlokusGame, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -44689,16 +46035,16 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython_BlokusGame = { }; #endif -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +static PyObject *__pyx_tp_new_13blokus_cython___pyx_scope_struct__genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_USE_FREELISTS - if (likely((int)(__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr)))) + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct__genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr)))) { - o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr[--__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr]; + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_13blokus_cython___pyx_scope_struct__genexpr[--__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct__genexpr]; #if CYTHON_USE_TYPE_SPECS Py_DECREF(Py_TYPE(o)); #endif - memset(o, 0, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr)); + memset(o, 0, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr)); #if CYTHON_COMPILING_IN_LIMITED_API (void) PyObject_Init(o, t); #else @@ -44714,11 +46060,11 @@ static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_str return o; } -static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr(PyObject *o) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr *)o; +static void __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct__genexpr(PyObject *o) { + struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr *p = (struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct__genexpr) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } @@ -44728,9 +46074,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_stru Py_CLEAR(p->__pyx_v_o); Py_CLEAR(p->__pyx_t_0); #if CYTHON_USE_FREELISTS - if (likely((int)(__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr)))) + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct__genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr)))) { - __pyx_mstate_global->__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr[__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr++] = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr *)o); + __pyx_mstate_global->__pyx_freelist_13blokus_cython___pyx_scope_struct__genexpr[__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct__genexpr++] = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr *)o); } else #endif { @@ -44749,9 +46095,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_stru } } -static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_13blokus_cython___pyx_scope_struct__genexpr(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr *)o; + struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr *p = (struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr *)o; { e = __Pyx_call_type_traverse(o, 1, v, a); if (e) return e; @@ -44768,27 +46114,27 @@ static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_stru return 0; } #if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr}, - {Py_tp_new, (void *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr}, +static PyType_Slot __pyx_type_13blokus_cython___pyx_scope_struct__genexpr_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13blokus_cython___pyx_scope_struct__genexpr}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13blokus_cython___pyx_scope_struct__genexpr}, + {Py_tp_new, (void *)__pyx_tp_new_13blokus_cython___pyx_scope_struct__genexpr}, {0, 0}, }; -static PyType_Spec __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr_spec = { - "blokus_gym.core.blokus_cython.__pyx_scope_struct__genexpr", - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr), +static PyType_Spec __pyx_type_13blokus_cython___pyx_scope_struct__genexpr_spec = { + "blokus_cython.__pyx_scope_struct__genexpr", + sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, - __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr_slots, + __pyx_type_13blokus_cython___pyx_scope_struct__genexpr_slots, }; #else -static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr = { +static PyTypeObject __pyx_type_13blokus_cython___pyx_scope_struct__genexpr = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""__pyx_scope_struct__genexpr", /*tp_name*/ - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr), /*tp_basicsize*/ + "blokus_cython.""__pyx_scope_struct__genexpr", /*tp_name*/ + sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct__genexpr), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr, /*tp_dealloc*/ + __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct__genexpr, /*tp_dealloc*/ 0, /*tp_vectorcall_offset*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -44805,7 +46151,7 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ - __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr, /*tp_traverse*/ + __pyx_tp_traverse_13blokus_cython___pyx_scope_struct__genexpr, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ @@ -44823,7 +46169,7 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st #endif 0, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr, /*tp_new*/ + __pyx_tp_new_13blokus_cython___pyx_scope_struct__genexpr, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -44856,16 +46202,16 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st }; #endif -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +static PyObject *__pyx_tp_new_13blokus_cython___pyx_scope_struct_1_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_USE_FREELISTS - if (likely((int)(__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr)))) + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_1_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr)))) { - o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr[--__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr]; + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_13blokus_cython___pyx_scope_struct_1_genexpr[--__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_1_genexpr]; #if CYTHON_USE_TYPE_SPECS Py_DECREF(Py_TYPE(o)); #endif - memset(o, 0, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr)); + memset(o, 0, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr)); #if CYTHON_COMPILING_IN_LIMITED_API (void) PyObject_Init(o, t); #else @@ -44881,11 +46227,11 @@ static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_str return o; } -static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr(PyObject *o) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr *)o; +static void __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_1_genexpr(PyObject *o) { + struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_1_genexpr) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } @@ -44896,9 +46242,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_stru Py_CLEAR(p->__pyx_v_x); Py_CLEAR(p->__pyx_t_0); #if CYTHON_USE_FREELISTS - if (likely((int)(__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr)))) + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_1_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr)))) { - __pyx_mstate_global->__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr[__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr++] = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr *)o); + __pyx_mstate_global->__pyx_freelist_13blokus_cython___pyx_scope_struct_1_genexpr[__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_1_genexpr++] = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr *)o); } else #endif { @@ -44917,9 +46263,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_stru } } -static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_13blokus_cython___pyx_scope_struct_1_genexpr(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr *)o; + struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr *)o; { e = __Pyx_call_type_traverse(o, 1, v, a); if (e) return e; @@ -44939,27 +46285,27 @@ static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_stru return 0; } #if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr}, - {Py_tp_new, (void *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr}, +static PyType_Slot __pyx_type_13blokus_cython___pyx_scope_struct_1_genexpr_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_1_genexpr}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13blokus_cython___pyx_scope_struct_1_genexpr}, + {Py_tp_new, (void *)__pyx_tp_new_13blokus_cython___pyx_scope_struct_1_genexpr}, {0, 0}, }; -static PyType_Spec __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr_spec = { - "blokus_gym.core.blokus_cython.__pyx_scope_struct_1_genexpr", - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr), +static PyType_Spec __pyx_type_13blokus_cython___pyx_scope_struct_1_genexpr_spec = { + "blokus_cython.__pyx_scope_struct_1_genexpr", + sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, - __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr_slots, + __pyx_type_13blokus_cython___pyx_scope_struct_1_genexpr_slots, }; #else -static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr = { +static PyTypeObject __pyx_type_13blokus_cython___pyx_scope_struct_1_genexpr = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""__pyx_scope_struct_1_genexpr", /*tp_name*/ - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr), /*tp_basicsize*/ + "blokus_cython.""__pyx_scope_struct_1_genexpr", /*tp_name*/ + sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_1_genexpr), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr, /*tp_dealloc*/ + __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_1_genexpr, /*tp_dealloc*/ 0, /*tp_vectorcall_offset*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -44976,7 +46322,7 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ - __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr, /*tp_traverse*/ + __pyx_tp_traverse_13blokus_cython___pyx_scope_struct_1_genexpr, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ @@ -44994,7 +46340,7 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st #endif 0, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr, /*tp_new*/ + __pyx_tp_new_13blokus_cython___pyx_scope_struct_1_genexpr, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -45027,16 +46373,16 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st }; #endif -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +static PyObject *__pyx_tp_new_13blokus_cython___pyx_scope_struct_2_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_USE_FREELISTS - if (likely((int)(__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr)))) + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_2_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr)))) { - o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr[--__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr]; + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_13blokus_cython___pyx_scope_struct_2_genexpr[--__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_2_genexpr]; #if CYTHON_USE_TYPE_SPECS Py_DECREF(Py_TYPE(o)); #endif - memset(o, 0, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr)); + memset(o, 0, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr)); #if CYTHON_COMPILING_IN_LIMITED_API (void) PyObject_Init(o, t); #else @@ -45052,11 +46398,11 @@ static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_str return o; } -static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr(PyObject *o) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr *)o; +static void __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_2_genexpr(PyObject *o) { + struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_2_genexpr) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } @@ -45067,9 +46413,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_stru Py_CLEAR(p->__pyx_v_y); Py_CLEAR(p->__pyx_t_0); #if CYTHON_USE_FREELISTS - if (likely((int)(__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr)))) + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_2_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr)))) { - __pyx_mstate_global->__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr[__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr++] = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr *)o); + __pyx_mstate_global->__pyx_freelist_13blokus_cython___pyx_scope_struct_2_genexpr[__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_2_genexpr++] = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr *)o); } else #endif { @@ -45088,9 +46434,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_stru } } -static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_13blokus_cython___pyx_scope_struct_2_genexpr(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr *)o; + struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr *)o; { e = __Pyx_call_type_traverse(o, 1, v, a); if (e) return e; @@ -45110,27 +46456,27 @@ static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_stru return 0; } #if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr}, - {Py_tp_new, (void *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr}, +static PyType_Slot __pyx_type_13blokus_cython___pyx_scope_struct_2_genexpr_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_2_genexpr}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13blokus_cython___pyx_scope_struct_2_genexpr}, + {Py_tp_new, (void *)__pyx_tp_new_13blokus_cython___pyx_scope_struct_2_genexpr}, {0, 0}, }; -static PyType_Spec __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr_spec = { - "blokus_gym.core.blokus_cython.__pyx_scope_struct_2_genexpr", - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr), +static PyType_Spec __pyx_type_13blokus_cython___pyx_scope_struct_2_genexpr_spec = { + "blokus_cython.__pyx_scope_struct_2_genexpr", + sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, - __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr_slots, + __pyx_type_13blokus_cython___pyx_scope_struct_2_genexpr_slots, }; #else -static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr = { +static PyTypeObject __pyx_type_13blokus_cython___pyx_scope_struct_2_genexpr = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""__pyx_scope_struct_2_genexpr", /*tp_name*/ - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr), /*tp_basicsize*/ + "blokus_cython.""__pyx_scope_struct_2_genexpr", /*tp_name*/ + sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_2_genexpr), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr, /*tp_dealloc*/ + __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_2_genexpr, /*tp_dealloc*/ 0, /*tp_vectorcall_offset*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -45147,7 +46493,7 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ - __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr, /*tp_traverse*/ + __pyx_tp_traverse_13blokus_cython___pyx_scope_struct_2_genexpr, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ @@ -45165,7 +46511,7 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st #endif 0, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr, /*tp_new*/ + __pyx_tp_new_13blokus_cython___pyx_scope_struct_2_genexpr, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -45198,16 +46544,16 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st }; #endif -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +static PyObject *__pyx_tp_new_13blokus_cython___pyx_scope_struct_3_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_USE_FREELISTS - if (likely((int)(__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr)))) + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_3_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr)))) { - o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr[--__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr]; + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_13blokus_cython___pyx_scope_struct_3_genexpr[--__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_3_genexpr]; #if CYTHON_USE_TYPE_SPECS Py_DECREF(Py_TYPE(o)); #endif - memset(o, 0, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr)); + memset(o, 0, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr)); #if CYTHON_COMPILING_IN_LIMITED_API (void) PyObject_Init(o, t); #else @@ -45223,11 +46569,11 @@ static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_str return o; } -static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr(PyObject *o) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr *)o; +static void __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_3_genexpr(PyObject *o) { + struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr *p = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_3_genexpr) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } @@ -45238,9 +46584,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_stru Py_CLEAR(p->__pyx_v_x); Py_CLEAR(p->__pyx_t_0); #if CYTHON_USE_FREELISTS - if (likely((int)(__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr)))) + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_3_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr)))) { - __pyx_mstate_global->__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr[__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr++] = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr *)o); + __pyx_mstate_global->__pyx_freelist_13blokus_cython___pyx_scope_struct_3_genexpr[__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_3_genexpr++] = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr *)o); } else #endif { @@ -45259,9 +46605,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_stru } } -static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_13blokus_cython___pyx_scope_struct_3_genexpr(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr *)o; + struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr *p = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr *)o; { e = __Pyx_call_type_traverse(o, 1, v, a); if (e) return e; @@ -45281,27 +46627,27 @@ static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_stru return 0; } #if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr}, - {Py_tp_new, (void *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr}, +static PyType_Slot __pyx_type_13blokus_cython___pyx_scope_struct_3_genexpr_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_3_genexpr}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13blokus_cython___pyx_scope_struct_3_genexpr}, + {Py_tp_new, (void *)__pyx_tp_new_13blokus_cython___pyx_scope_struct_3_genexpr}, {0, 0}, }; -static PyType_Spec __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr_spec = { - "blokus_gym.core.blokus_cython.__pyx_scope_struct_3_genexpr", - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr), +static PyType_Spec __pyx_type_13blokus_cython___pyx_scope_struct_3_genexpr_spec = { + "blokus_cython.__pyx_scope_struct_3_genexpr", + sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, - __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr_slots, + __pyx_type_13blokus_cython___pyx_scope_struct_3_genexpr_slots, }; #else -static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr = { +static PyTypeObject __pyx_type_13blokus_cython___pyx_scope_struct_3_genexpr = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""__pyx_scope_struct_3_genexpr", /*tp_name*/ - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr), /*tp_basicsize*/ + "blokus_cython.""__pyx_scope_struct_3_genexpr", /*tp_name*/ + sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_3_genexpr), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr, /*tp_dealloc*/ + __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_3_genexpr, /*tp_dealloc*/ 0, /*tp_vectorcall_offset*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -45318,7 +46664,7 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ - __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr, /*tp_traverse*/ + __pyx_tp_traverse_13blokus_cython___pyx_scope_struct_3_genexpr, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ @@ -45336,7 +46682,7 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st #endif 0, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr, /*tp_new*/ + __pyx_tp_new_13blokus_cython___pyx_scope_struct_3_genexpr, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -45369,16 +46715,16 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st }; #endif -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +static PyObject *__pyx_tp_new_13blokus_cython___pyx_scope_struct_4_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_USE_FREELISTS - if (likely((int)(__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr)))) + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_4_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr)))) { - o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr[--__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr]; + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_13blokus_cython___pyx_scope_struct_4_genexpr[--__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_4_genexpr]; #if CYTHON_USE_TYPE_SPECS Py_DECREF(Py_TYPE(o)); #endif - memset(o, 0, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr)); + memset(o, 0, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr)); #if CYTHON_COMPILING_IN_LIMITED_API (void) PyObject_Init(o, t); #else @@ -45394,11 +46740,11 @@ static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_str return o; } -static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr(PyObject *o) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr *)o; +static void __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_4_genexpr(PyObject *o) { + struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr *p = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_4_genexpr) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } @@ -45409,9 +46755,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_stru Py_CLEAR(p->__pyx_v_y); Py_CLEAR(p->__pyx_t_0); #if CYTHON_USE_FREELISTS - if (likely((int)(__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr)))) + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_4_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr)))) { - __pyx_mstate_global->__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr[__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr++] = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr *)o); + __pyx_mstate_global->__pyx_freelist_13blokus_cython___pyx_scope_struct_4_genexpr[__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_4_genexpr++] = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr *)o); } else #endif { @@ -45430,9 +46776,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_stru } } -static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_13blokus_cython___pyx_scope_struct_4_genexpr(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr *)o; + struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr *p = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr *)o; { e = __Pyx_call_type_traverse(o, 1, v, a); if (e) return e; @@ -45452,27 +46798,27 @@ static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_stru return 0; } #if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr}, - {Py_tp_new, (void *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr}, +static PyType_Slot __pyx_type_13blokus_cython___pyx_scope_struct_4_genexpr_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_4_genexpr}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13blokus_cython___pyx_scope_struct_4_genexpr}, + {Py_tp_new, (void *)__pyx_tp_new_13blokus_cython___pyx_scope_struct_4_genexpr}, {0, 0}, }; -static PyType_Spec __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr_spec = { - "blokus_gym.core.blokus_cython.__pyx_scope_struct_4_genexpr", - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr), +static PyType_Spec __pyx_type_13blokus_cython___pyx_scope_struct_4_genexpr_spec = { + "blokus_cython.__pyx_scope_struct_4_genexpr", + sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, - __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr_slots, + __pyx_type_13blokus_cython___pyx_scope_struct_4_genexpr_slots, }; #else -static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr = { +static PyTypeObject __pyx_type_13blokus_cython___pyx_scope_struct_4_genexpr = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""__pyx_scope_struct_4_genexpr", /*tp_name*/ - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr), /*tp_basicsize*/ + "blokus_cython.""__pyx_scope_struct_4_genexpr", /*tp_name*/ + sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_4_genexpr), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr, /*tp_dealloc*/ + __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_4_genexpr, /*tp_dealloc*/ 0, /*tp_vectorcall_offset*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -45489,7 +46835,7 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ - __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr, /*tp_traverse*/ + __pyx_tp_traverse_13blokus_cython___pyx_scope_struct_4_genexpr, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ @@ -45507,7 +46853,7 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st #endif 0, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr, /*tp_new*/ + __pyx_tp_new_13blokus_cython___pyx_scope_struct_4_genexpr, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -45540,16 +46886,16 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st }; #endif -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +static PyObject *__pyx_tp_new_13blokus_cython___pyx_scope_struct_5_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_USE_FREELISTS - if (likely((int)(__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr)))) + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_5_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr)))) { - o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr[--__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr]; + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_13blokus_cython___pyx_scope_struct_5_genexpr[--__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_5_genexpr]; #if CYTHON_USE_TYPE_SPECS Py_DECREF(Py_TYPE(o)); #endif - memset(o, 0, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr)); + memset(o, 0, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr)); #if CYTHON_COMPILING_IN_LIMITED_API (void) PyObject_Init(o, t); #else @@ -45565,11 +46911,11 @@ static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_str return o; } -static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr(PyObject *o) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr *)o; +static void __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_5_genexpr(PyObject *o) { + struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_5_genexpr) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } @@ -45578,9 +46924,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_stru Py_CLEAR(p->__pyx_genexpr_arg_0); Py_CLEAR(p->__pyx_v_p); #if CYTHON_USE_FREELISTS - if (likely((int)(__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr)))) + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_5_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr)))) { - __pyx_mstate_global->__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr[__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr++] = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr *)o); + __pyx_mstate_global->__pyx_freelist_13blokus_cython___pyx_scope_struct_5_genexpr[__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_5_genexpr++] = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr *)o); } else #endif { @@ -45599,9 +46945,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_stru } } -static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_13blokus_cython___pyx_scope_struct_5_genexpr(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr *)o; + struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr *)o; { e = __Pyx_call_type_traverse(o, 1, v, a); if (e) return e; @@ -45615,27 +46961,27 @@ static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_stru return 0; } #if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr}, - {Py_tp_new, (void *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr}, +static PyType_Slot __pyx_type_13blokus_cython___pyx_scope_struct_5_genexpr_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_5_genexpr}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13blokus_cython___pyx_scope_struct_5_genexpr}, + {Py_tp_new, (void *)__pyx_tp_new_13blokus_cython___pyx_scope_struct_5_genexpr}, {0, 0}, }; -static PyType_Spec __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr_spec = { - "blokus_gym.core.blokus_cython.__pyx_scope_struct_5_genexpr", - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr), +static PyType_Spec __pyx_type_13blokus_cython___pyx_scope_struct_5_genexpr_spec = { + "blokus_cython.__pyx_scope_struct_5_genexpr", + sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, - __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr_slots, + __pyx_type_13blokus_cython___pyx_scope_struct_5_genexpr_slots, }; #else -static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr = { +static PyTypeObject __pyx_type_13blokus_cython___pyx_scope_struct_5_genexpr = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""__pyx_scope_struct_5_genexpr", /*tp_name*/ - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr), /*tp_basicsize*/ + "blokus_cython.""__pyx_scope_struct_5_genexpr", /*tp_name*/ + sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_5_genexpr), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr, /*tp_dealloc*/ + __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_5_genexpr, /*tp_dealloc*/ 0, /*tp_vectorcall_offset*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -45652,7 +46998,7 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ - __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr, /*tp_traverse*/ + __pyx_tp_traverse_13blokus_cython___pyx_scope_struct_5_genexpr, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ @@ -45670,7 +47016,7 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st #endif 0, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr, /*tp_new*/ + __pyx_tp_new_13blokus_cython___pyx_scope_struct_5_genexpr, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -45703,16 +47049,16 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st }; #endif -static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +static PyObject *__pyx_tp_new_13blokus_cython___pyx_scope_struct_6_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; #if CYTHON_USE_FREELISTS - if (likely((int)(__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr)))) + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_6_genexpr > 0) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(t, __pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr)))) { - o = (PyObject*)__pyx_mstate_global->__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr[--__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr]; + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_13blokus_cython___pyx_scope_struct_6_genexpr[--__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_6_genexpr]; #if CYTHON_USE_TYPE_SPECS Py_DECREF(Py_TYPE(o)); #endif - memset(o, 0, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr)); + memset(o, 0, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr)); #if CYTHON_COMPILING_IN_LIMITED_API (void) PyObject_Init(o, t); #else @@ -45728,11 +47074,11 @@ static PyObject *__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_str return o; } -static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr(PyObject *o) { - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr *)o; +static void __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_6_genexpr(PyObject *o) { + struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { - if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_6_genexpr) { if (PyObject_CallFinalizerFromDealloc(o)) return; } } @@ -45741,9 +47087,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_stru Py_CLEAR(p->__pyx_genexpr_arg_0); Py_CLEAR(p->__pyx_v_p); #if CYTHON_USE_FREELISTS - if (likely((int)(__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr, sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr)))) + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_6_genexpr < 8) & __PYX_CHECK_FINAL_TYPE_FOR_FREELISTS(Py_TYPE(o), __pyx_mstate_global->__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr, sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr)))) { - __pyx_mstate_global->__pyx_freelist_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr[__pyx_mstate_global->__pyx_freecount_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr++] = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr *)o); + __pyx_mstate_global->__pyx_freelist_13blokus_cython___pyx_scope_struct_6_genexpr[__pyx_mstate_global->__pyx_freecount_13blokus_cython___pyx_scope_struct_6_genexpr++] = ((struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr *)o); } else #endif { @@ -45762,9 +47108,9 @@ static void __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_stru } } -static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr(PyObject *o, visitproc v, void *a) { +static int __pyx_tp_traverse_13blokus_cython___pyx_scope_struct_6_genexpr(PyObject *o, visitproc v, void *a) { int e; - struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr *)o; + struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr *)o; { e = __Pyx_call_type_traverse(o, 1, v, a); if (e) return e; @@ -45778,27 +47124,27 @@ static int __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_stru return 0; } #if CYTHON_USE_TYPE_SPECS -static PyType_Slot __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr_slots[] = { - {Py_tp_dealloc, (void *)__pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr}, - {Py_tp_traverse, (void *)__pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr}, - {Py_tp_new, (void *)__pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr}, +static PyType_Slot __pyx_type_13blokus_cython___pyx_scope_struct_6_genexpr_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_6_genexpr}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13blokus_cython___pyx_scope_struct_6_genexpr}, + {Py_tp_new, (void *)__pyx_tp_new_13blokus_cython___pyx_scope_struct_6_genexpr}, {0, 0}, }; -static PyType_Spec __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr_spec = { - "blokus_gym.core.blokus_cython.__pyx_scope_struct_6_genexpr", - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr), +static PyType_Spec __pyx_type_13blokus_cython___pyx_scope_struct_6_genexpr_spec = { + "blokus_cython.__pyx_scope_struct_6_genexpr", + sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, - __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr_slots, + __pyx_type_13blokus_cython___pyx_scope_struct_6_genexpr_slots, }; #else -static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr = { +static PyTypeObject __pyx_type_13blokus_cython___pyx_scope_struct_6_genexpr = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""__pyx_scope_struct_6_genexpr", /*tp_name*/ - sizeof(struct __pyx_obj_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr), /*tp_basicsize*/ + "blokus_cython.""__pyx_scope_struct_6_genexpr", /*tp_name*/ + sizeof(struct __pyx_obj_13blokus_cython___pyx_scope_struct_6_genexpr), /*tp_basicsize*/ 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr, /*tp_dealloc*/ + __pyx_tp_dealloc_13blokus_cython___pyx_scope_struct_6_genexpr, /*tp_dealloc*/ 0, /*tp_vectorcall_offset*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -45815,7 +47161,7 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ - __pyx_tp_traverse_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr, /*tp_traverse*/ + __pyx_tp_traverse_13blokus_cython___pyx_scope_struct_6_genexpr, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ @@ -45833,7 +47179,7 @@ static PyTypeObject __pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_st #endif 0, /*tp_init*/ 0, /*tp_alloc*/ - __pyx_tp_new_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr, /*tp_new*/ + __pyx_tp_new_13blokus_cython___pyx_scope_struct_6_genexpr, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ @@ -45991,7 +47337,7 @@ static PyType_Slot __pyx_type___pyx_array_slots[] = { {0, 0}, }; static PyType_Spec __pyx_type___pyx_array_spec = { - "blokus_gym.core.blokus_cython.array", + "blokus_cython.array", sizeof(struct __pyx_array_obj), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_SEQUENCE, @@ -46025,7 +47371,7 @@ static PyBufferProcs __pyx_tp_as_buffer_array = { static PyTypeObject __pyx_type___pyx_array = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""array", /*tp_name*/ + "blokus_cython.""array", /*tp_name*/ sizeof(struct __pyx_array_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_array, /*tp_dealloc*/ @@ -46170,7 +47516,7 @@ static PyType_Slot __pyx_type___pyx_MemviewEnum_slots[] = { {0, 0}, }; static PyType_Spec __pyx_type___pyx_MemviewEnum_spec = { - "blokus_gym.core.blokus_cython.Enum", + "blokus_cython.Enum", sizeof(struct __pyx_MemviewEnum_obj), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, @@ -46180,7 +47526,7 @@ static PyType_Spec __pyx_type___pyx_MemviewEnum_spec = { static PyTypeObject __pyx_type___pyx_MemviewEnum = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""Enum", /*tp_name*/ + "blokus_cython.""Enum", /*tp_name*/ sizeof(struct __pyx_MemviewEnum_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_Enum, /*tp_dealloc*/ @@ -46447,7 +47793,7 @@ static PyType_Slot __pyx_type___pyx_memoryview_slots[] = { {0, 0}, }; static PyType_Spec __pyx_type___pyx_memoryview_spec = { - "blokus_gym.core.blokus_cython.memoryview", + "blokus_cython.memoryview", sizeof(struct __pyx_memoryview_obj), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, @@ -46481,7 +47827,7 @@ static PyBufferProcs __pyx_tp_as_buffer_memoryview = { static PyTypeObject __pyx_type___pyx_memoryview = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""memoryview", /*tp_name*/ + "blokus_cython.""memoryview", /*tp_name*/ sizeof(struct __pyx_memoryview_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_memoryview, /*tp_dealloc*/ @@ -46624,7 +47970,7 @@ static PyType_Slot __pyx_type___pyx_memoryviewslice_slots[] = { {0, 0}, }; static PyType_Spec __pyx_type___pyx_memoryviewslice_spec = { - "blokus_gym.core.blokus_cython._memoryviewslice", + "blokus_cython._memoryviewslice", sizeof(struct __pyx_memoryviewslice_obj), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_SEQUENCE, @@ -46634,7 +47980,7 @@ static PyType_Spec __pyx_type___pyx_memoryviewslice_spec = { static PyTypeObject __pyx_type___pyx_memoryviewslice = { PyVarObject_HEAD_INIT(0, 0) - "blokus_gym.core.blokus_cython.""_memoryviewslice", /*tp_name*/ + "blokus_cython.""_memoryviewslice", /*tp_name*/ sizeof(struct __pyx_memoryviewslice_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc__memoryviewslice, /*tp_dealloc*/ @@ -46736,49 +48082,49 @@ static int __Pyx_modinit_global_init_code(__pyx_mstatetype *__pyx_mstate) { CYTHON_UNUSED_VAR(__pyx_mstate); __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); /*--- Global init code ---*/ - __pyx_v_10blokus_gym_4core_13blokus_cython__I1_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__I2_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__I3_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__V3_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__I4_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__L4_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__T4_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__S4_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__O4_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__I5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__L5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__Y5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__N5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__T5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__U5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__V5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__W5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__Z5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__F5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__X5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__P5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__I1 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__I2 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__I3 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__V3 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__I4 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__L4 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__T4 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__S4 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__O4 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__I5 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__L5 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__Y5 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__N5 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__T5 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__U5 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__V5 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__W5 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__Z5 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__F5 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__X5 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython__P5 = ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); - __pyx_v_10blokus_gym_4core_13blokus_cython_STANDARD_PIECES = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__I1_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__I2_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__I3_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__V3_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__I4_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__L4_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__T4_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__S4_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__O4_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__I5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__L5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__Y5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__N5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__T5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__U5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__V5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__W5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__Z5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__F5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__X5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__P5_squares = ((PyObject*)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__I1 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__I2 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__I3 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__V3 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__I4 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__L4 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__T4 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__S4 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__O4 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__I5 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__L5 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__Y5 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__N5 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__T5 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__U5 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__V5 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__W5 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__Z5 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__F5 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__X5 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython__P5 = ((struct __pyx_obj_13blokus_cython_Piece *)Py_None); Py_INCREF(Py_None); + __pyx_v_13blokus_cython_STANDARD_PIECES = ((PyObject*)Py_None); Py_INCREF(Py_None); __pyx_collections_abc_Sequence = Py_None; Py_INCREF(Py_None); generic = Py_None; Py_INCREF(Py_None); strided = Py_None; Py_INCREF(Py_None); @@ -46816,297 +48162,299 @@ static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); /*--- Type init code ---*/ - __pyx_vtabptr_10blokus_gym_4core_13blokus_cython_Board = &__pyx_vtable_10blokus_gym_4core_13blokus_cython_Board; - __pyx_vtable_10blokus_gym_4core_13blokus_cython_Board.is_cell_empty = (int (*)(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Board *, int, int))__pyx_f_10blokus_gym_4core_13blokus_cython_5Board_is_cell_empty; + __pyx_vtabptr_13blokus_cython_Board = &__pyx_vtable_13blokus_cython_Board; + __pyx_vtable_13blokus_cython_Board.is_cell_empty = (int (*)(struct __pyx_obj_13blokus_cython_Board *, int, int))__pyx_f_13blokus_cython_5Board_is_cell_empty; #if CYTHON_USE_TYPE_SPECS - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10blokus_gym_4core_13blokus_cython_Board_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board)) __PYX_ERR(0, 17, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10blokus_gym_4core_13blokus_cython_Board_spec, __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board) < (0)) __PYX_ERR(0, 17, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_13blokus_cython_Board = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13blokus_cython_Board_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13blokus_cython_Board)) __PYX_ERR(0, 17, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13blokus_cython_Board_spec, __pyx_mstate->__pyx_ptype_13blokus_cython_Board) < (0)) __PYX_ERR(0, 17, __pyx_L1_error) #else - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board = &__pyx_type_10blokus_gym_4core_13blokus_cython_Board; + __pyx_mstate->__pyx_ptype_13blokus_cython_Board = &__pyx_type_13blokus_cython_Board; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board) < (0)) __PYX_ERR(0, 17, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13blokus_cython_Board) < (0)) __PYX_ERR(0, 17, __pyx_L1_error) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board); + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_13blokus_cython_Board); #endif #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board->tp_dictoffset && __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board->tp_getattro = PyObject_GenericGetAttr; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13blokus_cython_Board->tp_dictoffset && __pyx_mstate->__pyx_ptype_13blokus_cython_Board->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13blokus_cython_Board->tp_getattro = PyObject_GenericGetAttr; } #endif - if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_vtabptr_10blokus_gym_4core_13blokus_cython_Board) < (0)) __PYX_ERR(0, 17, __pyx_L1_error) - if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board) < (0)) __PYX_ERR(0, 17, __pyx_L1_error) - if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Board, (PyObject *) __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board) < (0)) __PYX_ERR(0, 17, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board) < (0)) __PYX_ERR(0, 17, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_13blokus_cython_Board, __pyx_vtabptr_13blokus_cython_Board) < (0)) __PYX_ERR(0, 17, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_13blokus_cython_Board) < (0)) __PYX_ERR(0, 17, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Board, (PyObject *) __pyx_mstate->__pyx_ptype_13blokus_cython_Board) < (0)) __PYX_ERR(0, 17, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_13blokus_cython_Board) < (0)) __PYX_ERR(0, 17, __pyx_L1_error) #if CYTHON_USE_TYPE_SPECS - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10blokus_gym_4core_13blokus_cython_Move_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move)) __PYX_ERR(0, 171, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10blokus_gym_4core_13blokus_cython_Move_spec, __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move) < (0)) __PYX_ERR(0, 171, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_13blokus_cython_Move = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13blokus_cython_Move_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13blokus_cython_Move)) __PYX_ERR(0, 171, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13blokus_cython_Move_spec, __pyx_mstate->__pyx_ptype_13blokus_cython_Move) < (0)) __PYX_ERR(0, 171, __pyx_L1_error) #else - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move = &__pyx_type_10blokus_gym_4core_13blokus_cython_Move; + __pyx_mstate->__pyx_ptype_13blokus_cython_Move = &__pyx_type_13blokus_cython_Move; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move) < (0)) __PYX_ERR(0, 171, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13blokus_cython_Move) < (0)) __PYX_ERR(0, 171, __pyx_L1_error) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move); + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_13blokus_cython_Move); #endif #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move->tp_dictoffset && __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move->tp_getattro = PyObject_GenericGetAttr; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13blokus_cython_Move->tp_dictoffset && __pyx_mstate->__pyx_ptype_13blokus_cython_Move->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13blokus_cython_Move->tp_getattro = PyObject_GenericGetAttr; } #endif - if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Move, (PyObject *) __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move) < (0)) __PYX_ERR(0, 171, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move) < (0)) __PYX_ERR(0, 171, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Move, (PyObject *) __pyx_mstate->__pyx_ptype_13blokus_cython_Move) < (0)) __PYX_ERR(0, 171, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_13blokus_cython_Move) < (0)) __PYX_ERR(0, 171, __pyx_L1_error) #if CYTHON_USE_TYPE_SPECS - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10blokus_gym_4core_13blokus_cython_PieceOrientation_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation)) __PYX_ERR(0, 189, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10blokus_gym_4core_13blokus_cython_PieceOrientation_spec, __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation) < (0)) __PYX_ERR(0, 189, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_13blokus_cython_PieceOrientation = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13blokus_cython_PieceOrientation_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13blokus_cython_PieceOrientation)) __PYX_ERR(0, 189, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13blokus_cython_PieceOrientation_spec, __pyx_mstate->__pyx_ptype_13blokus_cython_PieceOrientation) < (0)) __PYX_ERR(0, 189, __pyx_L1_error) #else - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation = &__pyx_type_10blokus_gym_4core_13blokus_cython_PieceOrientation; + __pyx_mstate->__pyx_ptype_13blokus_cython_PieceOrientation = &__pyx_type_13blokus_cython_PieceOrientation; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation) < (0)) __PYX_ERR(0, 189, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13blokus_cython_PieceOrientation) < (0)) __PYX_ERR(0, 189, __pyx_L1_error) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation); + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_13blokus_cython_PieceOrientation); #endif #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation->tp_dictoffset && __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation->tp_getattro = PyObject_GenericGetAttr; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13blokus_cython_PieceOrientation->tp_dictoffset && __pyx_mstate->__pyx_ptype_13blokus_cython_PieceOrientation->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13blokus_cython_PieceOrientation->tp_getattro = PyObject_GenericGetAttr; } #endif - if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_PieceOrientation, (PyObject *) __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation) < (0)) __PYX_ERR(0, 189, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation) < (0)) __PYX_ERR(0, 189, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_PieceOrientation, (PyObject *) __pyx_mstate->__pyx_ptype_13blokus_cython_PieceOrientation) < (0)) __PYX_ERR(0, 189, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_13blokus_cython_PieceOrientation) < (0)) __PYX_ERR(0, 189, __pyx_L1_error) #if CYTHON_USE_TYPE_SPECS - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10blokus_gym_4core_13blokus_cython_Piece_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece)) __PYX_ERR(0, 204, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10blokus_gym_4core_13blokus_cython_Piece_spec, __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece) < (0)) __PYX_ERR(0, 204, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_13blokus_cython_Piece = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13blokus_cython_Piece_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13blokus_cython_Piece)) __PYX_ERR(0, 204, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13blokus_cython_Piece_spec, __pyx_mstate->__pyx_ptype_13blokus_cython_Piece) < (0)) __PYX_ERR(0, 204, __pyx_L1_error) #else - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece = &__pyx_type_10blokus_gym_4core_13blokus_cython_Piece; + __pyx_mstate->__pyx_ptype_13blokus_cython_Piece = &__pyx_type_13blokus_cython_Piece; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece) < (0)) __PYX_ERR(0, 204, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13blokus_cython_Piece) < (0)) __PYX_ERR(0, 204, __pyx_L1_error) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece); + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_13blokus_cython_Piece); #endif #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece->tp_dictoffset && __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece->tp_getattro = PyObject_GenericGetAttr; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13blokus_cython_Piece->tp_dictoffset && __pyx_mstate->__pyx_ptype_13blokus_cython_Piece->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13blokus_cython_Piece->tp_getattro = PyObject_GenericGetAttr; } #endif - if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Piece, (PyObject *) __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece) < (0)) __PYX_ERR(0, 204, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece) < (0)) __PYX_ERR(0, 204, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Piece, (PyObject *) __pyx_mstate->__pyx_ptype_13blokus_cython_Piece) < (0)) __PYX_ERR(0, 204, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_13blokus_cython_Piece) < (0)) __PYX_ERR(0, 204, __pyx_L1_error) #if CYTHON_USE_TYPE_SPECS - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10blokus_gym_4core_13blokus_cython_PieceSet_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet)) __PYX_ERR(0, 219, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10blokus_gym_4core_13blokus_cython_PieceSet_spec, __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet) < (0)) __PYX_ERR(0, 219, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_13blokus_cython_PieceSet = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13blokus_cython_PieceSet_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13blokus_cython_PieceSet)) __PYX_ERR(0, 219, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13blokus_cython_PieceSet_spec, __pyx_mstate->__pyx_ptype_13blokus_cython_PieceSet) < (0)) __PYX_ERR(0, 219, __pyx_L1_error) #else - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet = &__pyx_type_10blokus_gym_4core_13blokus_cython_PieceSet; + __pyx_mstate->__pyx_ptype_13blokus_cython_PieceSet = &__pyx_type_13blokus_cython_PieceSet; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet) < (0)) __PYX_ERR(0, 219, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13blokus_cython_PieceSet) < (0)) __PYX_ERR(0, 219, __pyx_L1_error) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet); + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_13blokus_cython_PieceSet); #endif #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet->tp_dictoffset && __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet->tp_getattro = PyObject_GenericGetAttr; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13blokus_cython_PieceSet->tp_dictoffset && __pyx_mstate->__pyx_ptype_13blokus_cython_PieceSet->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13blokus_cython_PieceSet->tp_getattro = PyObject_GenericGetAttr; } #endif - if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_PieceSet, (PyObject *) __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet) < (0)) __PYX_ERR(0, 219, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet) < (0)) __PYX_ERR(0, 219, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_PieceSet, (PyObject *) __pyx_mstate->__pyx_ptype_13blokus_cython_PieceSet) < (0)) __PYX_ERR(0, 219, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_13blokus_cython_PieceSet) < (0)) __PYX_ERR(0, 219, __pyx_L1_error) #if CYTHON_USE_TYPE_SPECS - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10blokus_gym_4core_13blokus_cython_PlayerState_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState)) __PYX_ERR(0, 373, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10blokus_gym_4core_13blokus_cython_PlayerState_spec, __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState) < (0)) __PYX_ERR(0, 373, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_13blokus_cython_PlayerState = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13blokus_cython_PlayerState_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13blokus_cython_PlayerState)) __PYX_ERR(0, 378, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13blokus_cython_PlayerState_spec, __pyx_mstate->__pyx_ptype_13blokus_cython_PlayerState) < (0)) __PYX_ERR(0, 378, __pyx_L1_error) #else - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState = &__pyx_type_10blokus_gym_4core_13blokus_cython_PlayerState; + __pyx_mstate->__pyx_ptype_13blokus_cython_PlayerState = &__pyx_type_13blokus_cython_PlayerState; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState) < (0)) __PYX_ERR(0, 373, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13blokus_cython_PlayerState) < (0)) __PYX_ERR(0, 378, __pyx_L1_error) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState); + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_13blokus_cython_PlayerState); #endif #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState->tp_dictoffset && __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState->tp_getattro = PyObject_GenericGetAttr; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13blokus_cython_PlayerState->tp_dictoffset && __pyx_mstate->__pyx_ptype_13blokus_cython_PlayerState->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13blokus_cython_PlayerState->tp_getattro = PyObject_GenericGetAttr; } #endif - if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_PlayerState, (PyObject *) __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState) < (0)) __PYX_ERR(0, 373, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState) < (0)) __PYX_ERR(0, 373, __pyx_L1_error) - __pyx_vtabptr_10blokus_gym_4core_13blokus_cython_BlokusGame = &__pyx_vtable_10blokus_gym_4core_13blokus_cython_BlokusGame; - __pyx_vtable_10blokus_gym_4core_13blokus_cython_BlokusGame._generate_action_space = (void (*)(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *))__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__generate_action_space; - __pyx_vtable_10blokus_gym_4core_13blokus_cython_BlokusGame._get_placed_squares = (PyObject *(*)(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *))__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_placed_squares; - __pyx_vtable_10blokus_gym_4core_13blokus_cython_BlokusGame._get_placed_corners = (PyObject *(*)(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *))__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame__get_placed_corners; - __pyx_vtable_10blokus_gym_4core_13blokus_cython_BlokusGame.valid_move = (int (*)(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *, int, struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Move *, int __pyx_skip_dispatch))__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_valid_move; - __pyx_vtable_10blokus_gym_4core_13blokus_cython_BlokusGame.get_valid_actions = (PyObject *(*)(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *, int, int __pyx_skip_dispatch))__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_get_valid_actions; - __pyx_vtable_10blokus_gym_4core_13blokus_cython_BlokusGame.has_valid_moves = (int (*)(struct __pyx_obj_10blokus_gym_4core_13blokus_cython_BlokusGame *, int, int __pyx_skip_dispatch))__pyx_f_10blokus_gym_4core_13blokus_cython_10BlokusGame_has_valid_moves; + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_PlayerState, (PyObject *) __pyx_mstate->__pyx_ptype_13blokus_cython_PlayerState) < (0)) __PYX_ERR(0, 378, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_13blokus_cython_PlayerState) < (0)) __PYX_ERR(0, 378, __pyx_L1_error) + __pyx_vtabptr_13blokus_cython_BlokusGame = &__pyx_vtable_13blokus_cython_BlokusGame; + __pyx_vtable_13blokus_cython_BlokusGame._generate_action_space = (void (*)(struct __pyx_obj_13blokus_cython_BlokusGame *))__pyx_f_13blokus_cython_10BlokusGame__generate_action_space; + __pyx_vtable_13blokus_cython_BlokusGame._get_placed_squares = (PyObject *(*)(struct __pyx_obj_13blokus_cython_BlokusGame *, struct __pyx_obj_13blokus_cython_Move *))__pyx_f_13blokus_cython_10BlokusGame__get_placed_squares; + __pyx_vtable_13blokus_cython_BlokusGame.get_placed_squares = (PyObject *(*)(struct __pyx_obj_13blokus_cython_BlokusGame *, struct __pyx_obj_13blokus_cython_Move *, int __pyx_skip_dispatch))__pyx_f_13blokus_cython_10BlokusGame_get_placed_squares; + __pyx_vtable_13blokus_cython_BlokusGame._get_placed_corners = (PyObject *(*)(struct __pyx_obj_13blokus_cython_BlokusGame *, struct __pyx_obj_13blokus_cython_Move *))__pyx_f_13blokus_cython_10BlokusGame__get_placed_corners; + __pyx_vtable_13blokus_cython_BlokusGame.get_placed_corners = (PyObject *(*)(struct __pyx_obj_13blokus_cython_BlokusGame *, struct __pyx_obj_13blokus_cython_Move *, int __pyx_skip_dispatch))__pyx_f_13blokus_cython_10BlokusGame_get_placed_corners; + __pyx_vtable_13blokus_cython_BlokusGame.valid_move = (int (*)(struct __pyx_obj_13blokus_cython_BlokusGame *, int, struct __pyx_obj_13blokus_cython_Move *, int __pyx_skip_dispatch))__pyx_f_13blokus_cython_10BlokusGame_valid_move; + __pyx_vtable_13blokus_cython_BlokusGame.get_valid_actions = (PyObject *(*)(struct __pyx_obj_13blokus_cython_BlokusGame *, int, int __pyx_skip_dispatch))__pyx_f_13blokus_cython_10BlokusGame_get_valid_actions; + __pyx_vtable_13blokus_cython_BlokusGame.has_valid_moves = (int (*)(struct __pyx_obj_13blokus_cython_BlokusGame *, int, int __pyx_skip_dispatch))__pyx_f_13blokus_cython_10BlokusGame_has_valid_moves; #if CYTHON_USE_TYPE_SPECS - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10blokus_gym_4core_13blokus_cython_BlokusGame_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame)) __PYX_ERR(0, 396, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10blokus_gym_4core_13blokus_cython_BlokusGame_spec, __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame) < (0)) __PYX_ERR(0, 396, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_13blokus_cython_BlokusGame = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13blokus_cython_BlokusGame_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13blokus_cython_BlokusGame)) __PYX_ERR(0, 401, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13blokus_cython_BlokusGame_spec, __pyx_mstate->__pyx_ptype_13blokus_cython_BlokusGame) < (0)) __PYX_ERR(0, 401, __pyx_L1_error) #else - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame = &__pyx_type_10blokus_gym_4core_13blokus_cython_BlokusGame; + __pyx_mstate->__pyx_ptype_13blokus_cython_BlokusGame = &__pyx_type_13blokus_cython_BlokusGame; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame) < (0)) __PYX_ERR(0, 396, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13blokus_cython_BlokusGame) < (0)) __PYX_ERR(0, 401, __pyx_L1_error) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame); + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_13blokus_cython_BlokusGame); #endif #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame->tp_dictoffset && __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame->tp_getattro = PyObject_GenericGetAttr; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13blokus_cython_BlokusGame->tp_dictoffset && __pyx_mstate->__pyx_ptype_13blokus_cython_BlokusGame->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13blokus_cython_BlokusGame->tp_getattro = PyObject_GenericGetAttr; } #endif - if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_vtabptr_10blokus_gym_4core_13blokus_cython_BlokusGame) < (0)) __PYX_ERR(0, 396, __pyx_L1_error) - if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame) < (0)) __PYX_ERR(0, 396, __pyx_L1_error) - if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_BlokusGame, (PyObject *) __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame) < (0)) __PYX_ERR(0, 396, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame) < (0)) __PYX_ERR(0, 396, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_vtabptr_13blokus_cython_BlokusGame) < (0)) __PYX_ERR(0, 401, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_13blokus_cython_BlokusGame) < (0)) __PYX_ERR(0, 401, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_BlokusGame, (PyObject *) __pyx_mstate->__pyx_ptype_13blokus_cython_BlokusGame) < (0)) __PYX_ERR(0, 401, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_13blokus_cython_BlokusGame) < (0)) __PYX_ERR(0, 401, __pyx_L1_error) #if CYTHON_USE_TYPE_SPECS - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr)) __PYX_ERR(0, 241, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr_spec, __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr) < (0)) __PYX_ERR(0, 241, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13blokus_cython___pyx_scope_struct__genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr)) __PYX_ERR(0, 241, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13blokus_cython___pyx_scope_struct__genexpr_spec, __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr) < (0)) __PYX_ERR(0, 241, __pyx_L1_error) #else - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr = &__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr; + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr = &__pyx_type_13blokus_cython___pyx_scope_struct__genexpr; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr) < (0)) __PYX_ERR(0, 241, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr) < (0)) __PYX_ERR(0, 241, __pyx_L1_error) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr); + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr); #endif #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct__genexpr->tp_getattro = PyObject_GenericGetAttr; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct__genexpr->tp_getattro = PyObject_GenericGetAttr; } #endif #if CYTHON_USE_TYPE_SPECS - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr)) __PYX_ERR(0, 351, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr_spec, __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr) < (0)) __PYX_ERR(0, 351, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13blokus_cython___pyx_scope_struct_1_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr)) __PYX_ERR(0, 356, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13blokus_cython___pyx_scope_struct_1_genexpr_spec, __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr) < (0)) __PYX_ERR(0, 356, __pyx_L1_error) #else - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr = &__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr; + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr = &__pyx_type_13blokus_cython___pyx_scope_struct_1_genexpr; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr) < (0)) __PYX_ERR(0, 351, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr) < (0)) __PYX_ERR(0, 356, __pyx_L1_error) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr); + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr); #endif #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_1_genexpr->tp_getattro = PyObject_GenericGetAttr; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_1_genexpr->tp_getattro = PyObject_GenericGetAttr; } #endif #if CYTHON_USE_TYPE_SPECS - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr)) __PYX_ERR(0, 352, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr_spec, __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr) < (0)) __PYX_ERR(0, 352, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13blokus_cython___pyx_scope_struct_2_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr)) __PYX_ERR(0, 357, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13blokus_cython___pyx_scope_struct_2_genexpr_spec, __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr) < (0)) __PYX_ERR(0, 357, __pyx_L1_error) #else - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr = &__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr; + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr = &__pyx_type_13blokus_cython___pyx_scope_struct_2_genexpr; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr) < (0)) __PYX_ERR(0, 352, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr) < (0)) __PYX_ERR(0, 357, __pyx_L1_error) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr); + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr); #endif #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_2_genexpr->tp_getattro = PyObject_GenericGetAttr; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_2_genexpr->tp_getattro = PyObject_GenericGetAttr; } #endif #if CYTHON_USE_TYPE_SPECS - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr)) __PYX_ERR(0, 481, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr_spec, __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr) < (0)) __PYX_ERR(0, 481, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13blokus_cython___pyx_scope_struct_3_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr)) __PYX_ERR(0, 486, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13blokus_cython___pyx_scope_struct_3_genexpr_spec, __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr) < (0)) __PYX_ERR(0, 486, __pyx_L1_error) #else - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr = &__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr; + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr = &__pyx_type_13blokus_cython___pyx_scope_struct_3_genexpr; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr) < (0)) __PYX_ERR(0, 481, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr) < (0)) __PYX_ERR(0, 486, __pyx_L1_error) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr); + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr); #endif #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_3_genexpr->tp_getattro = PyObject_GenericGetAttr; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_3_genexpr->tp_getattro = PyObject_GenericGetAttr; } #endif #if CYTHON_USE_TYPE_SPECS - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr)) __PYX_ERR(0, 482, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr_spec, __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr) < (0)) __PYX_ERR(0, 482, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13blokus_cython___pyx_scope_struct_4_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr)) __PYX_ERR(0, 487, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13blokus_cython___pyx_scope_struct_4_genexpr_spec, __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr) < (0)) __PYX_ERR(0, 487, __pyx_L1_error) #else - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr = &__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr; + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr = &__pyx_type_13blokus_cython___pyx_scope_struct_4_genexpr; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr) < (0)) __PYX_ERR(0, 482, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr) < (0)) __PYX_ERR(0, 487, __pyx_L1_error) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr); + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr); #endif #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_4_genexpr->tp_getattro = PyObject_GenericGetAttr; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_4_genexpr->tp_getattro = PyObject_GenericGetAttr; } #endif #if CYTHON_USE_TYPE_SPECS - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr)) __PYX_ERR(0, 754, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr_spec, __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr) < (0)) __PYX_ERR(0, 754, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13blokus_cython___pyx_scope_struct_5_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr)) __PYX_ERR(0, 767, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13blokus_cython___pyx_scope_struct_5_genexpr_spec, __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr) < (0)) __PYX_ERR(0, 767, __pyx_L1_error) #else - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr = &__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr; + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr = &__pyx_type_13blokus_cython___pyx_scope_struct_5_genexpr; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr) < (0)) __PYX_ERR(0, 754, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr) < (0)) __PYX_ERR(0, 767, __pyx_L1_error) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr); + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr); #endif #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_5_genexpr->tp_getattro = PyObject_GenericGetAttr; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_5_genexpr->tp_getattro = PyObject_GenericGetAttr; } #endif #if CYTHON_USE_TYPE_SPECS - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr)) __PYX_ERR(0, 756, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr_spec, __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr) < (0)) __PYX_ERR(0, 756, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13blokus_cython___pyx_scope_struct_6_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr)) __PYX_ERR(0, 769, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13blokus_cython___pyx_scope_struct_6_genexpr_spec, __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr) < (0)) __PYX_ERR(0, 769, __pyx_L1_error) #else - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr = &__pyx_type_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr; + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr = &__pyx_type_13blokus_cython___pyx_scope_struct_6_genexpr; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr) < (0)) __PYX_ERR(0, 756, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr) < (0)) __PYX_ERR(0, 769, __pyx_L1_error) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr); + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr); #endif #if !CYTHON_COMPILING_IN_LIMITED_API - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr->tp_getattro == PyObject_GenericGetAttr)) { - __pyx_mstate->__pyx_ptype_10blokus_gym_4core_13blokus_cython___pyx_scope_struct_6_genexpr->tp_getattro = PyObject_GenericGetAttr; + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13blokus_cython___pyx_scope_struct_6_genexpr->tp_getattro = PyObject_GenericGetAttr; } #endif __pyx_vtabptr_array = &__pyx_vtable_array; @@ -47676,13 +49024,13 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); if (__Pyx_InitConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) stringtab_initialized = 1; if (__Pyx_InitGlobals() < (0)) __PYX_ERR(0, 1, __pyx_L1_error) - if (__pyx_module_is_main_blokus_gym__core__blokus_cython) { + if (__pyx_module_is_main_blokus_cython) { if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_name_2, __pyx_mstate_global->__pyx_n_u_main) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) } { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "blokus_gym.core.blokus_cython")) { - if (unlikely((PyDict_SetItemString(modules, "blokus_gym.core.blokus_cython", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "blokus_cython")) { + if (unlikely((PyDict_SetItemString(modules, "blokus_cython", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) } } /*--- Builtin init code ---*/ @@ -48191,7 +49539,7 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Enum, __pyx_t_4) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":9 + /* "blokus_cython.pyx":9 * cimport cython * from cython cimport bint * import numpy as np # <<<<<<<<<<<<<< @@ -48204,22 +49552,22 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_np, __pyx_t_4) < (0)) __PYX_ERR(0, 9, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":35 + /* "blokus_cython.pyx":35 * self._occupied_cache = {} * * def place(self, int player_idx, list squares): # <<<<<<<<<<<<<< * """Place a player's piece on the board.""" * cdef int x, y */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_3place, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_place, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[7])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 35, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Board_3place, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_place, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[7])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_place, __pyx_t_4) < (0)) __PYX_ERR(0, 35, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_place, __pyx_t_4) < (0)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":49 + /* "blokus_cython.pyx":49 * self._occupied_cache[player_idx].update(squares) * * def clear(self) -> None: # <<<<<<<<<<<<<< @@ -48229,17 +49577,17 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(0, 49, __pyx_L1_error) - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_5clear, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_clear, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[8])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 49, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Board_5clear, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_clear, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[8])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_clear, __pyx_t_5) < (0)) __PYX_ERR(0, 49, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_clear, __pyx_t_5) < (0)) __PYX_ERR(0, 49, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":53 + /* "blokus_cython.pyx":53 * self.grid.fill(0) * * def is_empty(self, int x, int y) -> bool: # <<<<<<<<<<<<<< @@ -48249,17 +49597,17 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(0, 53, __pyx_L1_error) - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_7is_empty, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_is_empty, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[9])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 53, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Board_7is_empty, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_is_empty, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[9])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_is_empty, __pyx_t_4) < (0)) __PYX_ERR(0, 53, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_is_empty, __pyx_t_4) < (0)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":62 + /* "blokus_cython.pyx":62 * return False * * def in_bounds(self, int x, int y) -> bool: # <<<<<<<<<<<<<< @@ -48269,17 +49617,17 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(0, 62, __pyx_L1_error) - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_9in_bounds, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_in_bounds, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[10])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 62, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Board_9in_bounds, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_in_bounds, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[10])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_in_bounds, __pyx_t_5) < (0)) __PYX_ERR(0, 62, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_in_bounds, __pyx_t_5) < (0)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":67 + /* "blokus_cython.pyx":67 * return 0 <= x < size and 0 <= y < size * * def has_overlap(self, list squares) -> bool: # <<<<<<<<<<<<<< @@ -48289,17 +49637,17 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(0, 67, __pyx_L1_error) - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_11has_overlap, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_has_overlap, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[11])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 67, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Board_11has_overlap, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_has_overlap, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[11])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_has_overlap, __pyx_t_4) < (0)) __PYX_ERR(0, 67, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_has_overlap, __pyx_t_4) < (0)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":85 + /* "blokus_cython.pyx":85 * return 0 <= x < size and 0 <= y < size and grid_view[y, x] == 0 * * def get_cell(self, int x, int y) -> int: # <<<<<<<<<<<<<< @@ -48309,17 +49657,17 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 85, __pyx_L1_error) - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_13get_cell, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_get_cell, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[12])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 85, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Board_13get_cell, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_get_cell, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[12])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_get_cell, __pyx_t_5) < (0)) __PYX_ERR(0, 85, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_get_cell, __pyx_t_5) < (0)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":94 + /* "blokus_cython.pyx":94 * return 0 * * def get_player_squares(self, int player_idx) -> list: # <<<<<<<<<<<<<< @@ -48329,17 +49677,17 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_list) < (0)) __PYX_ERR(0, 94, __pyx_L1_error) - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_15get_player_squares, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_get_player_squares, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[13])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 94, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Board_15get_player_squares, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_get_player_squares, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[13])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_get_player_squares, __pyx_t_4) < (0)) __PYX_ERR(0, 94, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_get_player_squares, __pyx_t_4) < (0)) __PYX_ERR(0, 94, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":107 + /* "blokus_cython.pyx":107 * return result * * def get_player_occupied(self, int player_idx) -> set: # <<<<<<<<<<<<<< @@ -48349,17 +49697,17 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_set) < (0)) __PYX_ERR(0, 107, __pyx_L1_error) - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_17get_player_occupied, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_get_player_occupied, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[14])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 107, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Board_17get_player_occupied, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_get_player_occupied, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[14])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_get_player_occupied, __pyx_t_5) < (0)) __PYX_ERR(0, 107, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_get_player_occupied, __pyx_t_5) < (0)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":113 + /* "blokus_cython.pyx":113 * return self._occupied_cache[player_idx] * * def get_player_corners(self, int player_idx) -> set: # <<<<<<<<<<<<<< @@ -48369,17 +49717,17 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_set) < (0)) __PYX_ERR(0, 113, __pyx_L1_error) - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_19get_player_corners, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_get_player_corners, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[15])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Board_19get_player_corners, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_get_player_corners, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[15])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_get_player_corners, __pyx_t_4) < (0)) __PYX_ERR(0, 113, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_get_player_corners, __pyx_t_4) < (0)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":128 + /* "blokus_cython.pyx":128 * return corners * * def get_occupied(self) -> set: # <<<<<<<<<<<<<< @@ -48389,17 +49737,17 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 128, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_set) < (0)) __PYX_ERR(0, 128, __pyx_L1_error) - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_21get_occupied, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_get_occupied, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[16])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 128, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Board_21get_occupied, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_get_occupied, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[16])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 128, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_get_occupied, __pyx_t_5) < (0)) __PYX_ERR(0, 128, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_get_occupied, __pyx_t_5) < (0)) __PYX_ERR(0, 128, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":141 + /* "blokus_cython.pyx":141 * return result * * def is_full(self) -> bool: # <<<<<<<<<<<<<< @@ -48409,17 +49757,17 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(0, 141, __pyx_L1_error) - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_23is_full, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_is_full, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[17])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 141, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Board_23is_full, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_is_full, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[17])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_is_full, __pyx_t_4) < (0)) __PYX_ERR(0, 141, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_is_full, __pyx_t_4) < (0)) __PYX_ERR(0, 141, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":153 + /* "blokus_cython.pyx":153 * return True * * def coverage(self) -> float: # <<<<<<<<<<<<<< @@ -48429,14 +49777,14 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_float) < (0)) __PYX_ERR(0, 153, __pyx_L1_error) - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_25coverage, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_coverage, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[18])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 153, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Board_25coverage, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board_coverage, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[18])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_coverage, __pyx_t_5) < (0)) __PYX_ERR(0, 153, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_coverage, __pyx_t_5) < (0)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":1 @@ -48444,12 +49792,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * cdef tuple state * cdef object _dict */ - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_27__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[19])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Board_27__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[19])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":16 @@ -48458,12 +49806,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle_Board__set_state(self, __pyx_state) */ - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Board_29__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[20])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 16, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Board_29__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Board___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[20])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Board, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":1 @@ -48471,12 +49819,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * cdef tuple state * cdef object _dict */ - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_4Move_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Move___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[21])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_4Move_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Move___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[21])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Move, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":16 @@ -48485,12 +49833,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle_Move__set_state(self, __pyx_state) */ - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_4Move_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Move___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[22])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 16, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_4Move_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Move___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[22])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Move, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Move, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":1 @@ -48498,12 +49846,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * cdef tuple state * cdef object _dict */ - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_16PieceOrientation_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PieceOrientation___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[23])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_16PieceOrientation_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PieceOrientation___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[23])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceOrientation, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":16 @@ -48512,12 +49860,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle_PieceOrientation__set_state(self, __pyx_state) */ - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_16PieceOrientation_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PieceOrientation___setstate_cyth, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[24])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 16, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_16PieceOrientation_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PieceOrientation___setstate_cyth, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[24])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceOrientation, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceOrientation, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":1 @@ -48525,12 +49873,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * cdef tuple state * cdef object _dict */ - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Piece_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Piece___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[25])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Piece_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Piece___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[25])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":16 @@ -48539,15 +49887,15 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle_Piece__set_state(self, __pyx_state) */ - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5Piece_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Piece___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[26])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 16, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5Piece_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Piece___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[26])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":247 + /* "blokus_cython.pyx":247 * return len(self.pieces) * * def get_orientations(self, int piece_id) -> list: # <<<<<<<<<<<<<< @@ -48557,17 +49905,17 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_list) < (0)) __PYX_ERR(0, 247, __pyx_L1_error) - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_8PieceSet_3get_orientations, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PieceSet_get_orientations, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[27])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 247, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_8PieceSet_3get_orientations, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PieceSet_get_orientations, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[27])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet, __pyx_mstate_global->__pyx_n_u_get_orientations, __pyx_t_4) < (0)) __PYX_ERR(0, 247, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceSet, __pyx_mstate_global->__pyx_n_u_get_orientations, __pyx_t_4) < (0)) __PYX_ERR(0, 247, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":250 + /* "blokus_cython.pyx":250 * return self.orientations[piece_id] * * def get_piece(self, int piece_id) -> Piece: # <<<<<<<<<<<<<< @@ -48577,17 +49925,17 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Piece) < (0)) __PYX_ERR(0, 250, __pyx_L1_error) - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_8PieceSet_5get_piece, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PieceSet_get_piece, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[28])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 250, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_8PieceSet_5get_piece, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PieceSet_get_piece, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[28])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet, __pyx_mstate_global->__pyx_n_u_get_piece, __pyx_t_5) < (0)) __PYX_ERR(0, 250, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceSet, __pyx_mstate_global->__pyx_n_u_get_piece, __pyx_t_5) < (0)) __PYX_ERR(0, 250, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":253 + /* "blokus_cython.pyx":253 * return self.pieces[piece_id] * * def get_piece_id(self, str name) -> int: # <<<<<<<<<<<<<< @@ -48597,14 +49945,14 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 253, __pyx_L1_error) - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_8PieceSet_7get_piece_id, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PieceSet_get_piece_id, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[29])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 253, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_8PieceSet_7get_piece_id, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PieceSet_get_piece_id, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[29])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet, __pyx_mstate_global->__pyx_n_u_get_piece_id, __pyx_t_4) < (0)) __PYX_ERR(0, 253, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceSet, __pyx_mstate_global->__pyx_n_u_get_piece_id, __pyx_t_4) < (0)) __PYX_ERR(0, 253, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "(tree fragment)":1 @@ -48612,12 +49960,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * cdef tuple state * cdef object _dict */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_8PieceSet_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PieceSet___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[30])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_8PieceSet_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PieceSet___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[30])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_4) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceSet, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_4) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "(tree fragment)":16 @@ -48626,15 +49974,15 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle_PieceSet__set_state(self, __pyx_state) */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_8PieceSet_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PieceSet___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[31])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 16, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_8PieceSet_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PieceSet___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[31])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PieceSet, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_4) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_PieceSet, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_4) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":261 + /* "blokus_cython.pyx":261 * # ------------------------------------------------------------------- * * cdef frozenset _I1_squares = frozenset([(0, 0)]) # <<<<<<<<<<<<<< @@ -48643,12 +49991,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[12]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__I1_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__I1_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__I1_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__I1_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":262 + /* "blokus_cython.pyx":262 * * cdef frozenset _I1_squares = frozenset([(0, 0)]) * cdef frozenset _I2_squares = frozenset([(0, 0), (0, 1)]) # <<<<<<<<<<<<<< @@ -48657,12 +50005,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[13]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 262, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__I2_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__I2_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__I2_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__I2_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":263 + /* "blokus_cython.pyx":263 * cdef frozenset _I1_squares = frozenset([(0, 0)]) * cdef frozenset _I2_squares = frozenset([(0, 0), (0, 1)]) * cdef frozenset _I3_squares = frozenset([(0, 0), (0, 1), (0, 2)]) # <<<<<<<<<<<<<< @@ -48671,12 +50019,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[15]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__I3_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__I3_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__I3_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__I3_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":264 + /* "blokus_cython.pyx":264 * cdef frozenset _I2_squares = frozenset([(0, 0), (0, 1)]) * cdef frozenset _I3_squares = frozenset([(0, 0), (0, 1), (0, 2)]) * cdef frozenset _V3_squares = frozenset([(0, 0), (1, 0), (0, 1)]) # <<<<<<<<<<<<<< @@ -48685,12 +50033,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[16]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__V3_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__V3_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__V3_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__V3_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":265 + /* "blokus_cython.pyx":265 * cdef frozenset _I3_squares = frozenset([(0, 0), (0, 1), (0, 2)]) * cdef frozenset _V3_squares = frozenset([(0, 0), (1, 0), (0, 1)]) * cdef frozenset _I4_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3)]) # <<<<<<<<<<<<<< @@ -48699,12 +50047,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[18]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__I4_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__I4_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__I4_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__I4_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":266 + /* "blokus_cython.pyx":266 * cdef frozenset _V3_squares = frozenset([(0, 0), (1, 0), (0, 1)]) * cdef frozenset _I4_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3)]) * cdef frozenset _L4_squares = frozenset([(0, 0), (0, 1), (0, 2), (1, 0)]) # <<<<<<<<<<<<<< @@ -48713,12 +50061,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[19]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__L4_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__L4_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__L4_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__L4_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":267 + /* "blokus_cython.pyx":267 * cdef frozenset _I4_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3)]) * cdef frozenset _L4_squares = frozenset([(0, 0), (0, 1), (0, 2), (1, 0)]) * cdef frozenset _T4_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1)]) # <<<<<<<<<<<<<< @@ -48727,12 +50075,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[21]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__T4_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__T4_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__T4_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__T4_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":268 + /* "blokus_cython.pyx":268 * cdef frozenset _L4_squares = frozenset([(0, 0), (0, 1), (0, 2), (1, 0)]) * cdef frozenset _T4_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1)]) * cdef frozenset _S4_squares = frozenset([(0, 0), (1, 0), (1, 1), (2, 1)]) # <<<<<<<<<<<<<< @@ -48741,12 +50089,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[23]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__S4_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__S4_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__S4_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__S4_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":269 + /* "blokus_cython.pyx":269 * cdef frozenset _T4_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1)]) * cdef frozenset _S4_squares = frozenset([(0, 0), (1, 0), (1, 1), (2, 1)]) * cdef frozenset _O4_squares = frozenset([(0, 0), (1, 0), (0, 1), (1, 1)]) # <<<<<<<<<<<<<< @@ -48755,12 +50103,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[24]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 269, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__O4_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__O4_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__O4_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__O4_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":270 + /* "blokus_cython.pyx":270 * cdef frozenset _S4_squares = frozenset([(0, 0), (1, 0), (1, 1), (2, 1)]) * cdef frozenset _O4_squares = frozenset([(0, 0), (1, 0), (0, 1), (1, 1)]) * cdef frozenset _I5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (0, 4)]) # <<<<<<<<<<<<<< @@ -48769,12 +50117,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[26]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__I5_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__I5_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__I5_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__I5_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":271 + /* "blokus_cython.pyx":271 * cdef frozenset _O4_squares = frozenset([(0, 0), (1, 0), (0, 1), (1, 1)]) * cdef frozenset _I5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (0, 4)]) * cdef frozenset _L5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (1, 0)]) # <<<<<<<<<<<<<< @@ -48783,12 +50131,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[27]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 271, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__L5_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__L5_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__L5_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__L5_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":272 + /* "blokus_cython.pyx":272 * cdef frozenset _I5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (0, 4)]) * cdef frozenset _L5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (1, 0)]) * cdef frozenset _Y5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (1, 1)]) # <<<<<<<<<<<<<< @@ -48797,12 +50145,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[28]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__Y5_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__Y5_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__Y5_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__Y5_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":273 + /* "blokus_cython.pyx":273 * cdef frozenset _L5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (1, 0)]) * cdef frozenset _Y5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (1, 1)]) * cdef frozenset _N5_squares = frozenset([(0, 0), (1, 0), (2, 0), (2, 1), (3, 1)]) # <<<<<<<<<<<<<< @@ -48811,12 +50159,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[30]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__N5_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__N5_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__N5_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__N5_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":274 + /* "blokus_cython.pyx":274 * cdef frozenset _Y5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (1, 1)]) * cdef frozenset _N5_squares = frozenset([(0, 0), (1, 0), (2, 0), (2, 1), (3, 1)]) * cdef frozenset _T5_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1), (1, 2)]) # <<<<<<<<<<<<<< @@ -48825,12 +50173,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[32]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__T5_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__T5_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__T5_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__T5_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":275 + /* "blokus_cython.pyx":275 * cdef frozenset _N5_squares = frozenset([(0, 0), (1, 0), (2, 0), (2, 1), (3, 1)]) * cdef frozenset _T5_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1), (1, 2)]) * cdef frozenset _U5_squares = frozenset([(0, 0), (2, 0), (0, 1), (1, 1), (2, 1)]) # <<<<<<<<<<<<<< @@ -48839,12 +50187,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[33]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 275, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__U5_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__U5_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__U5_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__U5_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":276 + /* "blokus_cython.pyx":276 * cdef frozenset _T5_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1), (1, 2)]) * cdef frozenset _U5_squares = frozenset([(0, 0), (2, 0), (0, 1), (1, 1), (2, 1)]) * cdef frozenset _V5_squares = frozenset([(0, 0), (0, 1), (0, 2), (1, 0), (2, 0)]) # <<<<<<<<<<<<<< @@ -48853,12 +50201,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[34]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__V5_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__V5_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__V5_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__V5_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":277 + /* "blokus_cython.pyx":277 * cdef frozenset _U5_squares = frozenset([(0, 0), (2, 0), (0, 1), (1, 1), (2, 1)]) * cdef frozenset _V5_squares = frozenset([(0, 0), (0, 1), (0, 2), (1, 0), (2, 0)]) * cdef frozenset _W5_squares = frozenset([(0, 0), (0, 1), (1, 0), (1, 1), (2, 0)]) # <<<<<<<<<<<<<< @@ -48867,12 +50215,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[35]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 277, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__W5_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__W5_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__W5_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__W5_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":278 + /* "blokus_cython.pyx":278 * cdef frozenset _V5_squares = frozenset([(0, 0), (0, 1), (0, 2), (1, 0), (2, 0)]) * cdef frozenset _W5_squares = frozenset([(0, 0), (0, 1), (1, 0), (1, 1), (2, 0)]) * cdef frozenset _Z5_squares = frozenset([(0, 0), (1, 0), (1, 1), (1, 2), (2, 2)]) # <<<<<<<<<<<<<< @@ -48881,12 +50229,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[37]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 278, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__Z5_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__Z5_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__Z5_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__Z5_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":279 + /* "blokus_cython.pyx":279 * cdef frozenset _W5_squares = frozenset([(0, 0), (0, 1), (1, 0), (1, 1), (2, 0)]) * cdef frozenset _Z5_squares = frozenset([(0, 0), (1, 0), (1, 1), (1, 2), (2, 2)]) * cdef frozenset _F5_squares = frozenset([(0, 0), (1, 0), (1, 1), (2, 1), (1, 2)]) # <<<<<<<<<<<<<< @@ -48895,12 +50243,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[38]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__F5_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__F5_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__F5_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__F5_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":280 + /* "blokus_cython.pyx":280 * cdef frozenset _Z5_squares = frozenset([(0, 0), (1, 0), (1, 1), (1, 2), (2, 2)]) * cdef frozenset _F5_squares = frozenset([(0, 0), (1, 0), (1, 1), (2, 1), (1, 2)]) * cdef frozenset _X5_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1), (1, -1)]) # <<<<<<<<<<<<<< @@ -48909,12 +50257,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[39]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__X5_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__X5_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__X5_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__X5_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":281 + /* "blokus_cython.pyx":281 * cdef frozenset _F5_squares = frozenset([(0, 0), (1, 0), (1, 1), (2, 1), (1, 2)]) * cdef frozenset _X5_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1), (1, -1)]) * cdef frozenset _P5_squares = frozenset([(0, 0), (1, 0), (0, 1), (1, 1), (0, 2)]) # <<<<<<<<<<<<<< @@ -48923,12 +50271,12 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); */ __pyx_t_4 = __Pyx_PyFrozenSet_New(__pyx_mstate_global->__pyx_tuple[40]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython__P5_squares); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__P5_squares, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython__P5_squares); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__P5_squares, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":283 + /* "blokus_cython.pyx":283 * cdef frozenset _P5_squares = frozenset([(0, 0), (1, 0), (0, 1), (1, 1), (0, 2)]) * * cdef Piece _I1 = Piece("I1", _I1_squares) # <<<<<<<<<<<<<< @@ -48938,18 +50286,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_I1, __pyx_v_10blokus_gym_4core_13blokus_cython__I1_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_I1, __pyx_v_13blokus_cython__I1_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 283, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__I1); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__I1, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__I1); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__I1, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":284 + /* "blokus_cython.pyx":284 * * cdef Piece _I1 = Piece("I1", _I1_squares) * cdef Piece _I2 = Piece("I2", _I2_squares) # <<<<<<<<<<<<<< @@ -48959,18 +50307,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_I2, __pyx_v_10blokus_gym_4core_13blokus_cython__I2_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_I2, __pyx_v_13blokus_cython__I2_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__I2); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__I2, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__I2); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__I2, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":285 + /* "blokus_cython.pyx":285 * cdef Piece _I1 = Piece("I1", _I1_squares) * cdef Piece _I2 = Piece("I2", _I2_squares) * cdef Piece _I3 = Piece("I3", _I3_squares) # <<<<<<<<<<<<<< @@ -48980,18 +50328,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_I3, __pyx_v_10blokus_gym_4core_13blokus_cython__I3_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_I3, __pyx_v_13blokus_cython__I3_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 285, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__I3); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__I3, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__I3); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__I3, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":286 + /* "blokus_cython.pyx":286 * cdef Piece _I2 = Piece("I2", _I2_squares) * cdef Piece _I3 = Piece("I3", _I3_squares) * cdef Piece _V3 = Piece("V3", _V3_squares) # <<<<<<<<<<<<<< @@ -49001,18 +50349,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_V3, __pyx_v_10blokus_gym_4core_13blokus_cython__V3_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_V3, __pyx_v_13blokus_cython__V3_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 286, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__V3); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__V3, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__V3); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__V3, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":287 + /* "blokus_cython.pyx":287 * cdef Piece _I3 = Piece("I3", _I3_squares) * cdef Piece _V3 = Piece("V3", _V3_squares) * cdef Piece _I4 = Piece("I4", _I4_squares) # <<<<<<<<<<<<<< @@ -49022,18 +50370,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_I4, __pyx_v_10blokus_gym_4core_13blokus_cython__I4_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_I4, __pyx_v_13blokus_cython__I4_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 287, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__I4); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__I4, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__I4); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__I4, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":288 + /* "blokus_cython.pyx":288 * cdef Piece _V3 = Piece("V3", _V3_squares) * cdef Piece _I4 = Piece("I4", _I4_squares) * cdef Piece _L4 = Piece("L4", _L4_squares) # <<<<<<<<<<<<<< @@ -49043,18 +50391,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_L4, __pyx_v_10blokus_gym_4core_13blokus_cython__L4_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_L4, __pyx_v_13blokus_cython__L4_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 288, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__L4); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__L4, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__L4); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__L4, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":289 + /* "blokus_cython.pyx":289 * cdef Piece _I4 = Piece("I4", _I4_squares) * cdef Piece _L4 = Piece("L4", _L4_squares) * cdef Piece _T4 = Piece("T4", _T4_squares) # <<<<<<<<<<<<<< @@ -49064,18 +50412,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_T4, __pyx_v_10blokus_gym_4core_13blokus_cython__T4_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_T4, __pyx_v_13blokus_cython__T4_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 289, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__T4); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__T4, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__T4); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__T4, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":290 + /* "blokus_cython.pyx":290 * cdef Piece _L4 = Piece("L4", _L4_squares) * cdef Piece _T4 = Piece("T4", _T4_squares) * cdef Piece _S4 = Piece("S4", _S4_squares) # <<<<<<<<<<<<<< @@ -49085,18 +50433,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_S4, __pyx_v_10blokus_gym_4core_13blokus_cython__S4_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_S4, __pyx_v_13blokus_cython__S4_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 290, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__S4); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__S4, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__S4); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__S4, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":291 + /* "blokus_cython.pyx":291 * cdef Piece _T4 = Piece("T4", _T4_squares) * cdef Piece _S4 = Piece("S4", _S4_squares) * cdef Piece _O4 = Piece("O4", _O4_squares) # <<<<<<<<<<<<<< @@ -49106,18 +50454,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_O4, __pyx_v_10blokus_gym_4core_13blokus_cython__O4_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_O4, __pyx_v_13blokus_cython__O4_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 291, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__O4); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__O4, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__O4); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__O4, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":292 + /* "blokus_cython.pyx":292 * cdef Piece _S4 = Piece("S4", _S4_squares) * cdef Piece _O4 = Piece("O4", _O4_squares) * cdef Piece _I5 = Piece("I5", _I5_squares) # <<<<<<<<<<<<<< @@ -49127,18 +50475,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_I5, __pyx_v_10blokus_gym_4core_13blokus_cython__I5_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_I5, __pyx_v_13blokus_cython__I5_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 292, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__I5); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__I5, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__I5); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__I5, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":293 + /* "blokus_cython.pyx":293 * cdef Piece _O4 = Piece("O4", _O4_squares) * cdef Piece _I5 = Piece("I5", _I5_squares) * cdef Piece _L5 = Piece("L5", _L5_squares) # <<<<<<<<<<<<<< @@ -49148,18 +50496,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_L5, __pyx_v_10blokus_gym_4core_13blokus_cython__L5_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_L5, __pyx_v_13blokus_cython__L5_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 293, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__L5); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__L5, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__L5); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__L5, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":294 + /* "blokus_cython.pyx":294 * cdef Piece _I5 = Piece("I5", _I5_squares) * cdef Piece _L5 = Piece("L5", _L5_squares) * cdef Piece _Y5 = Piece("Y5", _Y5_squares) # <<<<<<<<<<<<<< @@ -49169,18 +50517,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Y5, __pyx_v_10blokus_gym_4core_13blokus_cython__Y5_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Y5, __pyx_v_13blokus_cython__Y5_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 294, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__Y5); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__Y5, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__Y5); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__Y5, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":295 + /* "blokus_cython.pyx":295 * cdef Piece _L5 = Piece("L5", _L5_squares) * cdef Piece _Y5 = Piece("Y5", _Y5_squares) * cdef Piece _N5 = Piece("N5", _N5_squares) # <<<<<<<<<<<<<< @@ -49190,18 +50538,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_N5, __pyx_v_10blokus_gym_4core_13blokus_cython__N5_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_N5, __pyx_v_13blokus_cython__N5_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 295, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__N5); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__N5, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__N5); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__N5, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":296 + /* "blokus_cython.pyx":296 * cdef Piece _Y5 = Piece("Y5", _Y5_squares) * cdef Piece _N5 = Piece("N5", _N5_squares) * cdef Piece _T5 = Piece("T5", _T5_squares) # <<<<<<<<<<<<<< @@ -49211,18 +50559,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_T5, __pyx_v_10blokus_gym_4core_13blokus_cython__T5_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_T5, __pyx_v_13blokus_cython__T5_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__T5); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__T5, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__T5); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__T5, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":297 + /* "blokus_cython.pyx":297 * cdef Piece _N5 = Piece("N5", _N5_squares) * cdef Piece _T5 = Piece("T5", _T5_squares) * cdef Piece _U5 = Piece("U5", _U5_squares) # <<<<<<<<<<<<<< @@ -49232,18 +50580,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_U5, __pyx_v_10blokus_gym_4core_13blokus_cython__U5_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_U5, __pyx_v_13blokus_cython__U5_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 297, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__U5); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__U5, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__U5); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__U5, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":298 + /* "blokus_cython.pyx":298 * cdef Piece _T5 = Piece("T5", _T5_squares) * cdef Piece _U5 = Piece("U5", _U5_squares) * cdef Piece _V5 = Piece("V5", _V5_squares) # <<<<<<<<<<<<<< @@ -49253,18 +50601,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_V5, __pyx_v_10blokus_gym_4core_13blokus_cython__V5_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_V5, __pyx_v_13blokus_cython__V5_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 298, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__V5); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__V5, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__V5); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__V5, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":299 + /* "blokus_cython.pyx":299 * cdef Piece _U5 = Piece("U5", _U5_squares) * cdef Piece _V5 = Piece("V5", _V5_squares) * cdef Piece _W5 = Piece("W5", _W5_squares) # <<<<<<<<<<<<<< @@ -49274,18 +50622,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_W5, __pyx_v_10blokus_gym_4core_13blokus_cython__W5_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_W5, __pyx_v_13blokus_cython__W5_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 299, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__W5); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__W5, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__W5); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__W5, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":300 + /* "blokus_cython.pyx":300 * cdef Piece _V5 = Piece("V5", _V5_squares) * cdef Piece _W5 = Piece("W5", _W5_squares) * cdef Piece _Z5 = Piece("Z5", _Z5_squares) # <<<<<<<<<<<<<< @@ -49295,18 +50643,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Z5, __pyx_v_10blokus_gym_4core_13blokus_cython__Z5_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Z5, __pyx_v_13blokus_cython__Z5_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 300, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__Z5); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__Z5, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__Z5); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__Z5, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":301 + /* "blokus_cython.pyx":301 * cdef Piece _W5 = Piece("W5", _W5_squares) * cdef Piece _Z5 = Piece("Z5", _Z5_squares) * cdef Piece _F5 = Piece("F5", _F5_squares) # <<<<<<<<<<<<<< @@ -49316,18 +50664,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_F5, __pyx_v_10blokus_gym_4core_13blokus_cython__F5_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_F5, __pyx_v_13blokus_cython__F5_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__F5); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__F5, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__F5); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__F5, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":302 + /* "blokus_cython.pyx":302 * cdef Piece _Z5 = Piece("Z5", _Z5_squares) * cdef Piece _F5 = Piece("F5", _F5_squares) * cdef Piece _X5 = Piece("X5", _X5_squares) # <<<<<<<<<<<<<< @@ -49337,18 +50685,18 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_X5, __pyx_v_10blokus_gym_4core_13blokus_cython__X5_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_X5, __pyx_v_13blokus_cython__X5_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 302, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__X5); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__X5, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__X5); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__X5, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":303 + /* "blokus_cython.pyx":303 * cdef Piece _F5 = Piece("F5", _F5_squares) * cdef Piece _X5 = Piece("X5", _X5_squares) * cdef Piece _P5 = Piece("P5", _P5_squares) # <<<<<<<<<<<<<< @@ -49358,42 +50706,57 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __pyx_t_5 = NULL; __pyx_t_6 = 1; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_P5, __pyx_v_10blokus_gym_4core_13blokus_cython__P5_squares}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_P5, __pyx_v_13blokus_cython__P5_squares}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_13blokus_cython_Piece, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } - __Pyx_XGOTREF((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__P5); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython__P5, ((struct __pyx_obj_10blokus_gym_4core_13blokus_cython_Piece *)__pyx_t_4)); + __Pyx_XGOTREF((PyObject *)__pyx_v_13blokus_cython__P5); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython__P5, ((struct __pyx_obj_13blokus_cython_Piece *)__pyx_t_4)); __Pyx_GIVEREF((PyObject *)__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":305 + /* "blokus_cython.pyx":305 * cdef Piece _P5 = Piece("P5", _P5_squares) * * cdef list STANDARD_PIECES = [ # <<<<<<<<<<<<<< * _I1, _I2, _I3, _V3, _I4, _L4, _T4, _S4, _O4, * _I5, _L5, _Y5, _N5, _T5, _U5, _V5, _W5, _Z5, _F5, _X5, _P5 */ - __pyx_t_4 = __Pyx_PyList_Pack(21, ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__I1), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__I2), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__I3), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__V3), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__I4), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__L4), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__T4), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__S4), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__O4), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__I5), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__L5), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__Y5), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__N5), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__T5), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__U5), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__V5), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__W5), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__Z5), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__F5), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__X5), ((PyObject *)__pyx_v_10blokus_gym_4core_13blokus_cython__P5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 305, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyList_Pack(21, ((PyObject *)__pyx_v_13blokus_cython__I1), ((PyObject *)__pyx_v_13blokus_cython__I2), ((PyObject *)__pyx_v_13blokus_cython__I3), ((PyObject *)__pyx_v_13blokus_cython__V3), ((PyObject *)__pyx_v_13blokus_cython__I4), ((PyObject *)__pyx_v_13blokus_cython__L4), ((PyObject *)__pyx_v_13blokus_cython__T4), ((PyObject *)__pyx_v_13blokus_cython__S4), ((PyObject *)__pyx_v_13blokus_cython__O4), ((PyObject *)__pyx_v_13blokus_cython__I5), ((PyObject *)__pyx_v_13blokus_cython__L5), ((PyObject *)__pyx_v_13blokus_cython__Y5), ((PyObject *)__pyx_v_13blokus_cython__N5), ((PyObject *)__pyx_v_13blokus_cython__T5), ((PyObject *)__pyx_v_13blokus_cython__U5), ((PyObject *)__pyx_v_13blokus_cython__V5), ((PyObject *)__pyx_v_13blokus_cython__W5), ((PyObject *)__pyx_v_13blokus_cython__Z5), ((PyObject *)__pyx_v_13blokus_cython__F5), ((PyObject *)__pyx_v_13blokus_cython__X5), ((PyObject *)__pyx_v_13blokus_cython__P5)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_v_10blokus_gym_4core_13blokus_cython_STANDARD_PIECES); - __Pyx_DECREF_SET(__pyx_v_10blokus_gym_4core_13blokus_cython_STANDARD_PIECES, ((PyObject*)__pyx_t_4)); + __Pyx_XGOTREF(__pyx_v_13blokus_cython_STANDARD_PIECES); + __Pyx_DECREF_SET(__pyx_v_13blokus_cython_STANDARD_PIECES, ((PyObject*)__pyx_t_4)); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = 0; + /* "blokus_cython.pyx":311 + * + * + * def get_standard_pieces(): # <<<<<<<<<<<<<< + * """Python-accessible function to get the standard piece set.""" + * return list(STANDARD_PIECES) +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_1get_standard_pieces, 0, __pyx_mstate_global->__pyx_n_u_get_standard_pieces, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[32])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 311, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_get_standard_pieces, __pyx_t_4) < (0)) __PYX_ERR(0, 311, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * cdef tuple state * cdef object _dict */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_11PlayerState_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PlayerState___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[32])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_11PlayerState_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PlayerState___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[33])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_4) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_PlayerState, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_4) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "(tree fragment)":16 @@ -49402,246 +50765,336 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle_PlayerState__set_state(self, __pyx_state) */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_11PlayerState_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PlayerState___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[33])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 16, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_11PlayerState_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PlayerState___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[34])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 16, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_PlayerState, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_4) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_PlayerState, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_4) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":495 + /* "blokus_cython.pyx":500 * return len(self._action_moves) * * def get_move(self, int action) -> Move: # <<<<<<<<<<<<<< * return self._action_moves[action] * */ - __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 495, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 500, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Move) < (0)) __PYX_ERR(0, 495, __pyx_L1_error) - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_3get_move, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_get_move, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[34])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 495, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Move) < (0)) __PYX_ERR(0, 500, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_3get_move, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_get_move, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[35])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 500, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_get_move, __pyx_t_5) < (0)) __PYX_ERR(0, 495, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_get_move, __pyx_t_5) < (0)) __PYX_ERR(0, 500, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":498 + /* "blokus_cython.pyx":503 * return self._action_moves[action] * * def get_action(self, Move move) -> int: # <<<<<<<<<<<<<< * return self._move_to_action[(move.piece_id, move.orientation_id, move.x, move.y)] * */ - __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 498, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 498, __pyx_L1_error) - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_5get_action, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_get_action, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[35])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 498, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 503, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_5get_action, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_get_action, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[36])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_get_action, __pyx_t_4) < (0)) __PYX_ERR(0, 498, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_get_action, __pyx_t_4) < (0)) __PYX_ERR(0, 503, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":501 + /* "blokus_cython.pyx":506 * return self._move_to_action[(move.piece_id, move.orientation_id, move.x, move.y)] * * def reset(self) -> None: # <<<<<<<<<<<<<< * """Reset the game to its initial state.""" * self.board = Board(self.board_size) */ - __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 501, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(0, 501, __pyx_L1_error) - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_7reset, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_reset, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[36])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 501, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(0, 506, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_7reset, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_reset, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[37])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_reset, __pyx_t_5) < (0)) __PYX_ERR(0, 501, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_reset, __pyx_t_5) < (0)) __PYX_ERR(0, 506, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":540 + /* "blokus_cython.pyx":536 * return result * + * cpdef list get_placed_squares(self, Move move): # <<<<<<<<<<<<<< + * """Python-accessible wrapper for _get_placed_squares.""" + * return self._get_placed_squares(move) +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_9get_placed_squares, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_get_placed_squares, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[38])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 536, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_get_placed_squares, __pyx_t_5) < (0)) __PYX_ERR(0, 536, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "blokus_cython.pyx":549 + * return result + * + * cpdef list get_placed_corners(self, Move move): # <<<<<<<<<<<<<< + * """Python-accessible wrapper for _get_placed_corners.""" + * return self._get_placed_corners(move) +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_11get_placed_corners, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_get_placed_corners, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[39])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 549, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_get_placed_corners, __pyx_t_5) < (0)) __PYX_ERR(0, 549, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "blokus_cython.pyx":553 + * return self._get_placed_corners(move) + * * cpdef bint valid_move(self, int player_idx, Move move): # <<<<<<<<<<<<<< * """Check if a move is valid for the given player.""" * cdef PlayerState player = self.players[player_idx] */ - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_9valid_move, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_valid_move, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[37])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 540, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_13valid_move, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_valid_move, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[40])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_valid_move, __pyx_t_5) < (0)) __PYX_ERR(0, 540, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_valid_move, __pyx_t_5) < (0)) __PYX_ERR(0, 553, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":592 + /* "blokus_cython.pyx":605 * return True * * cpdef get_valid_actions(self, int player_idx): # <<<<<<<<<<<<<< * """Get a boolean mask of valid actions for the given player.""" * cdef PlayerState player = self.players[player_idx] */ - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_11get_valid_actions, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_get_valid_actions, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[38])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 592, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_15get_valid_actions, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_get_valid_actions, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[41])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_get_valid_actions, __pyx_t_5) < (0)) __PYX_ERR(0, 592, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_get_valid_actions, __pyx_t_5) < (0)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":668 + /* "blokus_cython.pyx":681 * return mask * * cpdef bint has_valid_moves(self, int player_idx): # <<<<<<<<<<<<<< * """Check if a player has any valid moves.""" * cdef PlayerState player = self.players[player_idx] */ - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_13has_valid_moves, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_has_valid_moves, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[39])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 668, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_17has_valid_moves, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_has_valid_moves, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[42])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_has_valid_moves, __pyx_t_5) < (0)) __PYX_ERR(0, 668, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_has_valid_moves, __pyx_t_5) < (0)) __PYX_ERR(0, 681, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":687 + /* "blokus_cython.pyx":700 * return False * * def apply_move(self, int player_idx, Move move) -> None: # <<<<<<<<<<<<<< * """Apply a move to the game state. Does not validate.""" * cdef PlayerState player = self.players[player_idx] */ - __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 687, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(0, 687, __pyx_L1_error) - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_15apply_move, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_apply_move, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[40])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(0, 700, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_19apply_move, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_apply_move, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[43])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_apply_move, __pyx_t_4) < (0)) __PYX_ERR(0, 687, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_apply_move, __pyx_t_4) < (0)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":715 + /* "blokus_cython.pyx":728 * self._check_game_over() * * def play_move(self, int player_idx, int action) -> bint: # <<<<<<<<<<<<<< * """Play an action for the given player. Validates first.""" * cdef Move move = self._action_moves[action] */ - __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 715, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bint) < (0)) __PYX_ERR(0, 715, __pyx_L1_error) - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_17play_move, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_play_move, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[41])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 715, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bint) < (0)) __PYX_ERR(0, 728, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_21play_move, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_play_move, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[44])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_play_move, __pyx_t_5) < (0)) __PYX_ERR(0, 715, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_play_move, __pyx_t_5) < (0)) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":725 + /* "blokus_cython.pyx":738 * return True * * def next_player(self): # <<<<<<<<<<<<<< * """Advance to the next player who can still move. * */ - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_19next_player, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_next_player, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[42])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 725, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_23next_player, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_next_player, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[45])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_next_player, __pyx_t_5) < (0)) __PYX_ERR(0, 725, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_next_player, __pyx_t_5) < (0)) __PYX_ERR(0, 738, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":744 + /* "blokus_cython.pyx":757 * return self.current_player * * def _check_game_over(self) -> None: # <<<<<<<<<<<<<< * """Check if the game is over.""" * cdef PlayerState player */ - __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 744, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(0, 744, __pyx_L1_error) - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_21_check_game_over, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame__check_game_over, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[43])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 744, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(0, 757, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_25_check_game_over, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame__check_game_over, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[46])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_check_game_over, __pyx_t_4) < (0)) __PYX_ERR(0, 744, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_check_game_over, __pyx_t_4) < (0)) __PYX_ERR(0, 757, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "blokus_gym/core/blokus_cython.pyx":760 + /* "blokus_cython.pyx":773 * self.game_over = True * - * def get_state(self) -> dict: # <<<<<<<<<<<<<< - * """Get the current game state as a dictionary.""" - * return { + * def is_game_over(self) -> bool: # <<<<<<<<<<<<<< + * """Check if the game is over (no player can make a move).""" + * if self.game_over: */ - __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 760, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_dict_2) < (0)) __PYX_ERR(0, 760, __pyx_L1_error) - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_23get_state, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_get_state, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[44])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 760, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(0, 773, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_27is_game_over, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_is_game_over, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[47])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_get_state, __pyx_t_5) < (0)) __PYX_ERR(0, 760, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_is_game_over, __pyx_t_5) < (0)) __PYX_ERR(0, 773, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":780 - * } + /* "blokus_cython.pyx":785 + * return True + * + * def get_scores(self) -> list: # <<<<<<<<<<<<<< + * """Get the score for each player. * - * def copy(self) -> BlokusGame: # <<<<<<<<<<<<<< - * """Create a deep copy of the game.""" - * cdef BlokusGame new_game = BlokusGame( */ - __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 780, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 785, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_BlokusGame) < (0)) __PYX_ERR(0, 780, __pyx_L1_error) - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_25copy, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_copy, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[45])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 780, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_list) < (0)) __PYX_ERR(0, 785, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_29get_scores, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_get_scores, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[48])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 785, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_copy, __pyx_t_4) < (0)) __PYX_ERR(0, 780, __pyx_L1_error) + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_get_scores, __pyx_t_4) < (0)) __PYX_ERR(0, 785, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + /* "blokus_cython.pyx":814 + * return scores + * + * def get_winners(self) -> list | None: # <<<<<<<<<<<<<< + * """Get the winning player(s). Returns None if game is not over.""" + * if not self.is_game_over(): +*/ + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 814, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_kp_u_list_None) < (0)) __PYX_ERR(0, 814, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_31get_winners, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_get_winners, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[49])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 814, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_get_winners, __pyx_t_5) < (0)) __PYX_ERR(0, 814, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "blokus_cython.pyx":823 + * return [i for i, s in enumerate(scores) if s == max_score] + * + * def get_state(self) -> dict: # <<<<<<<<<<<<<< + * """Get the current game state as a dictionary.""" + * return { +*/ + __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 823, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_dict_2) < (0)) __PYX_ERR(0, 823, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_33get_state, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_get_state, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[50])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 823, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_4, __pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_get_state, __pyx_t_4) < (0)) __PYX_ERR(0, 823, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "blokus_cython.pyx":843 + * } + * + * def copy(self) -> BlokusGame: # <<<<<<<<<<<<<< + * """Create a deep copy of the game.""" + * cdef BlokusGame new_game = BlokusGame( +*/ + __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 843, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_BlokusGame) < (0)) __PYX_ERR(0, 843, __pyx_L1_error) + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_35copy, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame_copy, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[51])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 843, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); + #endif + __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_copy, __pyx_t_5) < (0)) __PYX_ERR(0, 843, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * cdef tuple state * cdef object _dict */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_27__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[46])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_37__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[52])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_4) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":16 * else: @@ -49649,13 +51102,13 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * __pyx_unpickle_BlokusGame__set_state(self, __pyx_state) */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_10BlokusGame_29__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[47])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_10BlokusGame_39__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_BlokusGame___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[53])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_10blokus_gym_4core_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_4) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13blokus_cython_BlokusGame, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_5) < (0)) __PYX_ERR(1, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":4 * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 @@ -49664,26 +51117,26 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * cdef object __pyx_result * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x0510d2c, 0x0b84c10, 0x0bc2a6c, b'_occupied_cache, grid, size') */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_1__pyx_unpickle_Board, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Board, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[48])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_3__pyx_unpickle_Board, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Board, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[54])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Board, __pyx_t_4) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Board, __pyx_t_5) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":1 * cdef extern from *: # <<<<<<<<<<<<<< * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_3__pyx_unpickle_Move, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Move, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[49])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_5__pyx_unpickle_Move, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Move, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[55])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Move, __pyx_t_4) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Move, __pyx_t_5) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":4 * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 @@ -49692,26 +51145,26 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * cdef object __pyx_result * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0xf86ecb3, 0x1b2f35d, 0x9c26469, b'corners, orientation_id, piece_id, squares') */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_5__pyx_unpickle_PieceOrientation, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_PieceOrientation, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[50])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_7__pyx_unpickle_PieceOrientation, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_PieceOrientation, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[56])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_PieceOrientation, __pyx_t_4) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_PieceOrientation, __pyx_t_5) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":1 * cdef extern from *: # <<<<<<<<<<<<<< * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_7__pyx_unpickle_Piece, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Piece, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[51])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_9__pyx_unpickle_Piece, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Piece, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[57])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Piece, __pyx_t_4) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Piece, __pyx_t_5) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":4 * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 @@ -49720,26 +51173,26 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * cdef object __pyx_result * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x0a4ef5f, 0x798f028, 0xb2ae89a, b'num_orientations, orientations, piece_id_map, piece_names, pieces') */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_9__pyx_unpickle_PieceSet, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_PieceSet, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[52])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_11__pyx_unpickle_PieceSet, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_PieceSet, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[58])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_PieceSet, __pyx_t_4) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_PieceSet, __pyx_t_5) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":1 * cdef extern from *: # <<<<<<<<<<<<<< * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_11__pyx_unpickle_PlayerState, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_PlayerState, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[53])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_13__pyx_unpickle_PlayerState, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_PlayerState, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[59])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_PlayerState, __pyx_t_4) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_PlayerState, __pyx_t_5) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "(tree fragment)":4 * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 @@ -49748,23 +51201,23 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); * cdef object __pyx_result * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x2eba6e9, 0xec864e3, 0x3965e13, b'_action_moves, _actions_by_piece, _move_to_action, _starting_corners, board, board_size, corner_rule, current_player, game_over, num_players, piece_set, players, rounds') */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_10blokus_gym_4core_13blokus_cython_13__pyx_unpickle_BlokusGame, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_BlokusGame, NULL, __pyx_mstate_global->__pyx_n_u_blokus_gym_core_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[54])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13blokus_cython_15__pyx_unpickle_BlokusGame, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_BlokusGame, NULL, __pyx_mstate_global->__pyx_n_u_blokus_cython, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[60])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_BlokusGame, __pyx_t_4) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_BlokusGame, __pyx_t_5) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "blokus_gym/core/blokus_cython.pyx":1 + /* "blokus_cython.pyx":1 * #!/usr/bin/env python3 # <<<<<<<<<<<<<< * # Combined Cython implementation of Blokus game engine * # Compile with: python setup_cython.py build_ext --inplace */ - __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_4) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_5) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /*--- Wrapped vars code ---*/ @@ -49774,7 +51227,7 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); __Pyx_XDECREF(__pyx_t_5); if (__pyx_m) { if (__pyx_mstate->__pyx_d && stringtab_initialized) { - __Pyx_AddTraceback("init blokus_gym.core.blokus_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("init blokus_cython", __pyx_clineno, __pyx_lineno, __pyx_filename); } #if !CYTHON_USE_MODULE_STATE Py_CLEAR(__pyx_m); @@ -49788,7 +51241,7 @@ __Pyx_RefNannySetupContext("PyInit_blokus_cython", 0); } #endif } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init blokus_gym.core.blokus_cython"); + PyErr_SetString(PyExc_ImportError, "init blokus_cython"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); @@ -49805,8 +51258,8 @@ static int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate) { CYTHON_UNUSED_VAR(__pyx_mstate); __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 235, __pyx_L1_error) __pyx_builtin_sum = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_sum); if (!__pyx_builtin_sum) __PYX_ERR(0, 241, __pyx_L1_error) - __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_min); if (!__pyx_builtin_min) __PYX_ERR(0, 351, __pyx_L1_error) - __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_max); if (!__pyx_builtin_max) __PYX_ERR(0, 481, __pyx_L1_error) + __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_min); if (!__pyx_builtin_min) __PYX_ERR(0, 356, __pyx_L1_error) + __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_max); if (!__pyx_builtin_max) __PYX_ERR(0, 486, __pyx_L1_error) __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_import); if (!__pyx_builtin___import__) __PYX_ERR(1, 109, __pyx_L1_error) __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 418, __pyx_L1_error) __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_id); if (!__pyx_builtin_id) __PYX_ERR(1, 628, __pyx_L1_error) @@ -49854,7 +51307,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[0]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]); - /* "blokus_gym/core/blokus_cython.pyx":122 + /* "blokus_cython.pyx":122 * * for x, y in player_squares: * for dx, dy in [(-1, -1), (1, -1), (-1, 1), (1, 1)]: # <<<<<<<<<<<<<< @@ -49877,41 +51330,41 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[5]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[5]); - /* "blokus_gym/core/blokus_cython.pyx":441 + /* "blokus_cython.pyx":446 * max_idx = board_size - 1 * self._starting_corners = [ * (0, 0), # <<<<<<<<<<<<<< * (0, max_idx), * (max_idx, 0), */ - __pyx_mstate_global->__pyx_tuple[6] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[6])) __PYX_ERR(0, 441, __pyx_L1_error) + __pyx_mstate_global->__pyx_tuple[6] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[6])) __PYX_ERR(0, 446, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[6]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[6]); - /* "blokus_gym/core/blokus_cython.pyx":573 + /* "blokus_cython.pyx":586 * # Rule 5: No edge adjacency with same-color pieces (inline for speed) * for x, y in placed_squares: * for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: # <<<<<<<<<<<<<< * if self.board.in_bounds(x + dx, y + dy): * if self.board.get_cell(x + dx, y + dy) == player_board_idx: */ - __pyx_mstate_global->__pyx_tuple[7] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_neg_1, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[7])) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_mstate_global->__pyx_tuple[7] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_neg_1, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[7])) __PYX_ERR(0, 586, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[7]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[7]); - __pyx_mstate_global->__pyx_tuple[8] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_1, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[8])) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_mstate_global->__pyx_tuple[8] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_1, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[8])) __PYX_ERR(0, 586, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[8]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[8]); - __pyx_mstate_global->__pyx_tuple[9] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_mstate_global->__pyx_int_neg_1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[9])) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_mstate_global->__pyx_tuple[9] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_mstate_global->__pyx_int_neg_1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[9])) __PYX_ERR(0, 586, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[9]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[9]); - __pyx_mstate_global->__pyx_tuple[10] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_mstate_global->__pyx_int_1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[10])) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_mstate_global->__pyx_tuple[10] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_0, __pyx_mstate_global->__pyx_int_1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[10])) __PYX_ERR(0, 586, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[10]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[10]); - __pyx_mstate_global->__pyx_tuple[11] = PyTuple_Pack(4, __pyx_mstate_global->__pyx_tuple[7], __pyx_mstate_global->__pyx_tuple[8], __pyx_mstate_global->__pyx_tuple[9], __pyx_mstate_global->__pyx_tuple[10]); if (unlikely(!__pyx_mstate_global->__pyx_tuple[11])) __PYX_ERR(0, 573, __pyx_L1_error) + __pyx_mstate_global->__pyx_tuple[11] = PyTuple_Pack(4, __pyx_mstate_global->__pyx_tuple[7], __pyx_mstate_global->__pyx_tuple[8], __pyx_mstate_global->__pyx_tuple[9], __pyx_mstate_global->__pyx_tuple[10]); if (unlikely(!__pyx_mstate_global->__pyx_tuple[11])) __PYX_ERR(0, 586, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[11]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[11]); - /* "blokus_gym/core/blokus_cython.pyx":261 + /* "blokus_cython.pyx":261 * # ------------------------------------------------------------------- * * cdef frozenset _I1_squares = frozenset([(0, 0)]) # <<<<<<<<<<<<<< @@ -49922,7 +51375,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[12]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[12]); - /* "blokus_gym/core/blokus_cython.pyx":262 + /* "blokus_cython.pyx":262 * * cdef frozenset _I1_squares = frozenset([(0, 0)]) * cdef frozenset _I2_squares = frozenset([(0, 0), (0, 1)]) # <<<<<<<<<<<<<< @@ -49933,7 +51386,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[13]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[13]); - /* "blokus_gym/core/blokus_cython.pyx":263 + /* "blokus_cython.pyx":263 * cdef frozenset _I1_squares = frozenset([(0, 0)]) * cdef frozenset _I2_squares = frozenset([(0, 0), (0, 1)]) * cdef frozenset _I3_squares = frozenset([(0, 0), (0, 1), (0, 2)]) # <<<<<<<<<<<<<< @@ -49947,7 +51400,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[15]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[15]); - /* "blokus_gym/core/blokus_cython.pyx":264 + /* "blokus_cython.pyx":264 * cdef frozenset _I2_squares = frozenset([(0, 0), (0, 1)]) * cdef frozenset _I3_squares = frozenset([(0, 0), (0, 1), (0, 2)]) * cdef frozenset _V3_squares = frozenset([(0, 0), (1, 0), (0, 1)]) # <<<<<<<<<<<<<< @@ -49958,7 +51411,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[16]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[16]); - /* "blokus_gym/core/blokus_cython.pyx":265 + /* "blokus_cython.pyx":265 * cdef frozenset _I3_squares = frozenset([(0, 0), (0, 1), (0, 2)]) * cdef frozenset _V3_squares = frozenset([(0, 0), (1, 0), (0, 1)]) * cdef frozenset _I4_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3)]) # <<<<<<<<<<<<<< @@ -49972,7 +51425,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[18]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[18]); - /* "blokus_gym/core/blokus_cython.pyx":266 + /* "blokus_cython.pyx":266 * cdef frozenset _V3_squares = frozenset([(0, 0), (1, 0), (0, 1)]) * cdef frozenset _I4_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3)]) * cdef frozenset _L4_squares = frozenset([(0, 0), (0, 1), (0, 2), (1, 0)]) # <<<<<<<<<<<<<< @@ -49983,7 +51436,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[19]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[19]); - /* "blokus_gym/core/blokus_cython.pyx":267 + /* "blokus_cython.pyx":267 * cdef frozenset _I4_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3)]) * cdef frozenset _L4_squares = frozenset([(0, 0), (0, 1), (0, 2), (1, 0)]) * cdef frozenset _T4_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1)]) # <<<<<<<<<<<<<< @@ -49997,7 +51450,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[21]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[21]); - /* "blokus_gym/core/blokus_cython.pyx":268 + /* "blokus_cython.pyx":268 * cdef frozenset _L4_squares = frozenset([(0, 0), (0, 1), (0, 2), (1, 0)]) * cdef frozenset _T4_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1)]) * cdef frozenset _S4_squares = frozenset([(0, 0), (1, 0), (1, 1), (2, 1)]) # <<<<<<<<<<<<<< @@ -50011,7 +51464,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[23]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[23]); - /* "blokus_gym/core/blokus_cython.pyx":269 + /* "blokus_cython.pyx":269 * cdef frozenset _T4_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1)]) * cdef frozenset _S4_squares = frozenset([(0, 0), (1, 0), (1, 1), (2, 1)]) * cdef frozenset _O4_squares = frozenset([(0, 0), (1, 0), (0, 1), (1, 1)]) # <<<<<<<<<<<<<< @@ -50022,7 +51475,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[24]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[24]); - /* "blokus_gym/core/blokus_cython.pyx":270 + /* "blokus_cython.pyx":270 * cdef frozenset _S4_squares = frozenset([(0, 0), (1, 0), (1, 1), (2, 1)]) * cdef frozenset _O4_squares = frozenset([(0, 0), (1, 0), (0, 1), (1, 1)]) * cdef frozenset _I5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (0, 4)]) # <<<<<<<<<<<<<< @@ -50036,7 +51489,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[26]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[26]); - /* "blokus_gym/core/blokus_cython.pyx":271 + /* "blokus_cython.pyx":271 * cdef frozenset _O4_squares = frozenset([(0, 0), (1, 0), (0, 1), (1, 1)]) * cdef frozenset _I5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (0, 4)]) * cdef frozenset _L5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (1, 0)]) # <<<<<<<<<<<<<< @@ -50047,7 +51500,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[27]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[27]); - /* "blokus_gym/core/blokus_cython.pyx":272 + /* "blokus_cython.pyx":272 * cdef frozenset _I5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (0, 4)]) * cdef frozenset _L5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (1, 0)]) * cdef frozenset _Y5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (1, 1)]) # <<<<<<<<<<<<<< @@ -50058,7 +51511,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[28]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[28]); - /* "blokus_gym/core/blokus_cython.pyx":273 + /* "blokus_cython.pyx":273 * cdef frozenset _L5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (1, 0)]) * cdef frozenset _Y5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (1, 1)]) * cdef frozenset _N5_squares = frozenset([(0, 0), (1, 0), (2, 0), (2, 1), (3, 1)]) # <<<<<<<<<<<<<< @@ -50072,7 +51525,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[30]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[30]); - /* "blokus_gym/core/blokus_cython.pyx":274 + /* "blokus_cython.pyx":274 * cdef frozenset _Y5_squares = frozenset([(0, 0), (0, 1), (0, 2), (0, 3), (1, 1)]) * cdef frozenset _N5_squares = frozenset([(0, 0), (1, 0), (2, 0), (2, 1), (3, 1)]) * cdef frozenset _T5_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1), (1, 2)]) # <<<<<<<<<<<<<< @@ -50086,7 +51539,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[32]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[32]); - /* "blokus_gym/core/blokus_cython.pyx":275 + /* "blokus_cython.pyx":275 * cdef frozenset _N5_squares = frozenset([(0, 0), (1, 0), (2, 0), (2, 1), (3, 1)]) * cdef frozenset _T5_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1), (1, 2)]) * cdef frozenset _U5_squares = frozenset([(0, 0), (2, 0), (0, 1), (1, 1), (2, 1)]) # <<<<<<<<<<<<<< @@ -50097,7 +51550,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[33]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[33]); - /* "blokus_gym/core/blokus_cython.pyx":276 + /* "blokus_cython.pyx":276 * cdef frozenset _T5_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1), (1, 2)]) * cdef frozenset _U5_squares = frozenset([(0, 0), (2, 0), (0, 1), (1, 1), (2, 1)]) * cdef frozenset _V5_squares = frozenset([(0, 0), (0, 1), (0, 2), (1, 0), (2, 0)]) # <<<<<<<<<<<<<< @@ -50108,7 +51561,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[34]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[34]); - /* "blokus_gym/core/blokus_cython.pyx":277 + /* "blokus_cython.pyx":277 * cdef frozenset _U5_squares = frozenset([(0, 0), (2, 0), (0, 1), (1, 1), (2, 1)]) * cdef frozenset _V5_squares = frozenset([(0, 0), (0, 1), (0, 2), (1, 0), (2, 0)]) * cdef frozenset _W5_squares = frozenset([(0, 0), (0, 1), (1, 0), (1, 1), (2, 0)]) # <<<<<<<<<<<<<< @@ -50119,7 +51572,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[35]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[35]); - /* "blokus_gym/core/blokus_cython.pyx":278 + /* "blokus_cython.pyx":278 * cdef frozenset _V5_squares = frozenset([(0, 0), (0, 1), (0, 2), (1, 0), (2, 0)]) * cdef frozenset _W5_squares = frozenset([(0, 0), (0, 1), (1, 0), (1, 1), (2, 0)]) * cdef frozenset _Z5_squares = frozenset([(0, 0), (1, 0), (1, 1), (1, 2), (2, 2)]) # <<<<<<<<<<<<<< @@ -50133,7 +51586,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[37]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[37]); - /* "blokus_gym/core/blokus_cython.pyx":279 + /* "blokus_cython.pyx":279 * cdef frozenset _W5_squares = frozenset([(0, 0), (0, 1), (1, 0), (1, 1), (2, 0)]) * cdef frozenset _Z5_squares = frozenset([(0, 0), (1, 0), (1, 1), (1, 2), (2, 2)]) * cdef frozenset _F5_squares = frozenset([(0, 0), (1, 0), (1, 1), (2, 1), (1, 2)]) # <<<<<<<<<<<<<< @@ -50144,7 +51597,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[38]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[38]); - /* "blokus_gym/core/blokus_cython.pyx":280 + /* "blokus_cython.pyx":280 * cdef frozenset _Z5_squares = frozenset([(0, 0), (1, 0), (1, 1), (1, 2), (2, 2)]) * cdef frozenset _F5_squares = frozenset([(0, 0), (1, 0), (1, 1), (2, 1), (1, 2)]) * cdef frozenset _X5_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1), (1, -1)]) # <<<<<<<<<<<<<< @@ -50155,7 +51608,7 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[39]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[39]); - /* "blokus_gym/core/blokus_cython.pyx":281 + /* "blokus_cython.pyx":281 * cdef frozenset _F5_squares = frozenset([(0, 0), (1, 0), (1, 1), (2, 1), (1, 2)]) * cdef frozenset _X5_squares = frozenset([(0, 0), (1, 0), (2, 0), (1, 1), (1, -1)]) * cdef frozenset _P5_squares = frozenset([(0, 0), (1, 0), (0, 1), (1, 1), (0, 2)]) # <<<<<<<<<<<<<< @@ -50222,34 +51675,34 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) { CYTHON_UNUSED_VAR(__pyx_mstate); { - const struct { const unsigned int length: 9; } index[] = {{2},{35},{54},{37},{60},{24},{52},{26},{34},{33},{45},{22},{15},{11},{179},{37},{32},{1},{1},{1},{1},{2},{2},{1},{8},{5},{6},{33},{15},{23},{25},{7},{6},{2},{6},{35},{9},{30},{50},{39},{34},{8},{9},{7},{20},{32},{22},{14},{30},{37},{5},{10},{28},{30},{27},{50},{21},{15},{21},{19},{20},{28},{26},{22},{20},{16},{21},{5},{23},{25},{11},{14},{14},{18},{24},{25},{24},{17},{15},{14},{13},{11},{8},{2},{2},{2},{2},{2},{2},{2},{2},{4},{22},{24},{2},{4},{2},{2},{5},{16},{34},{36},{8},{26},{28},{25},{18},{21},{23},{25},{11},{29},{31},{20},{2},{8},{2},{2},{2},{2},{2},{15},{2},{2},{2},{2},{1},{3},{6},{15},{12},{10},{18},{16},{4},{4},{29},{10},{4},{1},{8},{16},{33},{9},{17},{5},{18},{5},{4},{11},{7},{5},{8},{14},{2},{2},{8},{4},{5},{5},{15},{2},{2},{6},{9},{5},{4},{5},{5},{6},{7},{8},{9},{7},{10},{8},{8},{12},{16},{9},{12},{18},{19},{18},{9},{17},{12},{9},{11},{11},{15},{1},{2},{3},{10},{9},{5},{25},{3},{4},{13},{8},{7},{5},{8},{4},{8},{3},{7},{3},{4},{10},{4},{4},{8},{4},{7},{8},{4},{8},{11},{41},{2},{11},{10},{11},{5},{1},{3},{6},{14},{1},{4},{5},{8},{6},{11},{5},{14},{14},{9},{6},{10},{14},{7},{3},{14},{12},{11},{10},{25},{20},{19},{19},{20},{31},{23},{26},{14},{12},{10},{17},{13},{8},{5},{6},{6},{6},{5},{4},{4},{3},{12},{10},{12},{19},{5},{4},{7},{5},{5},{4},{4},{6},{3},{8},{5},{6},{6},{12},{10},{5},{6},{1},{1},{5},{16},{11},{96},{77},{79},{144},{51},{11},{52},{187},{2},{113},{88},{384},{493},{110},{33},{67},{120},{107},{399},{111},{134},{169},{104},{11},{2},{60},{56},{68},{81},{188},{79},{16},{11},{11},{2},{55},{55},{58},{55},{55},{55},{2},{2},{11},{16},{164},{34},{16},{16},{1}}; - #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (3853 bytes) */ -const char* const cstring = "BZh91AY&SY>2\322\305\000\003\325\177\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\300@@@@@@@@@@@@\000@\000`\017]\336\367\037/n5lmb@v\030\347J\3477l\333&\263Mk\271n\200C\340\000\003\203BP\205\022\207\250\365\036Si=OQ\372\246\365OS\3016\202f\206\023\003(\312\206\323)\352=\251\352\233(\331M\2216\243M6\2104\331'\246\231C\304A(\200\020\323Q\243)O\023\324\324\375P\315M\032\237\251\006\206F\332\201\017H\014\215\251\246 \014M\006\214\230\217H\332\233S\320\200\323\r4\320\210I\221\0104z\215=FOS\304\217P\003OP\0004\000\r\000\000\320\032\000\000\032\031\222\001&\244B\232\236\211\251\275Dm'\352G\250mCL\2004\0004\003@\000\365\006\200\000\006\215\000\032\000\032\032\035\r\006M4zz\237\252L\0020&\023\000\000!\211\246\230\201\221\264F\200z\214\004\300L!\220d\000\022(\"a\032LF\020dd\032\014\242\232?Rd\365\007\250\0004\000\000\000\000\000\000\032\000\034\311 f\223>h\260+]\265\240R\030\004\365\231\005\200\301\223\225\370\376\333\334\355\356h\335\r\274\310s\231\t\335\014\361\"C\232\020\361\026\240\310K\2638\304n\360G\221\3068\344N\356\261\221\337r\367\217\241\221\032\306\321 \000\000F@\004H\000\000\000\r\022\030na\r>}N\357\371j;6\307\265\334\334&\340\334\233\267\374=\275\231\347\267=\271\347\267<\314\363\333\236\177\"\"\007\310\211\377\304\252DX\261I\314\207\006I\246i\232f\222\366\341\311\210Z\030\3341\016\256\004\303\016 A\271\3036q!\255\003Y\202\2121\021@\025\021UVAddH)\020A\03023S,\331\301(\332U\276\245*m\024\222\275h\257\025\210,i\t\264\214\003\017E*Ey&\005u\302@\242\235\224\370\2459\226HJ(^\220\3304\332m\337\324\261&y\252\204X,\230\225U|@\301\212\016\270^\033\2545\250\314\033@\323h\210.\3512ZR\201\201%jS\251u\237\014\231\263\006\233\000\360\304^f\323f&\310\020\010\026\223\256\331\\\205\205\240\251\373\032\205Z\035\211*\352\225K\322\374c\004q\"\2426#\274p\306\021\n\025\263a\001\215D\203\005sTUk\002\224\225\013\261\002QBj\202\261gG5g;\374\264\261\030\315W\013Nf&\270$\226\371\262\346\223\234\354a\215\362\245\022\214[\230]t\244a~!\204\013\257'9\3665\\\311\320\030\264\300\224\220\360\242B\002\027\242\025a\024\307\317\036\323V\022Z\366\"\023\226\246t\271\275\315\330!P\256\277F\326\3016k\360\251C\216!#c\271}j\3016\233-08\021\357-\230O\013\266Z\325\301\023\017\016\363\362v\271N\010;g>\276\335l\316\306\305\206$U8E\323\264\203E\003'k\212\270\000C\223v,\341\266\230\335\014\362\330\013\324\315\377\221\262\2304\242t#\234\\g:\316\001\027\252<3d\\5E\342\323a\014Hz/8\342\024`'W\001~\026\034\270\201\213\357\303\334\366'?\357\360u\377\306@d\t\222&9'\35446&\250\306(;\320\255~\347-{\234\036\207\303\361y\273-\216\303\330\331\254\2042H\234}\323\221&\0223\362\237\323\204\347/d\376/\021\376\312nlbxx\216\"\347\006\"t\217\027\253\327\005\366\224\273\353\267\265\363\362\346\332Y%G\300\025\010>\307\007q\364\374\256I\344\227\3134\336\314\314\271\340\204\rX\204\245\341\330>A\222FM\0305.$\202\207\272\321BBGKpv\341\3678\3167\342\037\177\326[\266\"g\310\213\023\3108\271\361\335\226FY}\nm\353\035\334\367\242P\322\340\341\341__]\361\010\221LQ8\223\211g\307\363\266\361ga/D$w\363\235u\306 \230\342v`\200=\021\266-L\227(\024A\256\367\273>\365\366\344\355\352\340\344f\030m\361\232{\352lv7\2715j\345\350\337\307\3055\221\031f\341\375{p\023\340P\275\377\273\032\365\r\267\362\254\327\016F\033\234\304U\rW\314\r\275\035B\246\235\024\034\235\363\267\301\360p\031\252\242\265\261|X\361Z\302\232b\324IA \337\210H\307\317\365\253\246\264Fx\001\3205\027\"j111\325K\256\2411&\023\230M\350yzK\207\004(\230e\317\036\224\273\326\254Nx\351\277\300\221\212&\275I\305\340\341z\307\236\3567=4\034`l\320\274\240\330\363\264m`;\255=]C\035\357C&""\030Po\321\025\350\022\230\210\355\324\225m\250KH\355^Q\326<'\343\364\267\2565\357\214\223(\013t\221\330\247\206\352\223\321\203\233e\233\010\202\231\246\226\251\223q\032\005\t\221\242\353\nd _I\250\000\017\006\205\320\202\026\363\035\030B\004KeldA\333zM\276\243\232\356\241\341\235\026s*\344\221`\020p\037;\260\006C0\317N\030I\266\021\005\033\336\306\302\310\220\002\020)s4\035J\3176M\027\350\262\213(\344\373\325=F\2236\250bw\"G\325\3462\377\215\001\227\225\374\267\207\332\201\361\200=\025}\024?7\324\251*\000\320\325\316\373D\027\201\371\035\204\002\302S\\\016\350\232\032ipF\212\363\215\266\026H\025k\000b\252\271p\314`\032\0344\362\237$\264\020\373\205\331\271-\242\3770\003w\372\235\022\010P\201\220\036\370A\257JP\216\353\314\246;\274\254\336f\307\362M&\231g\t \365uq\367\365S\311\254cxr,\266ut\364\326\356\016\0036r\240u\246\315T&[\302\230\014\264u\306\220\324\2640\264\276\360\006\016Yl2F\277%Y<\347\tM\216\361\2276\370\315\251\311\347\244\232F\020c\302\020i\230\267c\010\360]mC\020r\232\r\006\231d\250\032=\365\320n*\342\324\224\024\240\224\207\006\326\266\257\013\035%\343}\333c1\225&yW\273\021\214O\013\n\271tF\206\221*g&ppj\014Il `\356\377u\021|\360|qo|W\034\345.-\024\355B\224\222M\320\220\304\261%\007\201\007\210`\363\356\032\010\003 \0014\351\260\210\013\027\233B!\323\222Ib\t\004\220-2\005c\233 \206\016/3\220\202T\033\030'\266(\213F\265\265\302\250\363J\016\274`\307Nh\206-\223\377\203\006\3437\306+\204q\201\004\261\356\212\234CQ\232\345k\362\336\354\204\212\031b\250\224\236\005\033\365|\260dK\021\010A\030\232\201\n\373%)\262\030\2355\336Qn|\267\031xe\206\016\353\316\202\370X\261\236\2538\2323sPQ\320E +\026\005\3600\315\240\013\205/6n\034\207\341Tb\356\352x9'\331\316\"\232!P\302\026\343\327#_UX\351\352Z\256\335\210\222.\352!\334`i\271\272\335\017\211\220\272\021pppq\244}\330\256=\t\333d\324L\247Q\336r\360\206\000\301\351\363\303\202kP0\025yM\241n\251\361V\007\343\256l\\\335$\242V\204\272qL\230(\014&\000f8\252\212c\243:.i\320\344}U8pP\224v\270t\324-\003\n\2546\362\277""\225\356\230\341\005QT/Z#\300\261N\273t\275\261\246\213\335\217I~V\312\2139IQ\031\265\257_\002\271\353\363\363z\376\021)>\264#\237\304Y-\265\366\362a5\362\206\254\205\360\212\326\r\013\003\306\036 =\353\001\224\240\344fj\267\201\006\267\240\30764\223|\307<+\364\202I\376\320\013\302\370!\020\242\260\344K\261;\362\255\336,\244%\262\030\312 &\364;\326@\037\275\370Fi\020\230\315\345\214\2436\235\367;\257\253\251J5\206\233Z\340F\250F\232u\016\372\003te\343^\335k $C\231\201\001\352E\266\\\236\240\310\215C\276\266\306\274\223M;\005mu\343 6\325\226\240\221y*\201\336\252(\034\344\241\034|]$j\2728K\331v\036\035\036\236\215u\2066,:@4\350\312p]\024\240\033MOm\013\306\204C,t\347\307\211[\232\241\210\311\025\007\256\253\361\312\003 \331\327\337\350\271\227J4\213a,E\372(J\220\201\211(,5l\244llW_\276\247_.\245\023\305Z\014h\300\250\032\202\226~\247\243^k1a\341\301\206\224\315\214\2010=m\313c\355\262\0075a>\234a\304\326E2P\301H+\245\211\203v\r[6XX\223P\343\273\\\320QoB\301\217%\242\247\303\320\335\3446\270\221Kj \345!\021\027L{(\224H|$\251\010X+!\254\006]\262\025\217Mi8Bb\341m\032\254a\276w\254)!\310\306\232\344\014\363\213@P\034g9\240F|\255&9UINx\304'a8\346\\B\302<\320\013J\235\267B\031\214h\330\3125\250m- ,\354\0042,p\301\250\234&\234;\266\224\024\223\031K\327{\340\324u:\200\306\342\261V\312h\003$\255s\206\003\2305\265AX:3'\030\266\021\264\214\335u\207\265\200h\271\326\257\222>m\302\200\340t\342\214\301\276\022\221\006\023\0043\265\313>\221\214N\240$\000HQ\223\267\310\230\343\002GU\021\327*\362\3459\263qWA\014\315r\214#\220\317)X\341\004p\224J^\216\267n\\\335\267\030\215\2500\306\244\024\231U\006\343.&G`+\235)\244^DXSQzLl\021\013\010*\221]\351\274\263\024\314\210\354\022%\202\324\356!ISM\260m\273\356\313k\021l\335r%*\346\226\347]S\021K\2050\314\241V\202\020\315\231#bFs9\234\330\274\307]%%=wtw\362~d\270\214I\034.9\215\347\225\222\237Y\313y\365\300\344mw0\363B\213\341\335\310\004;Wf@\333d\341\030)!\035\035\3618\300\3433\357\307\210\300p2\265\266\261\"mCa\265Q\304\372w%p\256\016s""\253\250\347\305\205\"\370\335\324\224\231\262Q\207\232\004\020\276\343\317,\251\315\260T\335_E\0038\336\243\261G\321\234\213(\213tY\001\005:K#\351\231!\310\364j\002\223\242\"\324\244^\340\274\233n\355\223\371\3328\304\343\234.D\233i8\033r?,\"\362\036}\262\237q(\nP\343I\204\260\317ROp\373FlIxb\376ZC\177\366\007\231{\2119\177\247/\305\247;\320\340\347\245\345e`\300\006EPFTC\004r'\207\372\362\020`M\24561\\*\377\035Y9|\231\275\275\316Q\236L@\260\3147\003\262\256\r\375\324\024M<\244\366\224\315\345q\300\247D\0212\337\254\247\357\230<\034\231\314\310\345.\031#)7\372F\320\267\311\216xo\031{\0319k\326>\303O\034\360d\212\367\270}\355\203\037\267z\030x\230\205\214a\033\022\201na\325\230\305\271\020\2061\2130\230\307y\3461\271\2272\2567s\003\262\330\232\376\002\326\016""\r\253X\005<$t\271x\005\026gP\371%\261/\327\262dK\237+V`\226\347\223\345kKh\361z\233\373\233\265{N\277\316\370\372^\375\253\277N\242\027\n\253\241\334l\021o\372\354\216]\355\313(\211\344L\204;\267f%\347Q\305&\316\271\023T\207$\224\351\222P\263\354^\326|\371%\236/\254K\274;\027Sp\245M9\267aD\344\346\331\253c[\336\225\207\356\332\322}\377_S\255\217\017q\023#\"K\236\305\362\301\377-\243\030\302|\315\200\327\rj\304\234#\001\006\036$d(EU\026d!3`\314\230\013\t\004\027\224`E\234\010>+\311&l\341\300\261\020\"\317./\016\\\335\332\254-\n\236M\010\262\035\253\336-\"\274 \222\270\ni\325\244`\023J\264\227\260p\204Z\022hN\326\2072 \240\254m1A\246X\264\270\252$@\247\020\210x\263\200\034\242D\230.l'\225|\020\313\014\372d\222\305\030\250\213\030\252\257\263\340\330\344\346\307]\327\251gs\237\001\302\327\334\325j\3340\315\004\031\212\377\305\334\221N\024$\017\214\264\261@"; - PyObject *data = __Pyx_DecompressString(cstring, 3853, 2); + const struct { const unsigned int length: 9; } index[] = {{2},{35},{54},{37},{60},{24},{52},{26},{34},{33},{45},{22},{15},{11},{179},{37},{32},{1},{1},{1},{1},{2},{2},{1},{8},{5},{6},{17},{15},{23},{25},{7},{6},{2},{6},{35},{9},{30},{11},{50},{39},{34},{8},{9},{7},{20},{32},{22},{14},{30},{37},{5},{10},{28},{30},{27},{50},{21},{15},{21},{19},{29},{29},{21},{20},{28},{22},{26},{23},{22},{20},{16},{21},{5},{23},{25},{11},{14},{14},{18},{24},{25},{24},{17},{15},{14},{13},{11},{8},{2},{2},{2},{2},{2},{2},{2},{2},{4},{22},{24},{2},{4},{2},{2},{5},{16},{34},{36},{8},{26},{28},{25},{18},{21},{23},{25},{11},{29},{31},{20},{2},{8},{2},{2},{2},{2},{2},{15},{2},{2},{2},{2},{1},{3},{6},{15},{12},{10},{18},{16},{4},{4},{13},{10},{4},{1},{8},{16},{33},{9},{17},{5},{18},{5},{4},{11},{7},{5},{8},{14},{2},{2},{8},{4},{5},{5},{15},{2},{2},{6},{9},{5},{4},{5},{5},{6},{7},{8},{9},{7},{10},{8},{8},{12},{16},{9},{12},{18},{18},{18},{19},{18},{10},{19},{9},{17},{11},{12},{9},{11},{11},{15},{1},{2},{3},{10},{9},{5},{25},{3},{4},{13},{8},{7},{12},{5},{8},{4},{8},{3},{9},{7},{3},{4},{10},{4},{4},{8},{4},{7},{8},{4},{8},{11},{41},{2},{11},{10},{11},{5},{1},{3},{6},{14},{1},{4},{3},{5},{8},{6},{11},{5},{14},{14},{9},{6},{10},{14},{7},{3},{14},{12},{11},{10},{25},{20},{19},{19},{20},{31},{23},{26},{14},{12},{10},{17},{13},{8},{5},{6},{6},{6},{1},{5},{6},{4},{4},{3},{12},{10},{12},{19},{5},{4},{7},{5},{5},{4},{4},{6},{3},{8},{5},{6},{8},{6},{12},{10},{5},{6},{1},{1},{5},{16},{11},{96},{77},{79},{144},{11},{51},{11},{52},{187},{2},{124},{113},{88},{384},{493},{110},{33},{14},{67},{66},{120},{107},{399},{111},{134},{169},{104},{11},{2},{73},{60},{56},{68},{81},{188},{79},{16},{11},{11},{2},{55},{55},{58},{55},{55},{55},{2},{2},{11},{16},{164},{34},{16},{16},{1}}; + #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (4026 bytes) */ +const char* const cstring = "BZh91AY&SYL\221\205a\000\004\022\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\300@@@@@@@@@@@@\000@\000`\020\037Y\236\207\256\257]\330{c\336aN\324\306\006,\331\356\312\241ln\305\266\2008\036\000\000844\021\t\"?*x$\3654cS\302\237\224\3325M\206G\244\323\004\362i)\3456\215&`S\324\364i\244\364\023O\024i\246mS\311\251\372I\346\211\004\242\t\210\310&\231 M\245O\312O\324\332&\247\212fA\251\264\365&\0201\006#hC\002=4h\320\320ji\221\262\023\010\r2i\020J\237\225\037\252z\236(\323\322\030\214j\r\0001\000\000\r\000\031\000\000\000\000\000\000\001\232\222\236\222\236\232\217(h\r\0314\r\030 \000\031\0004\032\003j4\000\032\000d\310\032\001\240\032\002\r10 \300\004\323M4\300\004`#\023&\0010\000\021\204`\000\021\200\023&L& H\220!2\023F\246dMO\024\362bi<\2420\203FC@\000\000\000\000\000\0004\000\032\036\247\215$\027\245\232\364\330\210\320\363\316b\233Sh\250/\250\322\033@\320\310\254{\270\271\271\355Z\346\034\344V\211I\302qYh\335\347\004\216\264:\020\336\014\010\306<\341\022\207\261\021\205\207\355\376\036o\235\351z\036\207\263\355{\335\226|\235\257\233\347\355\354\351\3074\325\354\345\226Yc\247,\2612\313,\262\313,\313\357\376\272/\353u\273\033\377\016\007j\373\276\216\346\350\233\241\272\033\274\037W\323\247<\362\317,\363\313<\314\363\313<\377\350\205\343h^1\020(\2061\264\332l]\010\352\000\341\\!\302\270I\313\261*\204\221RaP\363\022\025(y\300\210\211\235\207\221Q\031$d\320\304\010hB@\333\000\020\200\000\033@\330\330\232\004\3300`\306\206\223V\265\346d\222\226%\375\327\251\333\021Lm+\261\025\305\260\004fhm\002lm\006q\207\260J\341^\223A\2334eA)\247yw\240\225hc1)\000y\243`\333\033\006\336{\244%\212\311\2416\206\304T\210\211\373+ \253M\203\304(\215U\316A\200\264\216b\033d \246bgMib\323`\214\353\272\023Jm\216q\032\"*\360\023\006\007\242\332l\335c \200\203\022\230c=([\214E\357\332^,\004\354DJ\355KRi;\241R8\211j$\235\021\374at\"\025X[{\207\302\003\\\212p9\311\215\312\0035\327`c\240\013\254\213\332\034_\031\2433\244\336\030c\352-$aZ\255\267H\2213EI\025\234\231cRR""\225\345.\234\3459\315\0311\252\301\204\347\0320h'\242\220\360\312\342{\023\214//\307\223a\337\333\376\220\n3\276\246`x\322L\330\356\312lh\361\202Hp\302\365ZU\374\245b\367\031\t}\260\260c\\\350)b/\251\322\347\346\356\237\327e\375X\302\024\037A\261\266\204\351EY\034\303\354\361\306\r\36320\325:,O\363\215\263Y\202\261\030h\222\246@a\332-I\345+]\217\276\256\253\274\256\256c\252>\217W\227\333\334x\205\330^ab\251w\035\327\257.s\207*\321\034\301\026\017Q\356\007&\374*qQ\021y#Ni;\302\225\026L\224\245\347\341c%X1k\241\033\244\207>$ !DB\346\021K\374\341\355+\244V\337>\001(\340\316\036wg]\020\264-4\032z\230aje\217>\313\016D\002&N\344\377k\252L\314\260\220\033(\367\227\352\tR\314\257\276\332\"S\243\351P\376\177?\021\265\007r\356\342\347U\302\376W*\005jUS\006\254J\034\321A%8\275\214\362R\200\246\341C\022\001\214&-\211gi\254\205lo\271\370`_\023g\215\034\367CJK\231\034\242\3419V@\313\253W\316\313I\300\252\350\270\203\3409\025Q\225+\007\301\265\326=\256\037\271$\215\322\355\300\013\237:vz\362\227\321\376\277g\323\212!\210& ]\212{F\243Ja\010A\007u-\267\367wv\366\366:\235\317\253\315\323yv\223\257\247AUX\244\r\306\354\252$\202&~;\370j%(\366\017y\342?\260\233\255\204\016\205\303\2109\300G\005\202'\313\316\000\367\214u+-\214[\214K\241 \007\255\232\340\006A\306\310\027\223\322G\177w=7L\350\345\255\216\021\021;\"C\017r\251\313M@Z\004L\311\243b\315\251\n \372\354\030v\024&J\323\307\035\200\\~*\330\202a\205\261\304\277\030\212\256C\271<\223\223\250k\306\230\230\343\320\263.\231\277_\002%\205\226\005\233[K\326\321H\204H\244Q6\323m\214\226\347{\226\336w\242M\020\211\312\224\255\321\010 \227\\|\265\010\203\321\033q}x\2565\025\240\327v\276^\324\357\336\377xlo2\224\313\246\324\313\374\260\311\367\321\311\243G\026\272nm\311b\220\216\247\017\207\352\303d\257eBo\353\335\036Y\234\371+%\246\363\rnb*\206\023\220\031^l&\255h9?\033\215\372\237f\000\331&\022\225z\272\2502\206[Z\246#\013E\247\365\021{\371\036\326\235\255q\013\243\003\220`X\006\005\305\311v\025\331ed\221$\022\220I\350y\032\243\265D+Jc""\307\016\030\367MX\034p\325\277\313\211r&\214\023o\274\244\326\034vn9\351\250qCN\242eca\306\321\266\324\237\245~7\025\337\345J\224\200\342c\033|\214\206\230\307\362\341(\227:\024\222<\007\010\364\007\236^f\367\013q\260\303*&\244\013\356>\256S\216\024\253\026tn\304b\331\230T\254\270\235\035\304\364\025)CE\322\276\252E\324m\344\252\000\366T\272D\331/X\"\226\254T\212\214\357\223\014\361\025\2465\330\350\301KN\024\230F\247\002H\270\211\010\005Zf\004\033\010\201\246\345\211\020,m\211\263H\232\300\334\334^I\001\243\212\232\323\354\271pm\262d\221z,\255c\014_5\003\373\264\221\222\205\307n\004:\274\323\037\271\2402e\276\244\303\312\250\372\320A\350\253\351\242z\275+H\326\006n\r\036%XD\027a\372O\342\001\270\272\000\236\230\024+Ccba\013\025\345\215\274X\240Z\326\001\r\271\274\273\304\001\276m\226\036\244\\\261\004>\304\272\273R\353\027\373\200;}jVa\025@\310\037tC^\306q.\333\234;Go\230\316\343\203w\346\036A\344O`M\007f\336\212m\346\030\336}K]\375\034\376N\017 \345k\277h\007\222\357\304![Q\r\003R\001\350\0344]$RJz\200p\347\2571\317,;\257\327\351\232\313f\270\337Gl\022a9\276\n\224H\320\014z\002\032f\347\225\250%\247>7\214A\304\266\3556\234t\336\300\032=\376\230nKI\222J\024\341\220\230t\310\222\2252\353\267\tD\336\301\221atFp\2330A\203\004w\324\2348\023c\020\035\32525\353\032\300\327\021\277\010i\335\376\361\022y\364w\222OM1\274\246\366y\313\356\271\251\231\231\021\033f\t\220Xg\200Y\331B\031\000f\000&\312c\026\304\344\252\356HR\211-\24666\302\324\240\253\2069\211\027\301u)\272\220\263\204\255U\372\006'\203Z\333ij<\312\261\323\021\203\035)\"\017\271\321\253\260\301\267T\370Ai\013\252*G\336|b\246\330\344f\211_Z\235\222\310-\010SRi\337\224\222\332o\355\343\326d\010\301,\264\035\365Za\345\272\006\246\032D\334\316\030\210\200\260\263\252\010C\225j\n\302\321\312\312\253+\214[\010\336\3039N\301\355`\032\227;mz\2522(\371:T\r\356b\256\223w_II\216rJFu|B\2762\035\n=\301\260\033%\346tt\360A\224\030\340\332w\357=\241\2647\273{9X-\263\033\200\201;\003\233o3\314\314\221\254\201C}\021\274\356\254\260\250\345\001J\302I\261Z!\006\026\363l\274\361\267\231\220\322.D\230Z\362\351\261\260Df!^\214.\243\337\240\250o#\250H\236|S""\320E\213\332m\203\031\223\315\216\0021\243\302d\347\205\022\355x_A\026qh\340Q~\322#\203\201\013\234\026\303a\260\347^\211\323eb\335:9\274\\_\251\007x\324\221\255\313\200\356<\306N\235'~\347\323\007\023k\261\207\243\025\310;8\200\351\227\205e\274\035x\322%\n\240.o\024\216\0208V\316\355\355\323A\251\230.\274\000Tj9\316\265]\367\321\332\226\201h\016S\301\3409uiH\300\310\207\242\342\343\203z\272vA\006\266\221\361\236\312M:6\n\332p\346\250\316\027\310u)z\024\231\232\262n\271\240Ag\204\367&/N\344\"\365\205D\274[r\354\356\343\r\327\252\2058\245\"F~\362\35378\305SeJ\264\352O\007\301\310\267\227\322\0275\250\302\230\211JsR=\3515\360Mc\210\020\t\007\240B\020\320\r\210@\320\006\032\310oF\331\336K\014\262\023X\262P\340n\004\rjS\010p \314\253\3656\354\n\314o\361\253X\r\364\325\312\306oQb\033\325Xl\306m\206)jHD\030\351\222I\000\326\003srC\3537\210\262P\345h\330\325\007\312\325+obXT\251!\274\274\254\274\037\024\251*YRK\367\177\222\240\204\213\204\206\r\250\001\265{r\2517\346\366\344*!'\332\037V\362H/=C\270\233~\334\235\240\266B0\246\020\025\321\002{\3251\236\033\373\204' -\014b\352\242\006Y`\367\233\017\241\010\261\331\277\244\203#\330a\240)X}T\230el\204\361\220\232C\240\025\2016\332,\242(\030\037PM@\235&9\206TT\024\310\003C\3133Q\234AL\213m\264\\\014\026\035W\023\341L\004r\207=#\342JWl\n\252\273\347\335\rt\340\203\"\236\277\267\220\025Q\254\210\241 5\006J\200\314\341>1N\253\305\324\t\314\337Cw\232A\220\206-\r\356$/\017H\234\021bC1cQ\244\260\302H\350\253:\242f\210w[\0038WX8\020\207\013\272\356\347N\200\341?]\214\340\252\206\001\204\023\014\231\326\256\241\02369\326\340H?\r\204q\235\035P\214\317^Z\220\326\315N1n\310EQ\375\215\201V\"*\326C#\221\240\020(TT\000\341`\033F\3468\345\020\235m\346Bf\337&z\005*\346=Q\371+\236\322 \007\021\230D\0368\223n \201DQA\257\000\205!6\030@\307\033\020\\\315\223\002,j\310k\020\252\320] \342cO\224\303`\265\347\267\206\262\261U\310\014/\240\324\204 \351c\323C\010\001\212\206\2435\223\351S\026jkSBV\266\230\037/\312\201\001B\252 \250\212\264D\017\212""\023\3003\313\322\364\321\324\370\270\365*\017\216\023\032\207@kUE\244\3455V\2644\023\224u$\216L\312\315\006(\317\223>\201\037\234\014\211\303A'M\234\203\202{(1\267\035\220\371\204\t\225\275<\237\354M\023\202e\365\211\367\034B\333\031c\"~\210A\336\372\307p\270.\207\220\034\277\250\260\307\337r\207\335n)\367\007\204~8c\3270\033\030\241\227q\014=\253\260>\3512DX@\222K\343VX\355\313A\252\343[\204%K\022\320n\260a\r\314Yt\260\274\2757\372\213+\305\373\215;\374\034\035=<\001FI-\365\366\000\313DY\367\267\310/\276[\"e\363\375\256\376 -W\303\375\237\007\332\220a^\354\356y\251\353\257_'\354\272\271\323\267\263\242A\351\267\227\354\355\231\371P)\263A\003X\236\235\312\344E\354)\204?[\201(\356oqTf.O\314\013\274\033\312\361^\007HW\215\225yQ\252\350\257\360\360\002\270\225\024y\262{SE\2573h\0136\266*W\322\372;\022\244x\2533\257\207\243\2131\2779\024\311\216\253\020^\032{\353\274\2365\343p\304`\"\366\310\023\210\276v\310ZU\246\341\212\023Us\021!\314E\342&\000\270\240d\251\251,;\240\031\360\025\034\022\266\010(\030\020\303\301R\026h\242\360\233\020n*\251\331X\320w\221\305X;\320\267x&e`\001\253)\275\014CqM^\367NB\022*\316f\034\250\273\231T$\310\233\233\323\264EP\223S\005\013X\220\305 \304\220\235\320\001\026\321\023&AMQ\214f(\251%V\245l\330\003\0040\020\201\214\000\014N<\217\227+j9\250\223\2475ASzR\032\030.!\220i\325\237\376.\344\212p\241 \231#\n\302"; + PyObject *data = __Pyx_DecompressString(cstring, 4026, 2); if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error) const char* const bytes = __Pyx_PyBytes_AsString(data); #if !CYTHON_ASSUME_SAFE_MACROS if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) } #endif - #elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (3846 bytes) */ -const char* const cstring = "x\332\225XK{\323\326\326\256/\024S\\\210\3014@z\212\034\322\004Jpq\260\201rI\217!\t\344\264\004\034\0078\345\246#K\262#\"K\266$;1p\316\3070C\r5\324PC\r=\364\320C\r=\364O\340'|k\355-\337\003O\372<\261\266\264\367^\227\275\326\273.;\267\231\373\265bQ\324\230\272$\3562\202*\352\214\242\032\214\270WQu\221\321\rM\022D\375\001\2470\252\"7\030^\0239Cd8\246@\211\214m\316`$\235\341U\305\220J5\265\2463\222\302\224\305\262\2525\222@\205\2548]\227J\nc\250\014\020\013W\t\037\272\003E\372\233|\306\273\232dp\005Y\3647P\245\212\232Z\376\032\255\244\010\342\036\263+\031\333\214\321\250\210\314\202?oh\234\242\223c\014H\3506\240\2204\2217\030A*\213\212.\251\212\276\322{c~\026\360D\310\200nZ-W\214\006\243os\300\332\250U@\271\242\2521|\303\330V\225$\247i\\c}\222\035\241\327k\225\212\252\031\242\260\256\3249Y\022\230\262*\210\213h[\330,\n\314\002\277\300\000\253\005\340\207\272.,2%\240\352m\246\022\301\234\334\036\350s\36719\303s<\203Zd\036\253u\361RE\022y\361\336\206\n\206#\216x@tB\355\005Q\226\n\242\006&\005\203\241\023A\036\361\226\302<]}z5}+\315p\212\000F}\007\232\350\240h\201\227\301O\340|\340]\250I\262\001r\321\230z\222Y/2\r\265\306(\"h\014N\254\300\276a\002c[T\030]4\360\205Y \226\347\0140\001\013\344\222RZ\360\255(\325E\244^\343d]L>\251\031D\220ZS\004\020\251\364\340\304\361\274\010\334/\221\023?S\010\022\200\010\320U\0275p\264!\226\361[-\240\332\311\345\205\313\213\314\345\313\277s\202\300*h\004<\022\003v\270\266W\220\325\235\232\316\226\032\345_yU\023\177\365\277}\247U\032{\274*\313\250\025\270*\311\025\370\273C\000F.T\347\345\361\351\036n\226\005IG\345D\242b\211g.\241\343J\0042x\02087x\331\020\025\203\304C\037\026\340\032J\"\340Qt\351\275\310\334\275\307\\\233\000\224\242\202\007\213\\M6\030\226\325D\241\306\213,\313\0105b\rEU\256\202G\353\022'\303*/)\222\301\262J\255\\i$Y\361!`\367@\036,D\016-*\302\236\320\000\263C\023$B!\"9T\3244U+J\262\\\224\271\222^\224U\316\200bX&O\354\211X\010:\205g\007\207\364\2176H\227\275t\321\313\225\303\tc\034\253}@\016#s2\237\034\220I&sH?\021Od_\026\355La\310\226\240D\261\330x\016%\033|\205el\014\307\262\263$\t\222\260\307\262\264\024\263l?!\221\026\027\277\261\326O\370\031\360\004\177\267\320\320}\344\365\222\227\237\266h\277\3417\035\262\244\003\2332\007\354\341\271\007\3351jX\226\024\354OaJ\025\300\357,QIA\273\263\376\023\372\030x\212\273\364\201.\301\032B\352\010\250=TO\024t\241\014\222z\306""\352u^\343\232+\025\000B\317n\370J\243\204\274\021N:\351XT\300\217Z,Bt\017y\023dV\240\362\356\020\222\2363)=}\262xN\222\251\311C\350\271\327\377\362U\353\027<*\320w2\234g\324\335\276:\025\265\302\262\320?\322\330\323AO\362\005\033\240\351\242\357\276\347\361\225\300\237\274\325\224\212\304\357\200U\007et|\201\004\375\350\334\252\322\023\320\237\302\02226Er\350AsC\005\341\240eH\321\343\323\203dJW\352\3446\206\t\004\254 S\030\014:\322\211d\334\237@\260jb\t\354\017\001\216\335\0035\220&\0325M\321\010\244u\314{\272(\203W\341\013U\301\007\025\001o~\377;\224\322\331\003\322;i\006\021\322\276\227HX\221- \271\242\033*\374\264\032\\q\320\2168\t\317mM\335\205\023\003rj\025h2\305\232.\366\031\017b\021\336j\364\241\3575\336\213\232\252{\341kn\240\0239\271o\230\367\354\200\035\373\024\350\204/\332){\315Ix\341\031+\325\215\034\353D\317[s\026\327\211\316Xi\253\332\211\376d\tv\242\023\375\301\024,\030\316Yq+\327\211N\233\325n\034\366[\331N\374\222\023v\262N\316\341:\361\177X9\240\214#GX`PBw*n\256\"\221\027\276\342\244>\177\373\315\261+\316\034\354\215\234\265\302V\266\033\211\356?\330\257\231\331N\364$\014\367M\036\266>\263\347\354\202\023r\322N\335\3157\217\265b\255\213\255|;\324Nu\246@.j_\365\302i\027\210\177\031b\325\211\200>\310\377\373\375U\363\214\311\301\316\350\224y\304|f%,\240E^\277\310\356'8J\344\242\235\366\026n7\023M\237\265\257\354\224\0316\327\254Y\340\270e\237\261\005\347g\247\352\206\334L3\324\004Qx\340S\326\022,\235\262\227\354\034\312^2\363\326\221\376\3012\356\021w\253y\256\225h\245[F\373z\033\364Ackv\034vS}2n\256\0339\276\177\307,\001\233\030\010\364\246\320\234?9\272\233p\323\336\315\177\265\023`\017t\244w\232\230\033=9k'\354\033N\314\013\337t\253\335\010\272\352\255\223r\262\310(\r\036\277cq\326G'\325\211\2366Sh\370?\314\252\025\005GQ\211\204f\0264\334v8\247\212\326L[\357\235\363n\312]i\006|C\334i\246\232\331\317\0214\304\2329o\005\254\031\373\276\315;1\264\315I\357\304\005k\317\256:G\0348\304\211\375wp\340\034.DA""x\335\004\320\2342\177\305\243\2342\223v\000\027\346\372,;\30300\314\033\326y8\322\003[\007\177\010\356\274\017\0010\344\017\3466\240q\026\226\252\304\035^\024\021\227\375\224\375\374\035\225S\305\303\245\001\234\300\360_\246\010\000}`\031\366=7\350\002v\301\257\336\217\213\316}g\333-4\303 \225 }\333\346\354*\312\375`\375b\2578ao\361n3\333\004aq/>\017\370@\314Q\337?\266b4tR \360k@\326\314\323\346\n\034\177\213@Lp\022\235\251sV\314\272\010\000HP\213\334!@\317\365\375:\343<\004C\303A\016\347\202\341\367nd\316\376\303\321\334\030\265A\306\374\0260\363\334\246n\036\001-\252\2366\353\326KpR\310I\365OF\035\364\332\216a\234\373D8\367_k\305\016cj@R\335L\000\361{\3734\032\037#\2763u\3012\274\213\000T\227C\314\257\200\031p?,#\234\277\024/y\373\210\235\007\214l\271g\\\276\031\303\340\350\351\024tf\235\025p\325\254\013\311c\3324\254\033\3669'\341,9\233\216\341.\271\233\256\321\274\336\344:g/X\276\3327\314\030\315O\363\336%\342\264n\364\014\002\215JK\014\363\016\003g\014\272x3\337\n\220D\325\211\237\241&\241\206\350b\024\214\331\237\261\203\366\274\023p\342\316\333\346\215\0268\377\222\023@\364_q\256\2006\325\317'\360\204\217\210\250\350\005k\027\200d8\267\3357\020\327)\032s\004\366$\332\350\327\033\373\242\275\345\374\340\220\324\024\205$\003v\333\260\347\274\371[\315\000\330\202\034\372\016\260\371\350\246\335\377\265r-8\354\217`\263\267\316\300\2333\000\331\2427\207\0043\255\373-\016\201\367\247\025@\206',\301\233\205D\346\346\360D\206\265\354\304\020z\t;\356\375\374[3\326D\354\305\316\003\210\211\267\276\305LM\255|\036\262\304\212\033vW\301<[\255\323\255l\347l\002\"\365\3549jA\360\347\231\356\301l\036\2305\313wV\332\252\333/I\032LM\222#I\2348\3435Q\212\3160P_\006L0\216\326 \270\263\004\037y\342\2563M\036\354~v\246\317\035\321\261\322\0146g!\010~\004\000B\276;\007\031\221\242c\251\271\3314Z\327\301l\314\257`c&\201\232UA\221nO\221\263\220\263~\262\017t\266\357\333\303:\364@\253\243\224\017\220\204\357\002`\227!i%H$\370\t\366\262\023\353\366j\313\0019\302\303\364\2151\374=p""\376\316\276L|\022\360\243\326\233^\000\020\0070\003\3124\207L\355\023\020}\017@\276\300t\351\333'<\301\221\023\373[\346y+\355]\270\006.\375\003\014\222\352\204\243\373\017\315\024\234k\021\022Z\370\350\247\372\376\013Z\224;\221Sf\242\023!\370G'\376f?\204\352\024\002\3705ZG[U\334\213\005\327;\231r\343\020\350\245\346\253\366\3216\232ox&\320\227\353\305 /\331\273\220\264\023\207\226\351\315,b\362\033\210\232Gk87\335+\315\027\255lwt&7$\312\007d\334\273\367\244mx\371\222W\332\361vtO\337\375\374\3157{\201\325 \014\253\301u\034\326\203/px\021|\205\303\253\240\214\203\034\254\340P\t~\304\341c\360\237!\030\376\031\332\300a#\264\211\303f\350-\016oC\005\034\n!\031\0079T\301\241\022\252\206\016o\327\337\235\005\222\357@\331\247\336\323\027\336\213\327\336k\326cy\2177<\343\003\312\017dQ\215lp\005\207\225\340#\034\036\365\024.\340P\010\226p(\005\337\341\360.\250\340\240\004k8\324z\247\310\242n\331\320\n\016+\241G8<\n\345q\310\207^\342\3602\304\342\300\366\316T\304\241\030RqPCu\034\352\241\335\320\300\035W\240\017\253\272G\335\017\255\205v\254;:\223\030 n\232\000\373\320\006\271aO\223 \017\273\353\350\346\277\357\3759\250\325\307\001\247\357[\361\326[/\017&}\343\275\341<\256\3607\200w\325y\0019\357ts\245u\254=\355=\315\r\264X\304\330s\247\233\307[7\333\211\356\350LjL\213\223\220y~o\317\265\025\357\365\177\274\377p\207\267\301\2623\rI.\017\255\310F{\301\313=\367\236\377\345\375\005\247x\347\275\253z\325\272Wox\215\377\202?\376\027XC\347\256\005\037\343\3608\270\021\034(z\031\212S\316)\271\2570\\\273\2433\303q\211\211n\007\"\026+`\356\260*\016\305\377\317P\267b\000\342\231\346C\314\205#3\244\367\204\354\346\314\273\001\013\272O\310\244\243\2754\346\316\245\375\247\024\324\254R\206Ia0r\"\3441oi\302\323\205\247\227\3237\322\202\244\345`\324w\320\304\200\242Y\271\000?\301\371\340\235\255\250\005\023r\311\230\306\264\260\270&\324\364\212\240)\320\030N,b_/\201\271\256h\202\241\230\364\"L2\313K&L \202\\\325\362\223\201\025\325\252B\324\367\245\202\241L?\251\230L\220^\321r\020\251\265\341$\311\262\002\356\027\330\211\237i\014\t \002\272\252J\031\2166\225\r\372\326\263\244\366\364\334\344\305)\341\342\305_\245\\N\324\310\010t$\001v\270\262\225-\350\357+\206\0308\251X\333\222\365B\201\264\200k\246\245\254|\273\007\260D\305u\234\033\234n\343d.\247\032\244\214\302T\312\313\302\005rT\236A\204\024\3079\341US\321L\206\377\016\014\340\nN\222#\325\r\365\203\"\334\276#\\\031\002PA5L\341\243\360X\327\024M\207\363\326\244J\301\024D\261\254\344*\262\"\212B\256\302\014\241\351\332e8\263\252J\005\254\312\252\246\232\242\250U6\212\265iQ\326\313\312\364\006\350T\306RX\223\324\002\367\230\272A(\354\335V\331\220\020\005\203;\002\273\316M\001\224*\316rgJ@\364\334\271p\233g\201\\\237\245\206\347\010\312\035\203\365\255\367\317jyC\257""\224ee\256\322q\260T(\3502K,L\365\234dJ\323\273\254\362\210 \216A^\232\316\254\334[\\\274\313\234\375@\332P\272o\323\035\343q;\213b\337\032\360j\000\246\273\257\312\353\212\374^\314\343]D\224\225{\227\362\212\306\242J\224\030\226D\243(\311\312\364m\322\257`\314M\323\362V\261\227B*\026\0135q\003|z&e\275X\353\371\314+f\300o`r\200\214\246\212\005\010\314\221\027\241\210\261\373\242Q\252Heep\321 \317\017M\222\021\006\346X\366\t\024\032\334\277\251j\003r\327%#\240 m{WTcW\033\302BL\323Z\337,M\014\236\027\352*f\317wW\314]]*\347\330c\027?\007\323\303.f\013rA\221\312\301+i&\34597v\rQ\241\222\323\371Z\253\264\265b\016^(\024\324\242\241\032\367g\027S\2133\213W\027\323\213\263\177\246\377\234\245\222@\377\303&\tf\207,\362x\2262\316\223\364\323\331\247TI\330\343\t\013}\226\301\007\277\207\031\357\262cH\010\333\263\242\230\355\361\013\\\370\312\027\251\271C\272\222\214\276\205bG\375\276\031Q\315\261\311/\210\334U\036s\330\n\315\365\274\356\302\240oq\210\r6\324\266\360?\217\302+>\006\342\227\225\265\225\364\212R\252(\232\254\254\246Wg\237\315>\277\372|\226\312\371t\267\262\277\230\375\347\354_\263/gE\224(\036\200\355\334'\362\n)\212A\201EQ\350\246\026\311\250i\262\252\003\320e\275\202\312\255\030R\025\271\235\362'7\204\221\225\014%\253jf_]\314\022\246D\252JY]/\310\262\2441n\203\371o\360{(\335\241\022Q/@\247\346/p\000\325;\372D\260\311\005h$\002\344\350qd%+\311\357\345\002\2322J\202<\220\304r\005\265\231\307\224\214@0\333\201)W\312e8<\210\"yK\256\211b\216,\312\237\364\310Q\223\302\036\"\"\205\027\260\334V\256\0063\243\327RP\364X\276V\312e\275\274\246\026\nk\005)o\254\025t\311D\r\336`Oj\275D\004\231&\213\335C\006G\353\246\346vzh\347\345\336\0041\210\315\016\000{\2218\234\275\207S\366p\216\331%\273\014\347\225nz\017r\272\226#\317r\327w\322\374Pn\357I\350\"\371\214CX\314\243\264\212\324+\367$*z\3052\365\262\003\t_UsjnK\024y\013!\212\235d\306\272r\372\246\036e\0103\300\"\376n\220\323:\250m'""\276 \345\365\326\017\336>\005=\024uK\242\270!A\024\236[\370\343\247G\227Ojo\250\032\365\331X\323s\000\226\310\364\324\210\223\030<\321\237\341\251l\362\007\t\241\242\304\n\023\316\322S\2404\302H\001\"\333\226nw\224\203\307\321\212@Z\333\256\364\312m\317\336\030'\203\265_:\000\252\257\255!]\364\300\0052\213h#\336\0271\022U\0330\234\005\177\212tf\206\225~\010\365\303\247SD\271\314\000$8R?\\\002\215\212zQ\024\321\032\363\3706\240*\373\302\0064\221\374=@\004\275\262\020co\025\255\250\312\357a\330ni\036\\`\211\245\177nAk\013\350LQY\032\230byy\267\271\236\"\263\3332\322\376\340t7A\363\225*\273XR\222\202\025\n\034\t\335\016{(\301w&\010\304e%\017\373#\211PG\302\rTV\314JY+3\250\033<\370\330\303P\n\360/&I#zpIx\013\332\372\236j!\356R9X\217K(\017\234\305\242\216m\201\002E\303\324\361_\256\340\322F\346\244I<\327\313\372&\016\016\014\341\311\020Q)\242\207V*\206\322\021\320\rY\274U\370\303\330\252}P\312\272\341G\257x\241\346\310\221m\323\272\343\204\234\370\247P3z\336I9\367\335\244\037\035\263S\255\221\003\315\330\031{\334\226\232\2611;m\227\232\261\037\355\234\223l\306NX9\033\303i;a/5c'\255R+\201\375v\246\231\270\340F\335\214\273\344J\315\304\017\366\022(\023\304\021\013\002Ih\215&\254\005\"\362\243\227\334\324\347o\2779p\311\035\307\336\221Sv\324\316\264Fb\333\367\266+V\246\031;\202\341\256%c\3533g\334\311\272\0217\355V\275\225\372\201F\274q\276\261\262\023\331I5G!\227\264/\371\321\264\007\342\237{X5G\240\017\361?\264\275`\035\267$\354\214\215Z\373\254gv\322\006\3451\353\027;c\2578\021\347\252\003\025\317\330\223\316Q\366\372Ev?\342(#\347\235\264?y\263\236\254\007\254\003eG\255\250u\337>\007\216\253\316q'\347\376\344\226\274\2107[\217\324!\212\016|\324\236\301\322Qg\306Y\"\3313\326\212\275\257s\260Yo\237\267Z?\335H6\322\rs\347\352\016\364!c\227\235\004v\223>\237B\255\350\301\355\364v\311\n\371\321Yo\2515rp\373\226\225\007\3078d\373\243d\331\037]\303Kzi\377\372\357;I\230\206|\352\037c\226'\247\236s\222\31657\356G\257{\245\326\010y\355\255\233r3\304(\r\347\337\262%\373\243\233j""\306\216Y)\362\301\037V\311\216\301g\334\030\214\346\034\224]w%\267D\206M\333\037\3343^\312\233\257\207\002\233\334\252\247\352\231\317#d\223\373\326\204\035\262\307\234\273\216\354\306\311LG\374\303g\355-\247\344\356sq\236\303\333\357p\366%Z\210Ax\325\002~\216Z\377\240\243\034\265\246\235\020-\214wX6{\021aZ\327\35438\322=\307\200kr\336D\200\006\330\364\204\265\016`\236\303R\211y\306\217\021\3702~\364{;\363\371\3607\007\276\007\030b\244\335\357\004\334\026!\226\334\266\337\2520\247\235\301\341G\311\321\277;\357\274\220\027''\315\332\337\332\262s\302)\021t\367\301\025\261\004\234L8!\347\037\032\3356\254\244u\315?=\345\336\203UFO\333\361\026N0i\307\021\030\314k\231\317\337\3613\226\310\260i\304\010\016\363\273\245 N\356\331\246s\307\013{\010!H\365\277\237r\357\272\353^\266\036\305\211Y\300\255;\022\004\343\314\177\333?;\363n\324\237\272]\317\324q\320\204\237\230\000L\t\372\034\202\217\3548\217\340\024\004~-\236\312\3261k\036\246_eH\317\271I\246\263}\0368Lro\334b\361\266\324\301\324\230\373\000N\316|\312\354\315\375\275\357\255\221q\347\017\267\354\305\271\rf\255o\201\327\347\016\207X_\354\220\352i\253j\277\004@\"n\252s2\016\216\327N\234\322M@Ds\377\266\347\235(e(\"%\027\244\255\017\3161r<%\236\346\350Y\333\364\317#H<\211Bo\036f\240\375\367\310\215\235\2140\024\266+p\360\n\360\271\352\035\367\344:s\177[\247\260{\316\235\207\253\316y\310a'-\323\276\346\234v\223\356\214\273\354\232\336\214\267\354\231\365\253u\251y\352\254\035\250}\315\212\36349\341_`Nk\305\216\023\310\271\264d/\357(8S\354'\352+\215\020\313\227\315\304qn\022n\210\026\007R\237\375\005'\354L\270!7\341\276\255_k\300\371\027\334\020E\336%\367\022\264)\021\332\017m?d\242bg\355M\000\311tozo\220^R<\336Y\310\261H\347_o\234\363\316\252{\302e\021\021C\256\203\335\036;\343\376\304\215z\010\266`\207\276\0056\037\275\264\367\237\306R\003\207ETQ\006\3518f\014\220]\363\307\211`\254q\267!\021\360\376\264C\304\360\260\235\363\317!\237zKt\"\323\236s\343\004\275\244\223\360\177\372\245\036\257\023\366\342g\000b\346\255o""\251`p+#&a\236\250\267\000\363\2546\21652\315SId\211S\247\271\005\341\317\343\255\335\331\334\243\250\346l\322v\325y\311\262qj\230\234H\022\314\031\257\231R|F@\231\3532\2418\272\217\304\222a\370Xa\356:^\227a\367Sc\035\356\204\216\371z\270~\016A\360=\000\210\\{\032\331\230\243c\246\276\\7\033Wa6\341\037\260\261\220$\315JP\244\325V\344\024\362\345\217\316\256\316\016|\273W\207\356ju\222\3627\n\300m\000v\016\t3\311\"!H\356\027\335x\253]\342v\311\021\244\016+%\223\200+\252\017\n\tE\364!\310\371\316\271\310<\024\nb\330?\311\366P..\360\2142\272\315 u\010\260>+\264\370\233\037\005\312\333u\007MG\2408\331\362o\270`\344\007\304\"\372\004\246\235\025\266\306\221\222\216\333*\030\217\300\2073h\000B\237\310\"\373\016o\257Zg\354\264\177\366\n \362\007\014\234jFc\333\017\254\024\3544\205\004\031\335\377\251\272\375\202\367\032\315\221\243\026X\263x\"P\374\342<@\321\215\000\316\265\306\376F\211\366R\037\341\037Iy\t$\216|\375\325\316\376\035rG\357LW\256\037G\236s6Q\200\222{\226\351\217MQ2\355\212\232 \353\272\327\275K\365\027\215L\253\177f\251GT\000\360\204\177\347\311\216\351\257\344\375\374{\377\275\341\033\233\237\277\371f+\264\020\306\260\020^\244a1\374\202\206\027\341W4\274\n\027h(\204\2134\024\303\037i\370\030\376-\202\341\267\310c\032\036G\226iX\216\274\245\341m$KC6R\240\241\020)\322P\214\224\"{\267\353\257\356$\313\237P\366\251\377\364\205\377\342\265\377Z\364E\331\227M\337\374\233\344\2072\244F&\3378\260s\322\177\272\324\325b\212\242\327;Y?\330\270\276\223l\365\317\244\006\2648\202L\366\353\316\370\216\346\277\376\227\377/i\3576\230sO\"i\256\240\265y\2743\351/=""\367\237\377\345\377\205S\274\363\337\225\374R\325\257\326\374\332\277\341\217\377\204\356\223s\357\207\037\321\360(\3748\334U\364\"\212\335\222\233\367^Q\270\266\372gz\343\222\022\347{D,U\324\245\275\252\330\023\377?\241\016\306\001\342\261\372\003\312\255}3\254\217F\266t'\274\220\215N\032\367\001\236\306J==\r\277j\230\310\256,'\336@\253w\327~Gu\336\277\362[#\204\252\301\357,\261v\333\206\014\214\024\337\177\327 \2663\333+h\027H\333e\333\300\251$\022\322{e\371\377\321\206\002:jV\373\350\366|S\352V\2163\350\243\007\356H`\273gF\324\354\200Q\225]\205\226m0n\275\242V\207]\0171\370G'\350r\014\270\274\253\007\355\323\035\\R\356\262\237\003xO\305\272\250v\017\336\302\227\006K\201\301Eb\327\271/O\321/3\243\326\210\275\237<\356G\341\261\316\325\177\006\251k\314\233\367o,\356$vV\375\245g\376\263\347,c\364\374\340\303\372?\376}\235\200\371\344\377\000\022\3677\342"; + PyObject *data = __Pyx_DecompressString(cstring, 4060, 1); if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error) const char* const bytes = __Pyx_PyBytes_AsString(data); #if !CYTHON_ASSUME_SAFE_MACROS if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) } #endif - #else /* compression: none (8220 bytes) */ -const char* const bytes = ": Buffer view does not expose stridesCan only create a buffer that is contiguous in memory.Cannot assign to read-only memoryviewCannot create writable memory view from read-only memoryviewCannot index with type 'Cannot transpose memoryview with indirect dimensionsDimension %d is not directEmpty shape tuple for cython.arrayIndirect dimensions not supportedInvalid mode, expected 'c' or 'fortran', got Invalid shape in axis '), ))?add_note and at 0xblokus_gym/core/blokus_cython.pyxcollections.abcdisableenablegc (got got differing extents in dimension isenableditemsize <= 0 for cython.arrayno default __reduce__ due to non-trivial __cinit__numpy._core.multiarray failed to importnumpy._core.umath failed to import object>, orient=, pos=(unable to allocate array data.unable to allocate shape and strides.ASCIIBlokusGameBlokusGame.__reduce_cython__BlokusGame.__setstate_cython__BlokusGame._check_game_overBlokusGame._generate_action_space..genexprBlokusGame.apply_moveBlokusGame.copyBlokusGame.get_actionBlokusGame.get_moveBlokusGame.get_stateBlokusGame.get_valid_actionsBlokusGame.has_valid_movesBlokusGame.next_playerBlokusGame.play_moveBlokusGame.resetBlokusGame.valid_moveBoardBoard.__reduce_cython__Board.__setstate_cython__Board.clearBoard.coverageBoard.get_cellBoard.get_occupiedBoard.get_player_cornersBoard.get_player_occupiedBoard.get_player_squaresBoard.has_overlapBoard.in_boundsBoard.is_emptyBoard.is_fullBoard.placeEllipsisF5I1I2I3I4I5L4L5MoveMove.__reduce_cython__Move.__setstate_cython__N5NoneO4P5PiecePieceOrientationPieceOrientation.__reduce_cython__PieceOrien""tation.__setstate_cython__PieceSetPieceSet.__reduce_cython__PieceSet.__setstate_cython__PieceSet.get_orientationsPieceSet.get_piecePieceSet.get_piece_idPiece.__reduce_cython__Piece.__setstate_cython__PlayerStatePlayerState.__reduce_cython__PlayerState.__setstate_cython____Pyx_PyDict_NextRefS4SequenceT4T5U5V3V5View.MemoryViewW5X5Y5Z5_abcactionallocate_buffer__annotate__apply_moveasyncio.coroutinesavailable_piecesbasebintblokus_gym.core.blokus_cythonboard_sizeboolccan_move_check_game_over_check_game_over..genexpr__class____class_getitem__clearcline_in_tracebackclosecopycorner_rulecornerscountcoveragecurrent_playercxcy__dict__dict_dictdtypedtype_is_objectdxdyencodeenumerateerrorfillflagsfloatformatfortran__func__game_overgenexprget_actionget_cellget_moveget_occupiedget_orientationsget_pieceget_piece_idget_player_cornersget_player_occupiedget_player_squaresget_stateget_valid_actions__getstate__grid_viewhas_overlaphas_startedhas_valid_movesiididx__import__in_boundsindex__init__..genexprintint8_is_coroutineis_emptyis_fullitemsitemsizelist__main__maxmemviewminmode__module__movename__name__ndim__new__new_gamenextnext_idxnext_playernormalize_squares_cython..genexprnpnum_actionsnum_piecesnum_playersnumpyoobjoffsetorientation_idppackpiecepiece_idpiecespieces_listplaceplaced_cornersplaced_squaresplay_moveplayerplayer_idxplayer_squaresplayerspop__pyx_checksum__pyx_result__pyx_state__pyx_type__pyx_unpickle_BlokusGame__pyx_unpickle_Board__pyx_unpickle_Enum__pyx_unpickle_Move__pyx_unpickle_Piece__pyx_unpickle_PieceOrientation__pyx_unpickle_PieceSet__pyx_unpickle_PlayerState__pyx_vtable____qualname____reduce____reduce_cython____reduce_ex__registerresetresultreturnroundsscoreselfsendset__set_name__setdefault__setstate____setstate_cython__shapesizesquaresstartstatestepstopstructsum__test__throwunpackupdateuse_setstatevalid_movevaluevaluesxyzeros\320\0040\260\001\330\010\017\210t\220=\240\001\240\021\200\001\330\004#\2401\240F\250!\320\004\033\2301\340\010\t""\330\014\032\230$\230a\330\014\033\2304\230q\330\014\036\230d\240!\330\014\026\220d\230!\330\014\031\230\024\230Q\330\014\027\220q\340\024\033\2301\230A\330\024(\250\004\250A\250Q\250a\330\024\035\230Q\230a\330\024#\2401\240A\330\024 \240\001\240\021\340\020\024\220E\230\024\230Q\320\004+\2501\360\006\000\t+\250$\250a\330\010\030\230\004\230A\340\010\014\210C\210u\220A\330\014\017\210u\220B\220c\230\024\230U\240$\240b\250\003\2504\250v\260S\270\t\300\021\300#\300S\310\003\3101\330\020\027\220q\330\010\017\210q\320\0044\260A\340\010*\250$\250a\330\010\030\230\004\230A\330\010\033\2301\360\006\000\t\r\210E\220\025\220a\220q\330\014\020\220\005\220U\230!\2301\330\020\023\2209\230A\230S\240\003\2403\240a\330\024\032\230'\240\022\2403\240a\330\010\017\210q\320\0044\260A\340\010*\250$\250a\330\010\030\230\004\230A\330\010\036\230a\330\010#\2404\320':\270!\2701\360\006\000\t\r\210C\210u\220A\330\014\020\220\004\220F\230\"\230A\230T\240\025\240d\250%\250q\260\003\2605\270\003\2701\330\020\024\220E\230\022\2302\230T\240\022\2402\240Q\330\020\023\2202\220S\230\005\230U\240$\240b\250\003\2505\260\005\260T\270\031\300!\3004\300t\3103\310a\330\024\033\2304\230r\240\024\240Q\330\010\017\210q\320\0045\260Q\340\010\013\210;\220g\230T\240\021\330\014\020\320\020 \240\001\240\036\250s\260!\2604\3207J\310!\3101\330\010\017\210t\320\023#\2401\240A\200\001\330\004\"\240!\2406\250\021\320\0047\260q\340\010\031\230\024\230^\2501\250A\340\010\013\2104\210t\220;\230a\230|\2501\330\014\023\2201\340\010\014\210K\220q\230\014\240A\330\010\017\210q\320\0047\260q\340\010\"\240$\240h\250a\250q\330\010\033\2304\230z\250\032\2601\260D\270\001\330\010#\2404\320';\2701\270A\360\010\000\t\r\210F\220&\230\001\230\033\240B\240c\250\021\360\006\000\t\017\320\016\037\230x\240q\250\005\250Q\330\010\016\210j\230\005\230Q\360\006\000\t\014\2104\210v\220Q\330\014\022\220/\240\021\330\014\022\220.\240\001\360\006\000\t$\2404\320';\2701\270A\330\010\014\210C\210u\220A\330\014\017\210t\2206\230\032\2401\240C""\240s\250$\250d\260&\270\t\300\021\300#\300Q\330\020\026\220h\230d\240\"\240C\240q\360\006\000\t\r\320\014\035\230Q\230A\200A\360\n\000\t\014\2104\210q\330\014\023\2204\220q\340\010\014\210J\220e\2301\230C\230t\240=\260\002\260!\330\014\030\230\004\320\034,\250B\250h\260b\270\004\270A\330\014\032\230$\230h\240a\240q\330\014\017\210{\230*\240D\250\004\320,<\270A\270Q\330\020\024\320\024&\240a\330\020\027\220q\360\006\000\t\r\210M\230\021\330\010\017\210t\2201\200A\360\006\000\t+\250$\250a\330\010\030\230\004\230A\340\010\014\210C\210u\220A\330\014\017\210r\220\023\220D\230\005\230T\240\022\2403\240d\250!\330\020\031\230\021\230#\230U\240!\360\006\000\t\014\210;\220c\230\024\230Q\330\014\020\320\020 \240\001\240\033\250G\2601\260A\200A\340\010\"\240$\240h\250a\250q\330\010\033\2304\230z\250\032\2601\260D\270\001\330\010#\2404\320';\2701\270A\330\010#\2404\320';\2701\270A\340\010$\240K\250r\260\021\360\n\000\t\014\2105\220\006\220g\230V\2401\330\014\023\2201\360\006\000\t\r\210C\210u\220A\330\014\017\210t\2204\220v\230Z\240q\250\003\2501\330\020\027\220q\360\006\000\t\014\2104\210v\220\\\240\021\240!\330\014\023\2201\360\006\000\t\014\2104\210}\230D\240\004\240F\250!\330\014\017\210s\220!\2204\220z\240\023\240C\240q\250\004\250A\330\020\037\230t\320#5\260Q\260a\330\020\024\220D\230\004\230D\240\004\240C\240q\330\024\033\2301\360\006\000\t\r\210C\210u\220A\330\014\020\220\004\220F\230\"\230A\230S\240\005\240S\250\005\250T\260\025\260c\270\021\330\020\023\2204\220v\230Z\240q\250\002\250\"\250D\260\002\260\"\260A\330\024\027\220t\2306\240\031\250!\2502\250R\250t\2602\260R\260t\2703\270a\330\030\037\230q\360\006\000\t\014\2106\220\021\330\014\036\230d\240&\320(<\270A\270Q\340\014\025\220Q\330\014\020\220\004\220F\230!\330\020\023\2204\220v\230Z\240q\250\004\250D\260\005\260T\270\024\270S\300\001\330\024\035\230Q\330\024\025\330\014\017\210t\2201\330\020\027\220q\340\010\017\210q\200A\340\010\"\240$\240h\250a\250q\330\010 \240\002\240&\250\001\250\024\250^\2706\300\021\330""\010(\250\001\360\010\000\t+\250+\260R\260q\360\016\000\t\r\210H\220F\230!\330\014\037\230w\240a\240t\250:\260]\300!\3001\340\010\013\2104\210v\220Q\330\014\023\2201\340\010\013\2104\210v\220]\240#\240T\250\026\250q\330\014\020\220\014\230A\330\020\024\220N\240$\320&8\270\001\270\021\330\024\027\220t\230;\240a\240|\2604\260~\300Q\300a\330\030\034\230A\230^\2501\330\014\023\2201\360\006\000\t\033\230$\230f\320$8\270\001\270\033\300B\300a\340\010\014\210L\230\001\330\014\020\220\016\230d\320\"4\260A\260Q\330\020\027\220t\230>\250\021\250!\330\020!\240\024\320%9\270\021\270!\360\006\000\021\032\230\021\330\020\024\220D\230\006\230a\330\024\027\220t\2306\240\032\2501\250D\260\004\260E\270\024\270T\300\023\300A\330\030!\240\021\330\030\031\330\020\023\2204\220q\330\024\025\340\020!\240\024\320%9\270\021\270!\360\006\000\021\032\230\021\330\020\024\220C\220u\230A\330\024\027\220t\2304\230v\240Z\250q\260\003\2601\330\030!\240\021\330\030\031\330\020\023\2204\220q\330\024\025\360\006\000\021\024\2204\220v\230\\\250\021\250!\330\024\025\360\006\000\021 \230q\330\020\024\220C\220u\230A\330\024\030\230\004\230F\240\"\240A\240S\250\005\250S\260\005\260T\270\025\270c\300\021\330\030\033\2304\230v\240Z\250q\260\002\260\"\260D\270\002\270\"\270A\330\034\037\230t\2406\250\031\260!\2602\260R\260t\2702\270R\270t\3003\300a\330 /\250q\330 !\330\024\027\220q\330\030\031\340\020\023\2204\220q\330\024\030\230\001\230\036\240q\340\010\017\210q\200A\340\010\"\240$\240h\250a\250q\330\010(\250\001\360\010\000\t\r\210H\220F\230!\330\014\037\230w\240a\240t\250:\260]\300!\3001\340\010\013\2104\210v\220Q\330\014\023\2201\340\010\014\210L\230\001\330\014\020\220\016\230d\320\"4\260A\260Q\330\020\023\2204\220{\240!\240<\250t\260>\300\021\300!\330\024\033\2301\330\010\017\210q\320\004)\250\021\340\010\030\230\004\230A\330\010\017\210r\220\023\220D\230\005\230T\240\022\2403\240d\250!\320\004\"\240!\360\n\000\t\r\210L\230\n\240)\2501\250D\260\001\330\014\017\210t\2204\320\027'\240q\250\001\330\020""\026\220l\240!\360\006\000\t\020\210q\330\014\020\220\r\230Q\330\037 \340\014\020\220\r\230Q\200\001\360\010\000\005\016\210T\220\032\2304\320\0370\260\004\260K\270t\3001\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\027\220t\2309\240G\2505\260\003\2604\260y\300\007\300q\330\004\007\200q\330\010\017\320\0171\260\024\260Q\260g\270[\310\007\310q\340\010\017\320\0171\260\024\260Q\260g\270[\310\001\200\001\360\010\000\005\016\210T\320\021#\2404\240w\250d\260!\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\027\220t\320\033,\250G\2601\330\004\007\200q\330\010\017\320\017&\240d\250!\2507\260+\270W\300A\340\010\017\320\017&\240d\250!\2507\260+\270Q\200\001\360\010\000\005\016\210T\320\021!\240\024\320%9\270\024\320=O\310t\320Sg\320gk\320ks\320sw\360\000\000x\001E\002\360\000\000E\002I\002\360\000\000I\002W\002\360\000\000W\002[\002\360\000\000[\002l\002\360\000\000l\002p\002\360\000\000p\002|\002\360\000\000|\002@\003\360\000\000@\003N\003\360\000\000N\003R\003\360\000\000R\003^\003\360\000\000^\003b\003\360\000\000b\003l\003\360\000\000l\003p\003\360\000\000p\003q\003\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\027\220t\230?\250'\260\025\260c\270\024\320=P\320PW\320W\\\320\\_\320_c\320ct\320t{\360\000\000|\001A\002\360\000\000A\002D\002\360\000\000D\002H\002\360\000\000H\002[\002\360\000\000[\002b\002\360\000\000b\002g\002\360\000\000g\002j\002\360\000\000j\002n\002\360\000\000n\002u\002\360\000\000u\002|\002\360\000\000|\002A\003\360\000\000A\003D\003\360\000\000D\003H\003\360\000\000H\003S\003\360\000\000S\003Z\003\360\000\000Z\003_\003\360\000\000_\003b\003\360\000\000b\003f\003\360\000\000f\003o\003\360\000\000o\003v\003\360\000\000v\003w\003\330\004\007\200q\330\010\017\320\017+\2504\250q\260\007\260{\300'\310\021\340\010\017\320\017+\2504\250q\260""\007\260{\300!\200\001\360\010\000\005\016\210T\220\027\230\004\230A\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\027\220t\2306\240\027\250\005\250S\260\004\260I\270W\300A\330\004\007\200q\330\010\017\320\017&\240d\250!\2507\260+\270W\300A\340\010\017\320\017&\240d\250!\2507\260+\270Q\200\001\360\010\000\005\016\210T\320\021$\240D\250\013\2604\260z\300\024\300^\320SW\320W]\320]a\320ab\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\027\220t\320\033-\250W\260E\270\023\270D\300\t\310\027\320PQ\330\004\007\200q\330\010\017\320\017,\250D\260\001\260\027\270\013\3007\310!\340\010\017\320\017,\250D\260\001\260\027\270\013\3001\200\001\360\010\000\005\016\210T\320\021$\240D\250\017\260t\270?\310$\310n\320\\`\320`a\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\027\220t\230>\250\027\260\005\260S\270\004\270N\310'\320QV\320VY\320Y]\320]j\320jq\320qv\320vy\320y}\360\000\000~\001F\002\360\000\000F\002M\002\360\000\000M\002N\002\330\004\007\200q\330\010\017\320\017)\250\024\250Q\250g\260[\300\007\300q\340\010\017\320\017)\250\024\250Q\250g\260[\300\001\200\001\360\010\000\005\016\210T\320\021\"\240$\240k\260\024\260T\270\024\270Q\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\027\220q\330\004\007\200q\330\010\017\320\017%\240T\250\021\250'\260\033\270G\3001\340\010\017\320\017%\240T\250\021\250'\260\033\270A\200\001\330\004)\250\021\250&\260\001\230\021\320\004(\250\001\340\010*\250$\250a\330\010\030\230\004\230A\340\010\013\2102\210S\220\004\220E\230\024\230R\230s\240$\240a\330\014\023\2209\230A\230S\240\003\2403\240a\330\010\017\210q\320\004(\250\001\340\010*\250$\250a\330\010\030\230\004\230A\340\010\013\2102\210S\220\004\220E\230\024\230R\230s\240$\240a\330\014\023\2209\230A\230S\240\001""\330\010\017\210q\320\004\031\230\021\340\010*\250$\250a\330\010\030\230\004\230A\360\006\000\t\r\210E\220\025\220a\220q\330\014\020\220\005\220U\230!\2301\330\020\023\2209\230A\230S\240\003\2403\240a\330\024\033\2301\330\010\017\210q\320\004\032\230!\340\010*\250$\250a\330\010\030\230\004\230A\330\010\031\230\021\360\006\000\t\r\210E\220\025\220a\220q\330\014\020\220\005\220U\230!\2301\330\020\023\2209\230A\230S\240\003\2403\240a\330\024\035\230Q\330\010\017\210v\220S\230\005\230R\230q\320\004\026\220a\340\010#\240:\250Q\330\014\027\220t\2301\330\014\023\2204\220q\330\014\030\230\004\230A\330\014\030\230\004\230A\360\006\000\t\021\220\t\230\024\230V\2405\250\001\330\010\020\320\020\"\240$\240a\330\010\020\220\n\230$\230a\330\010\020\220\r\230T\240\021\340\010\014\210C\210u\220I\230Q\230d\240!\330\014\024\220H\230A\230R\320\0373\2601\3204E\300U\310!\330\014\024\220H\230A\230R\230{\250!\2508\2605\270\001\330\014\024\220H\230A\230R\230y\250\001\250\021\330\014\024\220H\230A\230R\230\177\250a\250q\330\014\024\220H\230A\230R\230|\2501\250A\340\010\017\210q\320\004\036\230a\340\010*\250$\250a\330\010\030\230\004\230A\330\010\035\230Q\360\006\000\t\r\210E\220\025\220a\220q\330\014\020\220\005\220U\230!\2301\330\020\023\2209\230A\230S\240\003\2403\240a\330\024\032\230$\230b\240\003\2401\330\010\017\210q\320\004&\240a\330\010\017\210t\220>\240\021\240!\200\001\330\004.\250a\250v\260Q\200\001\330\004&\240a\240v\250Q\240q\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\2204\220x\230q\240\001\330\004\007\200|\2207\230!\330\010&\240a\240w\250n\270A\330\004\013\2101\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\2205\230\010\240\001\240\021\330\004\007\200|\2207\230!\330\010'\240q\250\010\260\016\270a\330\004\013\2101\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\320\023#\2408\2501\250A\330\004\007\200|\2207\230!\330\0102\260!\3203F\300n\320TU\330\004\013\2101\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330""\004\023\2208\2308\2401\240A\330\004\007\200|\2207\230!\330\010*\250!\250;\260n\300A\330\004\013\2101\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\220:\230X\240Q\240a\330\004\007\200|\2207\230!\330\010,\250A\250]\270.\310\001\330\004\013\2101\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\220;\230h\240a\240q\330\004\007\200|\2207\230!\330\010-\250Q\250n\270N\310!\330\004\013\2101\210q\230q\200\001\330\004(\250\001\250\026\250q\320\004\027\220q\340\010\014\210E\220\025\220a\220q\320\004\027\220q\340\010\014\210I\220U\230!\2304\230q\330\010\014\210K\220q\330\010\014\320\014\036\230a\330\010\014\210J\220a\330\010\014\210M\230\021\340\010\014\210E\220\025\220a\220t\2301\330\014\025\220[\240\001\330\014\022\220'\230\021\330\014\022\320\022&\240c\250\021\250$\250j\270\001\330\014\017\210t\220=\240\004\240B\240b\250\003\2501\250D\260\001\330\020\026\220l\240$\320&8\270\001\270\021\340\020\026\220n\240A\330\014\022\220)\2301\330\014\022\220/\240\021\330\014\022\220,\230a\330\014\020\220\010\230\007\230q\240\001\320\004'\240q\330\010\017\210t\320\023#\2402\240T\250\033\260D\3208I\310\024\310T\320QU\320UV\320\004(\250\001\330\010\017\210t\220=\240\001\240\021\320\004)\250\021\330\010\017\210t\2207\230!\2301O"; + #else /* compression: none (8726 bytes) */ +const char* const bytes = ": Buffer view does not expose stridesCan only create a buffer that is contiguous in memory.Cannot assign to read-only memoryviewCannot create writable memory view from read-only memoryviewCannot index with type 'Cannot transpose memoryview with indirect dimensionsDimension %d is not directEmpty shape tuple for cython.arrayIndirect dimensions not supportedInvalid mode, expected 'c' or 'fortran', got Invalid shape in axis '), ))?add_note and at 0xblokus_cython.pyxcollections.abcdisableenablegc (got got differing extents in dimension isenableditemsize <= 0 for cython.arraylist | Noneno default __reduce__ due to non-trivial __cinit__numpy._core.multiarray failed to importnumpy._core.umath failed to import object>, orient=, pos=(unable to allocate array data.unable to allocate shape and strides.ASCIIBlokusGameBlokusGame.__reduce_cython__BlokusGame.__setstate_cython__BlokusGame._check_game_overBlokusGame._generate_action_space..genexprBlokusGame.apply_moveBlokusGame.copyBlokusGame.get_actionBlokusGame.get_moveBlokusGame.get_placed_cornersBlokusGame.get_placed_squaresBlokusGame.get_scoresBlokusGame.get_stateBlokusGame.get_valid_actionsBlokusGame.get_winnersBlokusGame.has_valid_movesBlokusGame.is_game_overBlokusGame.next_playerBlokusGame.play_moveBlokusGame.resetBlokusGame.valid_moveBoardBoard.__reduce_cython__Board.__setstate_cython__Board.clearBoard.coverageBoard.get_cellBoard.get_occupiedBoard.get_player_cornersBoard.get_player_occupiedBoard.get_player_squaresBoard.has_overlapBoard.in_boundsBoard.is_emptyBoard.is_fullBoard.placeEllipsisF5I1I2I3I4I5L4L5MoveMo""ve.__reduce_cython__Move.__setstate_cython__N5NoneO4P5PiecePieceOrientationPieceOrientation.__reduce_cython__PieceOrientation.__setstate_cython__PieceSetPieceSet.__reduce_cython__PieceSet.__setstate_cython__PieceSet.get_orientationsPieceSet.get_piecePieceSet.get_piece_idPiece.__reduce_cython__Piece.__setstate_cython__PlayerStatePlayerState.__reduce_cython__PlayerState.__setstate_cython____Pyx_PyDict_NextRefS4SequenceT4T5U5V3V5View.MemoryViewW5X5Y5Z5_abcactionallocate_buffer__annotate__apply_moveasyncio.coroutinesavailable_piecesbasebintblokus_cythonboard_sizeboolccan_move_check_game_over_check_game_over..genexpr__class____class_getitem__clearcline_in_tracebackclosecopycorner_rulecornerscountcoveragecurrent_playercxcy__dict__dict_dictdtypedtype_is_objectdxdyencodeenumerateerrorfillflagsfloatformatfortran__func__game_overgenexprget_actionget_cellget_moveget_occupiedget_orientationsget_pieceget_piece_idget_placed_cornersget_placed_squaresget_player_cornersget_player_occupiedget_player_squaresget_scoresget_standard_piecesget_stateget_valid_actionsget_winners__getstate__grid_viewhas_overlaphas_startedhas_valid_movesiididx__import__in_boundsindex__init__..genexprintint8_is_coroutineis_emptyis_fullis_game_overitemsitemsizelist__main__maxmax_scorememviewminmode__module__movename__name__ndim__new__new_gamenextnext_idxnext_playernormalize_squares_cython..genexprnpnum_actionsnum_piecesnum_playersnumpyoobjoffsetorientation_idppackpidpiecepiece_idpiecespieces_listplaceplaced_cornersplaced_squaresplay_moveplayerplayer_idxplayer_squaresplayerspop__pyx_checksum__pyx_result__pyx_state__pyx_type__pyx_unpickle_BlokusGame__pyx_unpickle_Board__pyx_unpickle_Enum__pyx_unpickle_Move__pyx_unpickle_Piece__pyx_unpickle_PieceOrientation__pyx_unpickle_PieceSet__pyx_unpickle_PlayerState__pyx_vtable____qualname____reduce____reduce_cython____reduce_ex__registerresetresultreturnroundssscorescoresselfsendset__set_name__setdefault__setstate____setstate_cython__shapesizesquares""startstatestepstopstructsum__test__throwunpackunplacedupdateuse_setstatevalid_movevaluevaluesxyzeros\320\0040\260\001\330\010\017\210t\220=\240\001\240\021\200\001\330\004#\2401\240F\250!\320\004\033\2301\340\010\t\330\014\032\230$\230a\330\014\033\2304\230q\330\014\036\230d\240!\330\014\026\220d\230!\330\014\031\230\024\230Q\330\014\027\220q\340\024\033\2301\230A\330\024(\250\004\250A\250Q\250a\330\024\035\230Q\230a\330\024#\2401\240A\330\024 \240\001\240\021\340\020\024\220E\230\024\230Q\320\004+\2501\360\006\000\t+\250$\250a\330\010\030\230\004\230A\340\010\014\210C\210u\220A\330\014\017\210u\220B\220c\230\024\230U\240$\240b\250\003\2504\250v\260S\270\t\300\021\300#\300S\310\003\3101\330\020\027\220q\330\010\017\210q\320\0044\260A\340\010*\250$\250a\330\010\030\230\004\230A\330\010\033\2301\360\006\000\t\r\210E\220\025\220a\220q\330\014\020\220\005\220U\230!\2301\330\020\023\2209\230A\230S\240\003\2403\240a\330\024\032\230'\240\022\2403\240a\330\010\017\210q\320\0044\260A\340\010*\250$\250a\330\010\030\230\004\230A\330\010\036\230a\330\010#\2404\320':\270!\2701\360\006\000\t\r\210C\210u\220A\330\014\020\220\004\220F\230\"\230A\230T\240\025\240d\250%\250q\260\003\2605\270\003\2701\330\020\024\220E\230\022\2302\230T\240\022\2402\240Q\330\020\023\2202\220S\230\005\230U\240$\240b\250\003\2505\260\005\260T\270\031\300!\3004\300t\3103\310a\330\024\033\2304\230r\240\024\240Q\330\010\017\210q\200\001\340\004\013\2104\210q\220\001\320\0045\260Q\340\010\013\210;\220g\230T\240\021\330\014\020\320\020 \240\001\240\036\250s\260!\2604\3207J\310!\3101\330\010\017\210t\320\023#\2401\240A\200\001\330\004\"\240!\2406\250\021\320\0047\260q\340\010\031\230\024\230^\2501\250A\340\010\013\2104\210t\220;\230a\230|\2501\330\014\023\2201\340\010\014\210K\220q\230\014\240A\330\010\017\210q\320\0047\260q\340\010\"\240$\240h\250a\250q\330\010\033\2304\230z\250\032\2601\260D\270\001\330\010#\2404\320';\2701\270A\360\010\000\t\r\210F\220&\230\001\230\033\240B\240c\250\021\360\006\000\t\017""\320\016\037\230x\240q\250\005\250Q\330\010\016\210j\230\005\230Q\360\006\000\t\014\2104\210v\220Q\330\014\022\220/\240\021\330\014\022\220.\240\001\360\006\000\t$\2404\320';\2701\270A\330\010\014\210C\210u\220A\330\014\017\210t\2206\230\032\2401\240C\240s\250$\250d\260&\270\t\300\021\300#\300Q\330\020\026\220h\230d\240\"\240C\240q\360\006\000\t\r\320\014\035\230Q\230A\320\004\034\230A\360\016\000\t\034\2301\360\014\000\t\r\210J\220d\230!\340\014\027\220q\330\014\020\220\007\220u\230A\230T\240\032\2501\330\020\030\230\004\230J\240j\260\001\260\021\330\020\023\2205\230\006\230c\240\026\240q\330\024 \240\005\240Q\330\014\024\220F\230'\240\022\2401\360\006\000\r\020\210s\220!\2206\320\031,\250C\250q\330\020\031\230\021\340\014\022\220'\230\021\230!\330\010\017\210q\200A\360\n\000\t\014\2104\210q\330\014\023\2204\220q\340\010\014\210J\220e\2301\230C\230t\240=\260\002\260!\330\014\030\230\004\320\034,\250B\250h\260b\270\004\270A\330\014\032\230$\230h\240a\240q\330\014\017\210{\230*\240D\250\004\320,<\270A\270Q\330\020\024\320\024&\240a\330\020\027\220q\360\006\000\t\r\210M\230\021\330\010\017\210t\2201\200A\360\006\000\t+\250$\250a\330\010\030\230\004\230A\340\010\014\210C\210u\220A\330\014\017\210r\220\023\220D\230\005\230T\240\022\2403\240d\250!\330\020\031\230\021\230#\230U\240!\360\006\000\t\014\210;\220c\230\024\230Q\330\014\020\320\020 \240\001\240\033\250G\2601\260A\200A\340\010\"\240$\240h\250a\250q\330\010\033\2304\230z\250\032\2601\260D\270\001\330\010#\2404\320';\2701\270A\330\010#\2404\320';\2701\270A\340\010$\240K\250r\260\021\360\n\000\t\014\2105\220\006\220g\230V\2401\330\014\023\2201\360\006\000\t\r\210C\210u\220A\330\014\017\210t\2204\220v\230Z\240q\250\003\2501\330\020\027\220q\360\006\000\t\014\2104\210v\220\\\240\021\240!\330\014\023\2201\360\006\000\t\014\2104\210}\230D\240\004\240F\250!\330\014\017\210s\220!\2204\220z\240\023\240C\240q\250\004\250A\330\020\037\230t\320#5\260Q\260a\330\020\024\220D\230\004\230D\240\004\240C\240q\330\024\033\2301\360""\006\000\t\r\210C\210u\220A\330\014\020\220\004\220F\230\"\230A\230S\240\005\240S\250\005\250T\260\025\260c\270\021\330\020\023\2204\220v\230Z\240q\250\002\250\"\250D\260\002\260\"\260A\330\024\027\220t\2306\240\031\250!\2502\250R\250t\2602\260R\260t\2703\270a\330\030\037\230q\360\006\000\t\014\2106\220\021\330\014\036\230d\240&\320(<\270A\270Q\340\014\025\220Q\330\014\020\220\004\220F\230!\330\020\023\2204\220v\230Z\240q\250\004\250D\260\005\260T\270\024\270S\300\001\330\024\035\230Q\330\024\025\330\014\017\210t\2201\330\020\027\220q\340\010\017\210q\200A\340\010\"\240$\240h\250a\250q\330\010 \240\002\240&\250\001\250\024\250^\2706\300\021\330\010(\250\001\360\010\000\t+\250+\260R\260q\360\016\000\t\r\210H\220F\230!\330\014\037\230w\240a\240t\250:\260]\300!\3001\340\010\013\2104\210v\220Q\330\014\023\2201\340\010\013\2104\210v\220]\240#\240T\250\026\250q\330\014\020\220\014\230A\330\020\024\220N\240$\320&8\270\001\270\021\330\024\027\220t\230;\240a\240|\2604\260~\300Q\300a\330\030\034\230A\230^\2501\330\014\023\2201\360\006\000\t\033\230$\230f\320$8\270\001\270\033\300B\300a\340\010\014\210L\230\001\330\014\020\220\016\230d\320\"4\260A\260Q\330\020\027\220t\230>\250\021\250!\330\020!\240\024\320%9\270\021\270!\360\006\000\021\032\230\021\330\020\024\220D\230\006\230a\330\024\027\220t\2306\240\032\2501\250D\260\004\260E\270\024\270T\300\023\300A\330\030!\240\021\330\030\031\330\020\023\2204\220q\330\024\025\340\020!\240\024\320%9\270\021\270!\360\006\000\021\032\230\021\330\020\024\220C\220u\230A\330\024\027\220t\2304\230v\240Z\250q\260\003\2601\330\030!\240\021\330\030\031\330\020\023\2204\220q\330\024\025\360\006\000\021\024\2204\220v\230\\\250\021\250!\330\024\025\360\006\000\021 \230q\330\020\024\220C\220u\230A\330\024\030\230\004\230F\240\"\240A\240S\250\005\250S\260\005\260T\270\025\270c\300\021\330\030\033\2304\230v\240Z\250q\260\002\260\"\260D\270\002\270\"\270A\330\034\037\230t\2406\250\031\260!\2602\260R\260t\2702\270R\270t\3003\300a\330 /\250q\330 !\330""\024\027\220q\330\030\031\340\020\023\2204\220q\330\024\030\230\001\230\036\240q\340\010\017\210q\200A\340\010\"\240$\240h\250a\250q\330\010(\250\001\360\010\000\t\r\210H\220F\230!\330\014\037\230w\240a\240t\250:\260]\300!\3001\340\010\013\2104\210v\220Q\330\014\023\2201\340\010\014\210L\230\001\330\014\020\220\016\230d\320\"4\260A\260Q\330\020\023\2204\220{\240!\240<\250t\260>\300\021\300!\330\024\033\2301\330\010\017\210q\320\004)\250\021\340\010\030\230\004\230A\330\010\017\210r\220\023\220D\230\005\230T\240\022\2403\240d\250!\200A\340\010\017\210t\320\023'\240q\250\001\320\004\"\240!\360\n\000\t\r\210L\230\n\240)\2501\250D\260\001\330\014\017\210t\2204\320\027'\240q\250\001\330\020\026\220l\240!\360\006\000\t\020\210q\330\014\020\220\r\230Q\330\037 \340\014\020\220\r\230Q\320\004\035\230Q\340\010\013\2104\210t\220=\240\001\330\014\023\2201\340\010\033\2304\230{\250!\330\010\035\230S\240\001\240\021\330\010\017\210q\220\002\220$\220c\230\025\230i\240q\250\010\260\003\2602\260S\270\001\200\001\360\010\000\005\016\210T\220\032\2304\320\0370\260\004\260K\270t\3001\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\027\220t\2309\240G\2505\260\003\2604\260y\300\007\300q\330\004\007\200q\330\010\017\320\0171\260\024\260Q\260g\270[\310\007\310q\340\010\017\320\0171\260\024\260Q\260g\270[\310\001\200\001\360\010\000\005\016\210T\320\021#\2404\240w\250d\260!\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\027\220t\320\033,\250G\2601\330\004\007\200q\330\010\017\320\017&\240d\250!\2507\260+\270W\300A\340\010\017\320\017&\240d\250!\2507\260+\270Q\200\001\360\010\000\005\016\210T\320\021!\240\024\320%9\270\024\320=O\310t\320Sg\320gk\320ks\320sw\360\000\000x\001E\002\360\000\000E\002I\002\360\000\000I\002W\002\360\000\000W\002[\002\360\000\000[\002l\002\360\000\000l\002p\002\360\000\000p\002|\002\360\000\000|\002@\003\360\000\000@\003N""\003\360\000\000N\003R\003\360\000\000R\003^\003\360\000\000^\003b\003\360\000\000b\003l\003\360\000\000l\003p\003\360\000\000p\003q\003\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\027\220t\230?\250'\260\025\260c\270\024\320=P\320PW\320W\\\320\\_\320_c\320ct\320t{\360\000\000|\001A\002\360\000\000A\002D\002\360\000\000D\002H\002\360\000\000H\002[\002\360\000\000[\002b\002\360\000\000b\002g\002\360\000\000g\002j\002\360\000\000j\002n\002\360\000\000n\002u\002\360\000\000u\002|\002\360\000\000|\002A\003\360\000\000A\003D\003\360\000\000D\003H\003\360\000\000H\003S\003\360\000\000S\003Z\003\360\000\000Z\003_\003\360\000\000_\003b\003\360\000\000b\003f\003\360\000\000f\003o\003\360\000\000o\003v\003\360\000\000v\003w\003\330\004\007\200q\330\010\017\320\017+\2504\250q\260\007\260{\300'\310\021\340\010\017\320\017+\2504\250q\260\007\260{\300!\200\001\360\010\000\005\016\210T\220\027\230\004\230A\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\027\220t\2306\240\027\250\005\250S\260\004\260I\270W\300A\330\004\007\200q\330\010\017\320\017&\240d\250!\2507\260+\270W\300A\340\010\017\320\017&\240d\250!\2507\260+\270Q\200\001\360\010\000\005\016\210T\320\021$\240D\250\013\2604\260z\300\024\300^\320SW\320W]\320]a\320ab\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\027\220t\320\033-\250W\260E\270\023\270D\300\t\310\027\320PQ\330\004\007\200q\330\010\017\320\017,\250D\260\001\260\027\270\013\3007\310!\340\010\017\320\017,\250D\260\001\260\027\270\013\3001\200\001\360\010\000\005\016\210T\320\021$\240D\250\017\260t\270?\310$\310n\320\\`\320`a\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\027\220t\230>\250\027\260\005\260S\270\004\270N\310'\320QV\320VY\320Y]\320]j\320jq\320qv\320vy\320y}\360\000""\000~\001F\002\360\000\000F\002M\002\360\000\000M\002N\002\330\004\007\200q\330\010\017\320\017)\250\024\250Q\250g\260[\300\007\300q\340\010\017\320\017)\250\024\250Q\250g\260[\300\001\200\001\360\010\000\005\016\210T\320\021\"\240$\240k\260\024\260T\270\024\270Q\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220E\230\024\230Q\330\010\022\220!\330\010\027\220q\340\010\027\220q\330\004\007\200q\330\010\017\320\017%\240T\250\021\250'\260\033\270G\3001\340\010\017\320\017%\240T\250\021\250'\260\033\270A\200\001\330\004)\250\021\250&\260\001\230\021\320\004\036\230a\340\010\013\2104\210q\330\014\023\2201\360\006\000\t\r\210E\220\025\220a\220t\2301\330\014\017\210t\2208\2301\230B\230j\250\004\250D\3200@\300\001\300\021\330\020\027\220q\330\010\014\210M\230\021\330\010\017\210q\320\004(\250\001\340\010*\250$\250a\330\010\030\230\004\230A\340\010\013\2102\210S\220\004\220E\230\024\230R\230s\240$\240a\330\014\023\2209\230A\230S\240\003\2403\240a\330\010\017\210q\320\004(\250\001\340\010*\250$\250a\330\010\030\230\004\230A\340\010\013\2102\210S\220\004\220E\230\024\230R\230s\240$\240a\330\014\023\2209\230A\230S\240\001\330\010\017\210q\320\004\031\230\021\340\010*\250$\250a\330\010\030\230\004\230A\360\006\000\t\r\210E\220\025\220a\220q\330\014\020\220\005\220U\230!\2301\330\020\023\2209\230A\230S\240\003\2403\240a\330\024\033\2301\330\010\017\210q\320\004\032\230!\340\010*\250$\250a\330\010\030\230\004\230A\330\010\031\230\021\360\006\000\t\r\210E\220\025\220a\220q\330\014\020\220\005\220U\230!\2301\330\020\023\2209\230A\230S\240\003\2403\240a\330\024\035\230Q\330\010\017\210v\220S\230\005\230R\230q\320\004\026\220a\340\010#\240:\250Q\330\014\027\220t\2301\330\014\023\2204\220q\330\014\030\230\004\230A\330\014\030\230\004\230A\360\006\000\t\021\220\t\230\024\230V\2405\250\001\330\010\020\320\020\"\240$\240a\330\010\020\220\n\230$\230a\330\010\020\220\r\230T\240\021\340\010\014\210C\210u\220I\230Q\230d\240!\330\014\024\220H\230A\230R\320\0373\2601\3204E\300U\310!""\330\014\024\220H\230A\230R\230{\250!\2508\2605\270\001\330\014\024\220H\230A\230R\230y\250\001\250\021\330\014\024\220H\230A\230R\230\177\250a\250q\330\014\024\220H\230A\230R\230|\2501\250A\340\010\017\210q\320\004\036\230a\340\010*\250$\250a\330\010\030\230\004\230A\330\010\035\230Q\360\006\000\t\r\210E\220\025\220a\220q\330\014\020\220\005\220U\230!\2301\330\020\023\2209\230A\230S\240\003\2403\240a\330\024\032\230$\230b\240\003\2401\330\010\017\210q\320\004&\240a\330\010\017\210t\220>\240\021\240!\200\001\330\004.\250a\250v\260Q\200\001\330\004&\240a\240v\250Q\240q\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\2204\220x\230q\240\001\330\004\007\200|\2207\230!\330\010&\240a\240w\250n\270A\330\004\013\2101\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\2205\230\010\240\001\240\021\330\004\007\200|\2207\230!\330\010'\240q\250\010\260\016\270a\330\004\013\2101\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\320\023#\2408\2501\250A\330\004\007\200|\2207\230!\330\0102\260!\3203F\300n\320TU\330\004\013\2101\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\2208\2308\2401\240A\330\004\007\200|\2207\230!\330\010*\250!\250;\260n\300A\330\004\013\2101\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\220:\230X\240Q\240a\330\004\007\200|\2207\230!\330\010,\250A\250]\270.\310\001\330\004\013\2101\200\001\340\004\037\230q\320 0\260\013\270;\300k\320QR\330\004\023\220;\230h\240a\240q\330\004\007\200|\2207\230!\330\010-\250Q\250n\270N\310!\330\004\013\2101\210q\230q\200\001\330\004(\250\001\250\026\250q\320\004\027\220q\340\010\014\210E\220\025\220a\220q\320\004\027\220q\340\010\014\210I\220U\230!\2304\230q\330\010\014\210K\220q\330\010\014\320\014\036\230a\330\010\014\210J\220a\330\010\014\210M\230\021\340\010\014\210E\220\025\220a\220t\2301\330\014\025\220[\240\001\330\014\022\220'\230\021\330\014\022\320\022&\240c\250\021\250$\250j\270\001\330\014\017\210t\220=\240\004\240B\240b\250""\003\2501\250D\260\001\330\020\026\220l\240$\320&8\270\001\270\021\340\020\026\220n\240A\330\014\022\220)\2301\330\014\022\220/\240\021\330\014\022\220,\230a\330\014\020\220\010\230\007\230q\240\001\320\004'\240q\330\010\017\210t\320\023#\2402\240T\250\033\260D\3208I\310\024\310T\320QU\320UV\320\004(\250\001\330\010\017\210t\220=\240\001\240\021\320\004)\250\021\330\010\017\210t\2207\230!\2301O"; PyObject *data = NULL; CYTHON_UNUSED_VAR(__Pyx_DecompressString); #endif PyObject **stringtab = __pyx_mstate->__pyx_string_tab; Py_ssize_t pos = 0; - for (int i = 0; i < 296; i++) { + for (int i = 0; i < 313; i++) { Py_ssize_t bytes_length = index[i].length; PyObject *string = PyUnicode_DecodeUTF8(bytes + pos, bytes_length, NULL); - if (likely(string) && i >= 50) PyUnicode_InternInPlace(&string); + if (likely(string) && i >= 51) PyUnicode_InternInPlace(&string); if (unlikely(!string)) { Py_XDECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) @@ -50257,7 +51710,7 @@ const char* const bytes = ": Buffer view does not expose stridesCan only create stringtab[i] = string; pos += bytes_length; } - for (int i = 296; i < 348; i++) { + for (int i = 313; i < 370; i++) { Py_ssize_t bytes_length = index[i].length; PyObject *string = PyBytes_FromStringAndSize(bytes + pos, bytes_length); stringtab[i] = string; @@ -50268,15 +51721,15 @@ const char* const bytes = ": Buffer view does not expose stridesCan only create } } Py_XDECREF(data); - for (Py_ssize_t i = 0; i < 348; i++) { + for (Py_ssize_t i = 0; i < 370; i++) { if (unlikely(PyObject_Hash(stringtab[i]) == -1)) { __PYX_ERR(0, 1, __pyx_L1_error) } } #if CYTHON_IMMORTAL_CONSTANTS { - PyObject **table = stringtab + 296; - for (Py_ssize_t i=0; i<52; ++i) { + PyObject **table = stringtab + 313; + for (Py_ssize_t i=0; i<57; ++i) { #if PY_VERSION_HEX >= 0x030F0000 PyUnstable_SetImmortal(table[i]); #elif CYTHON_COMPILING_IN_CPYTHON_FREETHREADING @@ -50359,97 +51812,97 @@ static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) { { const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 241}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_o}; - __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 351}; + const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 356}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u__10}; - __pyx_mstate_global->__pyx_codeobj_tab[1] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591__9, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[1])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[1] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591__9, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[1])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 352}; + const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 357}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u__10, __pyx_mstate->__pyx_n_u_y}; - __pyx_mstate_global->__pyx_codeobj_tab[2] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591__9, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[2])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[2] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591__9, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[2])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 481}; + const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 486}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u__10}; - __pyx_mstate_global->__pyx_codeobj_tab[3] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[3])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[3] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[3])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 482}; + const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 487}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u__10, __pyx_mstate->__pyx_n_u_y}; - __pyx_mstate_global->__pyx_codeobj_tab[4] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[4])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[4] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[4])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 754}; + const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 767}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_p}; - __pyx_mstate_global->__pyx_codeobj_tab[5] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[5])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[5] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[5])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 756}; + const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 769}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_p}; - __pyx_mstate_global->__pyx_codeobj_tab[6] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[6])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[6] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_kp_b_iso88591_q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[6])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 35}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_player_idx, __pyx_mstate->__pyx_n_u_squares, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_y, __pyx_mstate->__pyx_n_u_grid_view, __pyx_mstate->__pyx_n_u_size}; - __pyx_mstate_global->__pyx_codeobj_tab[7] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_place, __pyx_mstate->__pyx_kp_b_iso88591_A_a_A_CuA_r_D_T_3d_U_c_Q_G1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[7])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[7] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_place, __pyx_mstate->__pyx_kp_b_iso88591_A_a_A_CuA_r_D_T_3d_U_c_Q_G1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[7])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 49}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; - __pyx_mstate_global->__pyx_codeobj_tab[8] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_clear, __pyx_mstate->__pyx_kp_b_iso88591_q_E_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[8])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[8] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_clear, __pyx_mstate->__pyx_kp_b_iso88591_q_E_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[8])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 53}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_y, __pyx_mstate->__pyx_n_u_grid_view, __pyx_mstate->__pyx_n_u_size}; - __pyx_mstate_global->__pyx_codeobj_tab[9] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_is_empty, __pyx_mstate->__pyx_kp_b_iso88591_a_A_2S_E_Rs_a_9AS_3a_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[9])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[9] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_is_empty, __pyx_mstate->__pyx_kp_b_iso88591_a_A_2S_E_Rs_a_9AS_3a_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[9])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 62}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_y, __pyx_mstate->__pyx_n_u_size}; - __pyx_mstate_global->__pyx_codeobj_tab[10] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_in_bounds, __pyx_mstate->__pyx_kp_b_iso88591_A_r_D_T_3d, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[10])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[10] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_in_bounds, __pyx_mstate->__pyx_kp_b_iso88591_A_r_D_T_3d, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[10])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 67}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_squares, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_y, __pyx_mstate->__pyx_n_u_grid_view, __pyx_mstate->__pyx_n_u_size}; - __pyx_mstate_global->__pyx_codeobj_tab[11] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_has_overlap, __pyx_mstate->__pyx_kp_b_iso88591_1_a_A_CuA_uBc_U_b_4vS_S_1_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[11])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[11] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_has_overlap, __pyx_mstate->__pyx_kp_b_iso88591_1_a_A_CuA_uBc_U_b_4vS_S_1_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[11])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 85}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_y, __pyx_mstate->__pyx_n_u_grid_view, __pyx_mstate->__pyx_n_u_size}; - __pyx_mstate_global->__pyx_codeobj_tab[12] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_get_cell, __pyx_mstate->__pyx_kp_b_iso88591_a_A_2S_E_Rs_a_9AS_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[12])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[12] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_cell, __pyx_mstate->__pyx_kp_b_iso88591_a_A_2S_E_Rs_a_9AS_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[12])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 94}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_player_idx, __pyx_mstate->__pyx_n_u_grid_view, __pyx_mstate->__pyx_n_u_size, __pyx_mstate->__pyx_n_u_result, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_y}; - __pyx_mstate_global->__pyx_codeobj_tab[13] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_get_player_squares, __pyx_mstate->__pyx_kp_b_iso88591_4A_a_A_1_E_aq_U_1_9AS_3a_3a_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[13])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[13] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_player_squares, __pyx_mstate->__pyx_kp_b_iso88591_4A_a_A_1_E_aq_U_1_9AS_3a_3a_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[13])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 107}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_player_idx}; - __pyx_mstate_global->__pyx_codeobj_tab[14] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_get_player_occupied, __pyx_mstate->__pyx_kp_b_iso88591_5Q_gT_s_47J_1_t_1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[14])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[14] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_player_occupied, __pyx_mstate->__pyx_kp_b_iso88591_5Q_gT_s_47J_1_t_1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[14])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 12, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 113}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_player_idx, __pyx_mstate->__pyx_n_u_grid_view, __pyx_mstate->__pyx_n_u_size, __pyx_mstate->__pyx_n_u_corners, __pyx_mstate->__pyx_n_u_player_squares, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_y, __pyx_mstate->__pyx_n_u_dx, __pyx_mstate->__pyx_n_u_dy, __pyx_mstate->__pyx_n_u_cx, __pyx_mstate->__pyx_n_u_cy}; - __pyx_mstate_global->__pyx_codeobj_tab[15] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_get_player_corners, __pyx_mstate->__pyx_kp_b_iso88591_4A_a_A_a_4_1_CuA_F_AT_d_q_5_1_E, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[15])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[15] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_player_corners, __pyx_mstate->__pyx_kp_b_iso88591_4A_a_A_a_4_1_CuA_F_AT_d_q_5_1_E, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[15])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 128}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_grid_view, __pyx_mstate->__pyx_n_u_size, __pyx_mstate->__pyx_n_u_result, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_y}; - __pyx_mstate_global->__pyx_codeobj_tab[16] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_get_occupied, __pyx_mstate->__pyx_kp_b_iso88591_a_a_A_Q_E_aq_U_1_9AS_3a_b_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[16])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[16] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_occupied, __pyx_mstate->__pyx_kp_b_iso88591_a_a_A_Q_E_aq_U_1_9AS_3a_b_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[16])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 141}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_grid_view, __pyx_mstate->__pyx_n_u_size, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_y}; - __pyx_mstate_global->__pyx_codeobj_tab[17] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_is_full, __pyx_mstate->__pyx_kp_b_iso88591_a_A_E_aq_U_1_9AS_3a_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[17])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[17] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_is_full, __pyx_mstate->__pyx_kp_b_iso88591_a_A_E_aq_U_1_9AS_3a_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[17])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 153}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_grid_view, __pyx_mstate->__pyx_n_u_size, __pyx_mstate->__pyx_n_u_count, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_y}; - __pyx_mstate_global->__pyx_codeobj_tab[18] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_coverage, __pyx_mstate->__pyx_kp_b_iso88591_a_A_E_aq_U_1_9AS_3a_Q_vS_Rq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[18])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[18] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_coverage, __pyx_mstate->__pyx_kp_b_iso88591_a_A_E_aq_U_1_9AS_3a_Q_vS_Rq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[18])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; @@ -50494,17 +51947,17 @@ static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) { { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 247}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_piece_id}; - __pyx_mstate_global->__pyx_codeobj_tab[27] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_get_orientations, __pyx_mstate->__pyx_kp_b_iso88591_0_t, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[27])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[27] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_orientations, __pyx_mstate->__pyx_kp_b_iso88591_0_t, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[27])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 250}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_piece_id}; - __pyx_mstate_global->__pyx_codeobj_tab[28] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_get_piece, __pyx_mstate->__pyx_kp_b_iso88591_t7_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[28])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[28] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_piece, __pyx_mstate->__pyx_kp_b_iso88591_t7_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[28])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 253}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name}; - __pyx_mstate_global->__pyx_codeobj_tab[29] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_get_piece_id, __pyx_mstate->__pyx_kp_b_iso88591_t, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[29])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[29] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_piece_id, __pyx_mstate->__pyx_kp_b_iso88591_t, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[29])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; @@ -50516,120 +51969,150 @@ static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) { PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; __pyx_mstate_global->__pyx_codeobj_tab[31] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_avQ_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[31])) goto bad; } + { + const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 0, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 311}; + PyObject* const varnames[] = {0}; + __pyx_mstate_global->__pyx_codeobj_tab[32] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_standard_pieces, __pyx_mstate->__pyx_kp_b_iso88591_4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[32])) goto bad; + } { const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_state, __pyx_mstate->__pyx_n_u_dict_3, __pyx_mstate->__pyx_n_u_use_setstate}; - __pyx_mstate_global->__pyx_codeobj_tab[32] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_T_D_4z_SWW_aab_G1F_a_vWE_Q_q_t, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[32])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[33] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_T_D_4z_SWW_aab_G1F_a_vWE_Q_q_t, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[33])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 16}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; - __pyx_mstate_global->__pyx_codeobj_tab[33] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591__11, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[33])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[34] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591__11, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[34])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 495}; + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 500}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_action}; - __pyx_mstate_global->__pyx_codeobj_tab[34] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_get_move, __pyx_mstate->__pyx_kp_b_iso88591_a_t, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[34])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[35] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_move, __pyx_mstate->__pyx_kp_b_iso88591_a_t, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[35])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 498}; + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 503}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_move}; - __pyx_mstate_global->__pyx_codeobj_tab[35] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_get_action, __pyx_mstate->__pyx_kp_b_iso88591_q_t_2T_D8I_TQUUV, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[35])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[36] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_action, __pyx_mstate->__pyx_kp_b_iso88591_q_t_2T_D8I_TQUUV, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[36])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 501}; + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 506}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_player}; - __pyx_mstate_global->__pyx_codeobj_tab[36] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_reset, __pyx_mstate->__pyx_kp_b_iso88591_q_IU_4q_Kq_a_Ja_M_E_at1_c_j_t_B, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[36])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[37] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_reset, __pyx_mstate->__pyx_kp_b_iso88591_q_IU_4q_Kq_a_Ja_M_E_at1_c_j_t_B, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[37])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 540}; + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 536}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_move}; + __pyx_mstate_global->__pyx_codeobj_tab[38] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_placed_squares, __pyx_mstate->__pyx_kp_b_iso88591_A_t_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[38])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 549}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_move}; + __pyx_mstate_global->__pyx_codeobj_tab[39] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_placed_corners, __pyx_mstate->__pyx_kp_b_iso88591_A_t_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[39])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 553}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_player_idx, __pyx_mstate->__pyx_n_u_move}; - __pyx_mstate_global->__pyx_codeobj_tab[37] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_valid_move, __pyx_mstate->__pyx_kp_b_iso88591_A_haq_4z_1D_4_1A_4_1A_Kr_5_gV1_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[37])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[40] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_valid_move, __pyx_mstate->__pyx_kp_b_iso88591_A_haq_4z_1D_4_1A_4_1A_Kr_5_gV1_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[40])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 592}; + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 605}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_player_idx}; - __pyx_mstate_global->__pyx_codeobj_tab[38] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_get_valid_actions, __pyx_mstate->__pyx_kp_b_iso88591_A_haq_6_Rq_HF_wat_1_4vQ_1_4v_T_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[38])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[41] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_valid_actions, __pyx_mstate->__pyx_kp_b_iso88591_A_haq_6_Rq_HF_wat_1_4vQ_1_4v_T_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[41])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 668}; + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 681}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_player_idx}; - __pyx_mstate_global->__pyx_codeobj_tab[39] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_has_valid_moves, __pyx_mstate->__pyx_kp_b_iso88591_A_haq_HF_wat_1_4vQ_1_L_d_4AQ_4_t, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[39])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[42] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_has_valid_moves, __pyx_mstate->__pyx_kp_b_iso88591_A_haq_HF_wat_1_4vQ_1_L_d_4AQ_4_t, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[42])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 687}; + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 700}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_player_idx, __pyx_mstate->__pyx_n_u_move, __pyx_mstate->__pyx_n_u_player, __pyx_mstate->__pyx_n_u_piece, __pyx_mstate->__pyx_n_u_placed_squares, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_y, __pyx_mstate->__pyx_n_u_placed_corners}; - __pyx_mstate_global->__pyx_codeobj_tab[40] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_apply_move, __pyx_mstate->__pyx_kp_b_iso88591_7q_haq_4z_1D_4_1A_F_Bc_xq_Q_j_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[40])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[43] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_apply_move, __pyx_mstate->__pyx_kp_b_iso88591_7q_haq_4z_1D_4_1A_F_Bc_xq_Q_j_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[43])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 715}; + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 728}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_player_idx, __pyx_mstate->__pyx_n_u_action, __pyx_mstate->__pyx_n_u_move}; - __pyx_mstate_global->__pyx_codeobj_tab[41] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_play_move, __pyx_mstate->__pyx_kp_b_iso88591_7q_1A_4t_a_1_1_Kq_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[41])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[44] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_play_move, __pyx_mstate->__pyx_kp_b_iso88591_7q_1A_4t_a_1_1_Kq_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[44])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 725}; + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 738}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_offset, __pyx_mstate->__pyx_n_u_next_idx, __pyx_mstate->__pyx_n_u_next_player}; - __pyx_mstate_global->__pyx_codeobj_tab[42] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_next_player, __pyx_mstate->__pyx_kp_b_iso88591_A_4q_4q_Je1Ct_Bhb_A_haq_D_AQ_a_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[42])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[45] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_next_player, __pyx_mstate->__pyx_kp_b_iso88591_A_4q_4q_Je1Ct_Bhb_A_haq_D_AQ_a_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[45])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 744}; + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 757}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_player, __pyx_mstate->__pyx_n_u_player_idx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_n_u_genexpr}; - __pyx_mstate_global->__pyx_codeobj_tab[43] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_check_game_over, __pyx_mstate->__pyx_kp_b_iso88591_L_1D_t4_q_l_q_Q_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[43])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[46] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_check_game_over, __pyx_mstate->__pyx_kp_b_iso88591_L_1D_t4_q_l_q_Q_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[46])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 760}; + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 773}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i}; + __pyx_mstate_global->__pyx_codeobj_tab[47] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_is_game_over, __pyx_mstate->__pyx_kp_b_iso88591_a_4q_1_E_at1_t81Bj_D0_q_M_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[47])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 785}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_scores, __pyx_mstate->__pyx_n_u_player, __pyx_mstate->__pyx_n_u_unplaced, __pyx_mstate->__pyx_n_u_score, __pyx_mstate->__pyx_n_u_pid, __pyx_mstate->__pyx_n_u_piece}; + __pyx_mstate_global->__pyx_codeobj_tab[48] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_scores, __pyx_mstate->__pyx_kp_b_iso88591_A_1_Jd_q_uAT_1_Jj_5_c_q_Q_F_1_s, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[48])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 814}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_scores, __pyx_mstate->__pyx_n_u_max_score, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_s}; + __pyx_mstate_global->__pyx_codeobj_tab[49] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_winners, __pyx_mstate->__pyx_kp_b_iso88591_Q_4t_1_4_S_q_c_iq_2S, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[49])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 823}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_p}; - __pyx_mstate_global->__pyx_codeobj_tab[44] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_get_state, __pyx_mstate->__pyx_kp_b_iso88591_1_a_4q_d_d_Q_q_1A_AQa_Qa_1A_E_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[44])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[50] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_get_state, __pyx_mstate->__pyx_kp_b_iso88591_1_a_4q_d_d_Q_q_1A_AQa_Qa_1A_E_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[50])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 780}; + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 843}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_new_game, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_p}; - __pyx_mstate_global->__pyx_codeobj_tab[45] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_gym_core_blokus_cython_py, __pyx_mstate->__pyx_n_u_copy, __pyx_mstate->__pyx_kp_b_iso88591_a_Q_t1_4q_A_A_V5_a_a_T_CuIQd_HA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[45])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[51] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_blokus_cython_pyx, __pyx_mstate->__pyx_n_u_copy, __pyx_mstate->__pyx_kp_b_iso88591_a_Q_t1_4q_A_A_V5_a_a_T_CuIQd_HA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[51])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_state, __pyx_mstate->__pyx_n_u_dict_3, __pyx_mstate->__pyx_n_u_use_setstate}; - __pyx_mstate_global->__pyx_codeobj_tab[46] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_T_9_OtSggkkssw_x_E_E_I_I_W_W_l, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[46])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[52] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_T_9_OtSggkkssw_x_E_E_I_I_W_W_l, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[52])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 16}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; - __pyx_mstate_global->__pyx_codeobj_tab[47] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_q_4, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[47])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[53] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_q_4, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[53])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_pyx_type, __pyx_mstate->__pyx_n_u_pyx_checksum, __pyx_mstate->__pyx_n_u_pyx_state, __pyx_mstate->__pyx_n_u_pyx_result}; - __pyx_mstate_global->__pyx_codeobj_tab[48] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_Board, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_5_7_q_a_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[48])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[54] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_Board, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_5_7_q_a_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[54])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_pyx_type, __pyx_mstate->__pyx_n_u_pyx_checksum, __pyx_mstate->__pyx_n_u_pyx_state, __pyx_mstate->__pyx_n_u_pyx_result}; - __pyx_mstate_global->__pyx_codeobj_tab[49] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_Move, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_4xq_7_awnA_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[49])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[55] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_Move, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_4xq_7_awnA_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[55])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_pyx_type, __pyx_mstate->__pyx_n_u_pyx_checksum, __pyx_mstate->__pyx_n_u_pyx_state, __pyx_mstate->__pyx_n_u_pyx_result}; - __pyx_mstate_global->__pyx_codeobj_tab[50] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_PieceOrientation, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_81A_7_2_3FnTU_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[50])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[56] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_PieceOrientation, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_81A_7_2_3FnTU_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[56])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_pyx_type, __pyx_mstate->__pyx_n_u_pyx_checksum, __pyx_mstate->__pyx_n_u_pyx_state, __pyx_mstate->__pyx_n_u_pyx_result}; - __pyx_mstate_global->__pyx_codeobj_tab[51] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_Piece, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_5_7_q_a_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[51])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[57] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_Piece, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_5_7_q_a_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[57])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_pyx_type, __pyx_mstate->__pyx_n_u_pyx_checksum, __pyx_mstate->__pyx_n_u_pyx_state, __pyx_mstate->__pyx_n_u_pyx_result}; - __pyx_mstate_global->__pyx_codeobj_tab[52] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_PieceSet, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_881A_7_nA_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[52])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[58] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_PieceSet, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_881A_7_nA_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[58])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_pyx_type, __pyx_mstate->__pyx_n_u_pyx_checksum, __pyx_mstate->__pyx_n_u_pyx_state, __pyx_mstate->__pyx_n_u_pyx_result}; - __pyx_mstate_global->__pyx_codeobj_tab[53] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_PlayerState, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_haq_7_QnN_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[53])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[59] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_PlayerState, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_haq_7_QnN_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[59])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_pyx_type, __pyx_mstate->__pyx_n_u_pyx_checksum, __pyx_mstate->__pyx_n_u_pyx_state, __pyx_mstate->__pyx_n_u_pyx_result}; - __pyx_mstate_global->__pyx_codeobj_tab[54] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_BlokusGame, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_XQa_7_A_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[54])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[60] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_BlokusGame, __pyx_mstate->__pyx_kp_b_iso88591_q_0_kQR_XQa_7_A_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[60])) goto bad; } Py_DECREF(tuple_dedup_map); return 0; diff --git a/src/blokus_gym/core/blokus_cython.cpython-312-x86_64-linux-gnu.so b/src/blokus_gym/core/blokus_cython.cpython-312-x86_64-linux-gnu.so index 71661367d673fc6a70c9aa3c1ae147e587fc288d..ef94bea1fde6f7f1924883769644570f75db3ebb 100755 GIT binary patch literal 520824 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�w8IR^UFwq)PnqhCK9m;>!KG}Gi6GU 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�IkzQe3cn>ri!mrDD9xM2B>gzF}{oTxxTa`39YX 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
  • 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�w8IR^UFwq)PnqhCK9m;>!KG}Gi6GU zF#YhHIoJWm%%>ikf%km(!YL5Plr1lPJAVQ`C=whFV3H3{KxTg5;44tV(>L_*{V9er zlwLlZ#@8AC!uS6DQQ`X?^4kO|O;+#UvfTLX73}Mv_rK48WcI`E0B+Y7zGeGin}I4z z&^}gNBq8af`G8;cp^A{7zH%7+as?_ceDGO5oa*gYb0V>BFa~eGI!e_~Kf}sk^kO97 zqv8J0+7*JQG_HE4N_94CXC}DCc;jkP<7ptu$1EB+hcMrk8D^tvS6tO!7d&t`GdqmU zPQUMZBZHVKxQRwgrPxQ!^i(s%2b|vU;FzgeFS#1@__>+!cPo^>*{9vyTF)PA?-74A zY>JoAH?Q>`V`>Ne5#OG{cj?~NLvVPLo2qmtpAN>cPM6r3rjst^Q|U+TiY+aKIG8N! zMkLXfM<9QJSxbDGmU8Fe@%p^3z4U352MsTg&(9q^J=MYAD z@$WK1R3=iUFX46luiv4hgiFI)YHyr?n3aLQh5n9BAOE*JCOouHmGGP#+KcSC?B4K& zXP0s8E7{&`CzxE40}d5G{Lo$=w!vO{%ZlmFX2zNcW`q{y9;$rQa1fw! z0gKtV`t$6C(1)*uLI}6APzZJOT=RDa8rS?i0eLD*M&Vd}E&1X4VF-YSeVo!RWPn-c zf+5yjZ-Ob(7&P5qwdKQOJ#+Y<)aX!WWGHpB<(R;|pk2<;y+vEzy1Em_muhl6nVndY${pr-Oy9~M(=Qms7XXc^Ps|isxAmHgl%6kY zlwY_8K7O`+KxLcU9HsX+gd@GyJ*>2rMyAgMa%d3Iu7*c!+Jkl4UD!-0|)(6SFr(X7Qo!zAeUN>nT*#o|j>hvQHA}NYh=tubs zhDCP>4H2K>E~~l>qA+_N>M84|*>c>sGwZjj==w^GE|*(D8RvR`;oWia$jR_$Fa>$lXsyVY&|bE80A4dx-!C07kE;y=sS%QE{f8vp1d z`i~g)v}+x-@Zz*=3sd>Zdmh|v;A176xQ`5jw%XY> z%$pQAA;<~Hzv{!&;KaAyyr%H+<~y@Hy|rVJeyG^Zd!JW7U_JD8jy&s$ltKIyy3R(G z9&x9TnH+kkgxqdMcBSvVC?VG&5ON*(qRf2&W<=q`rhSSJB?s7}*8foICi^5K7fr@J z$|vF4=TzVFK=&)F$M1&dVz6h;7L$;l$sqt0Zi3i0xW7Mr!VoWSb!a0|jmcud$lMHw zZNl)}3>Ih;#^z=q7AN$|X24aWN&F@g)g~QbaYJ+z^SWqdqIx(|bfn)sg7*y`OTm8f zDSRo}T0aZzo=rPI(wfbs@yOc)72Xq#Y}>1nv3^AV%#brCi(in8#jWrJap(SdZ<6+Q zx=DJ9p}Vw_Hv|R=Bko7(Kj>ap%jf*YcG2+gua(=)M$&V%-|@DYk?CR=>;#O76Tpvb0Bef9Qii^T3yje+L|Vx#FE+hxu45v^}qj$$7MKr5}L z*Fm#>D48%a5^n_`;AwayE>8!Z#&Tnqf9e&9f25~m=|Ul8vUJO?5{>Lf##fN9aU$~{ zKC@pWF4bNGH;q1obb2WuWh@AT0-xJEu2un$ellV-)85P_;sZ<)O$Da+h|qP_+FkT! z@F+EfbA-(mMAKP{iA61u@>Std;_WmsDFS{ge-(eZX$&0Dw^W5Ej+-_i;2UXn)3Wlz z?1g$iA@hDj?)#{2k>!1Wey%bs<`HqbdR7tSh&Hu7N0ja&a-tIuF`-SUn?(~uCs+ln z+x2y6t1s|>LoG6;?Ua3yUK{T=rEPmxkL!@3w)J*}{>+`t%ORy^(=q7>byp&w@;D?4A-ODC#%!@ZsbaTq5MRpi+tJ()U)~6kDJ~P z*ZWBb+_2rbT8E|kP-yC0>1PH^x>#wqSC#aLM)xrRcS1jm8PrV~U-x%Hugv+X-fwsf zVXaL^nc(sLA0LcMcV4*X!8%oX8 zmHgU43|qV}eYDf=?+WiYiW5e0-*~Ezn#YyC#ra6N#1tz3VKHozYA;oA(eo&L;|!$I z=-w8AbRp3OWx>jgVY^kbu69W_hHd!;cHk-i{&M(BW%BSQ=EcecFi8#mu!!Ioqt=wy zev9hb$N1D*w+dVdt;KcL_4)F$huywcFF{Yy8JU?aybxVDl?0ppjml$*Y zb3U)bCDjbj+^v8+3_mBm3WmV`5niSiB3dgiC``wiQ{5+0Zm9b$3##D03b}O|b=k82 zFoQgA?fi@+SPqa#fehyo_Vd@UP=s5 z8Q*^fD_>b@&!62^7UXDJk=O#tqzn0zDYs@ExV-{sb*gsNXodogi&cBTE>FYCT9DUQLnBYd`PRR3zw-vcKH8CK5YR{Gfm7mbvstmzw`85*wo| zAAp1<%rd=6_I({4vij<$dBtkLeSC=+f#2g=OO|*QzP9V4cJVVAH4-qLd4Q-#!>|@z zC3c%WzIyt$tB`n;SXSgOJRd zZ4eS(ifCJ$_dX|cRD7vEZE_Gh60axEEy1@4e*{*Ee6@7YNb+c-v1(r*6+rhwvKH)6 z9dQTK(JVc8ODbFjsiml0zvKt_re&hi+{~N9`2`nEMVM3jrjyrexH9^cJ6HTAu{em7Y=W%rVhH6S&llV-5LNnQePev5g}p!8gc1nd zY4-oOCCY;Hmhw+EJ4e+CW(0Yc0S*^J=gXqOEb96uuVO{w$Dvcv11t%-?vX+NlLLCB zCbo`_YIJwx5X=~>Chv;fy^P0rQTj1ab8-Ydv{S?=0Tc?3#C|V#;{*vmu7}Rrvc1G- z_X*rZiHoROMav>URITA@N5AS_5{VsUO_qTVPp(nDNv5$%CmM)KcRcT4KNi_Jn$SI` ziPzkbV{~C8Ryqt&hPa4-VNGBSYG9PKTH43U;HGiCHvSBn@qAxqq`Qnz7a9$pi-p2$ z0xT`1hPs0(tFU#Qd0mkp+{a@k#9L>T2cp1rQXX3<77opwM17So4Sj-69*JE}rIiWp zxh9IYl%qWuYhQp;L^$vZ{~=UTVe7QLyu@##L&TgJp*pQZFcxhz7R%j%db#~W z4d(6W;x(QEhaH*~^UeD2#y4f}*O;@;A0zX4?imk|L*ge20G6R7iL0rrn zBXSf#4gh4{_I?9S(Kw_Z7s9;@xrP%SiJwX-?Npr0ZzZ;(io`3j`iJ&&TR(x$Ge_wo zqMUUJ*i@%i@n&jdwzCK{p*)90e>jV2@o@n#X}^jxjRtfIN+Eo^Z==aj zAAj{|qF}glk-F!c%|gta?6O_DnS&ozBT@tm^D3 z(e}3Sg{vAZjOA3Ou?suFDRxnHzNx@R)16QSK15x!eOx*6bSEVh_{fV;Dms%0^f$(v zb^PAsRwfC;w?8a4(BtySYq%qzcfQ<=j@R((FumM4(rMkUoR2sOphH%ksHe zj{JFH{x?2f>-C5Az3k~;|Jv;@%x9|a&(ZV1l)0QSfR@I8_iNkBnmG zjc?Hh8$rUBHoaqbwRAv~zv5kGZmLQJTM?%K;#|(Iwo3QpDJ$O)kyrl>5$V*cRO#ED z5Roe+20=^fzxb7?ZQ96yiqcmDC4(KK8R46uVzA*?MjZtQslLyAeR0)Sr~112`j}~7 z-+)YgQr0hJ&x@z&Ec9x*GIQ`CKje&vn?eC!1(-a#uZ2md8pY8 z4RU+9v@jvi?EgV-Ir`3_>R>&#F?KkfdZLLp#F)ssdOM_}yWM-~PnrGGsX z?!+A03q|VZ--ta_5mGbpZuA)=3Kk=kC_6*k;Tqip>T2^1i~HzWOU3GHa+{kNhFZy{ zrkx{{S4%`z7|2SEBNs>J-p^7xo7jtjsh5m7;s^X!qpKYW4jje{1;9dgJ^;!f*vu4j zGYXoq?aOQ&=>QkO(phaUnowb>5{Yd#6%X90V8+U#$?lCEG)CoRnnBdlOL`^Bso4)# z+ril4`ZckHRdDS}tH^D`*qjqsMS>CqP;!EaVsa{z#V?d6+ZC$@^Uv6BDBl-R#xkw! zKx?{_GKl8O4L}(q{T(*1{;4ezXe2`@#o=LYK%J*&Vyi54ZEHVj8?D_;-g@$qlTlYT zM>nlN*@;F5ZI0G1ZS9T_p)tLkH5qgzHe0HBv$0%6(;6U#uqTxyxt zm;}>PQ@J}jOcHaLEd7KpbEgsoJu{W=E~BgG1B5E_Yf0JWzLc^PoUQV@`?cgCyd$ww z)KL%C#C|NtCqKqe#0Fa~t2iWnc6Ans4KgeYG|7G>6y|fOxtpB8Cl!9-w{)Ajw?Vuw zS#vkDX-wrb3N$W*pzGRoY>D5vK=OG8u_}aEI)@hy*;cEw$&hun3d14Woz!-R>?yw7 z;gF4n1Bw-SZKXInWDRtVA=^F7kwU)C-Fdbgk}rQ{jACmf};(BY*#*hSY4^H+?HJ_&FxAr>qQ7yC;p?d zE@OYt^uSFnUumzDFqVyO^DxqX&(`NiYZlV2Ew4s$MF!4gD!0S{;k!+)Ug;S=EjXT3 z`r7b)qnn}hnc@4@ZmQC~12}7y*v88M&SYNt_l$C8-S-Y=1=f8-AGLK~=|6MUeWST& zz>PXDSoekB4=f&=W8|sT#MUmE*wo0w`p@=DUx>sW*%+=53shaZ9;^?a8Z&jlPgy4G zwDc!v;`dqOr7It&KwEskv_ZU�IkzQe3cn>ri!mrDD9xM2B>gzF}{oTxxTa`39YX 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 diff --git a/src/blokus_gym/core/build/temp.linux-x86_64-cpython-312/blokus_cython.o b/src/blokus_gym/core/build/temp.linux-x86_64-cpython-312/blokus_cython.o index e4a0082e66a60e3b15dc866679e266b83a3e6bf8..da1512efdedc83c10e901619d0c93382305e37fe 100644 GIT binary patch literal 768592 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

    S*8okZ%79DVPgM8q`B`Ld8A`mOnX? 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

    ^N&5);I5Ygf&FIq%} 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 #@49xb5; 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

    t7?> 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 V+l6;FHvZ6YasJy>Mv#}8{|EX*V`KmT

    w3fstmlaJhC-J%7WrN)OVG;*l8x}6;e9~@DE_HfS3D`1}0##%tKe&PF79TvT zI8jBV7nlnJNmuzym7_{0s}kVkb}y9X=*zS0R6HV4Jte^#D85w15xibUr>JJJj#faD zmqE-KZQyc4$_j!xS)O5*Kr7=#UKWUI!*=CeYT}b-$E)ZJWsi0?Gjh{3X2GDivf4z@ z)~7)w^Dbs#);kTMFf?d4&q-QX*%L>nm?eR@iIH8yY*0xOO)t26RI@7Y>dPMOV%LB& zhM}i7UxbTGY98RMRr-z%Yp>pRg3758r?tHLs-^a+&s>(xWR);e^#d2!Tvg8TuGhum zmBqz%CS%MwES(-o%J`?%e3{T&+?-TYlfIoUZJ8^I{w7y>eyuD0Yk&3C-QS6my0j!- zZr&8cV}h%sa2S>`;!}%iXd%6tFF|AqU+R9vMHOCN?@?hzGtA`)8i6?->Z_hAF*!oy zo30M0lzh3vI6^#s_SlM2I;${8mC~{jI!5Hy6qlB!Z9cWqyc3Z3(bq@d>PV5flxvS= zcxIE7qqPounk3La*cF@0!_}#Sx4%&qZR}3TLrXl*oImplM)0;=Iyjm24YQTn%bXf| z<-}7LD4FTyNv}WZ9kr3YRITD{hRisx(o3;H=bEyv4i>3y1?^+Yqn(_mrm2_DgJitA z!QkdsGtfHd3U{EP9MmWp{?Xhld?#RfBK6G>^gzcP_9?DWxsdJD3c;5|Xp6r3nq1hf zccWV~(?tT3O}j{7miFUAOJ^i1l5-!ghb3ydSDAq(xgL-|n+&y0VO>>nSpO-jJ2?GP@*g`#VphW3U7|S{7KDSh@7&^C}h{mVfW+; zcDWtYsp4^Sot{o53QhWpBKd0WlBqQpzRXJP;EEFON?Jgr{6pYi8V*tyrTK_wGFF!D zM*6pE#QBPDfFig{wKaD`nCTziHzCd?ZzC|u!zxOWw;uReT4pW_rp7RN&ScIR&5YOF zu~1)gnQP63)y8mA`cgIJ-Q=|8LYc*p!wIt}ohYxWwU>BJMFP)@WS5%KId(Q@I@13i z%izhR%aIrzN@d<$Y7h1HJUxFy8`F$@_#W;IbUsH5vDJ}Nm%_mK|9*YG_3vsJJw$s1ukI6DU;HMPCs(J z<9w4>JRb4Z18JE{dWy@_)HAoz65GFB4*qZUj?>D971pqHPIb`Syz1Sim}y}9U-w8q zF>hdfQcujQ(r>g&^(<^#x4tIDJB}!gWZiF1cJmgg;te>orYugT?d8lm?PBUWnlpa? zA9mv`!nMc-m6qyYgX&dWS6yvZ#^bzeeMc;;THu}yD$~sMDoX6=)S!y(`5tehVAND@NU@7js1{B6VKeP9_X3%0kUYp>8Y5F4n$@+HfCI6363%h&66(M<8aTo zxs+2pEuK8zsx_1m5j%77VheIows*j|4Rs9}moq?ZX^(hDgW`m zW0%aS08sF5?cm9Yrj#^X9eK_@c*2mn9ISHri0l5^gqJ(FH z`KC^|rYlcyjjS}6WRg##nIX5X%Jy>8)^rIegLkQE7^b5nUP6Xo7%gw$ao3c)0(uUSujV9x~=|2~g`b?HSbkRVS zW=uDgNttGI;Ie*7ntH2-q-1uYJ~5OZW{l#%FM7!%AvSv8afMPfC>Oo!;PHq_Ea#C^ zrwON`X`u%15zxTi5yg9CH2qMm3zQDCC%gEm+-FbxOu0>EPs&Sa!04Vt(;kg_Q8LRc z9;VoOP#i{Qq6KA@c9OB>MvO?t2d}vKU2b{>?yOUz?Cvx1-PBbxX)M5$&rAFnc*(o#iU=fZv)l{ zlm?yWB_&{1fK`gmirXct0I$MkEKPOG9~_d(`jU#d{gLnYlW>Y*kUTCqd%ZDvPjS8p zlicf_UtL+8sHx#wzUwNc89mtQ-PurJ)~UQVtI!5>wpB_`{pMDb&<)-+y`VKkZypfP zGe~zBz3Cyt4KNe~_ezesDiTmpd$3TJu4#ps!vwzGv6JTmdvL-PF&Vc9qoz&-ue@Xm z*aIKm`5Gt3@zRZ)aCyf(*~gw`A%kh3cVa|$*wM7S)V?zZ3^*^TO@e!353r3yJh{o{ zF+H<_nshq#Z?F%rhOK*4at}E2n&Cyt1~u63POxwfy23{*Vr9u&b~9vIxIxzbage7l zbR6_=?r=L3F_WF-o%?PtqG$#cmWjA`tn_C88Q11BTc`Jml!L3e2;r^NCG4f28gn<4 z9TDqWw2SZ~>E?E@)ZO92c2t`4|19M%CB{T5Af72zih5^wxN4mq12ts(cMCRXUX@zh zo(&RVGy9{VGI9^v^phq%2kj1Pp+5DwFo!l~7jfsYa=*T*~y(NB*?N_}Lm zUTp5sPraw5zPNi+7%!vso((UNulr`20^#8>?9B|N$kbiyDUzWS?oTH4{$0OG-b{F7>0ik$LV#pE%-_%hT9n12`cF6ws@H z;*Z<5UIYL9Em$P&bi!5lw6_LQ5YqzCAS>=E8DA+Bg3v!4>nA_@RY$&Uw_L~dfGLkOvd4WvyqJU`tn{zV{iO5a~(Por_Sgy?&esurQ=z~ z{oDusOuGf%P?2#5b)!T^TYdjSMq}p+cgDRkoCO5#SI?D(4Eq@WT#FKcd+o^;iiQeg zSi%mJsP8gIrk(b*EPrO^y3`j~n!g)&7+CYJ$3AFnpq^b!wgg{cs%O7U>-d4YX1F~i z*goY-h4V5|1NPn1W=okgdM$@n5rT&0ls&vgOD>H%N2!#3Qf_k!t`eSZ+L0~&q_O^e zGn}e6VCVG7dINR}oOd@YFs_rz29%n9@>Ks$k@TAv>TU0!i+l|z$#u6*19lC(xvYLa zy{t*OvQvLqL6^K5uvgl`R|EFJ>z)lT-?M{bN^gtq=^--HdU~L%dT9;LY+5P)CRI$z z1}Z0AOqUY$DrKxu;46#RQ`@*HHBE*wB`y+;xa*XPo7)cT4T9DapUOiGp zuk!KFx>7dt{qN~pZP{tNNxa>Az=;)mkn}L+^fSe|^ey5SZm=#Pv)&-HcJ;1V*q!S& zH1F3)TLDQKlzQTw&h=V{d#5c8*1J!n2c3K2EfMwa5=p;-rT(2_jvG~o5z(^=|ib2tnsR%N^i-!{ zs#!+0hDeD`MxFF~IWl^eZthZtqpV92Ok66sa_f>oo1h$!YY!<`Uo+Un@Q&jQcKXql z45q#Ht-={>gRWR-GS`pIWU_TXHq8m#3Vh%ulf8O`CX=at zGA772x&z%fTflhNxK45e{tUUX^tm!3YvQPvEF@cE2W>k2JK3j zV20e3r&_uX&ogh|HvgNMA^q?D?)}<}{*HREC;cCZdB1xk!rUX?e`bP7dq=$gdwc(T z`o%IxA zUKL_q88Ph%#%$ui;avu%_|L!UD@znZwI(=}l`9ILRmLobd~*ef|4<`_xnZ45a&(kc>l2{=b2%s~oAc=rgmT!b|_ zP~oWOeK^Wu9JeqBF3gb&bLhexyKq!?XR#Rj$*~M`FvBsf2?sUI@eFf7!!h=SLmKAz zhB=&Jj&0byi`|4ZY~IA~{oo*(*RgwlaX8JZ*uB5lmmK!Ryo8;gc?-VxgH_B$2JbIc z>B%ZRS*0hd^kkKutRj)`#VWm6r5CI8VwGO3(u-AkizSQoVzFK<)|*}G%__ZFr8lee zW|iKe!n^n8-Fx%yeRy}yuy7yVy$_3Vl7%_T!jfivSfvlE^zl?8Jv^0256{m?4{!HK z4^J%8!}BH5!}BH5!}BH5!&8a$@Kho_ScNk6;Rxq$gmX8-xf|i!jd0RNIE5peyAjUa z2uyQJ$ZM|-3aGygmX8-xf|i6jc~R`IFlos z!V%8h2%}E>KgpP31MmT9BoZb=6-3aGygmX8-xf|)tDxA9!PTB~k zaD;O=!buz96pnE2MmTpPoV!s;Q%>Osr*MQ*ILg@?<=l;OCPz7Uqnx`@&fO^IZj^I3 z%DEfm+>LVXMmcw*oV!uZ-6-d7lyf)Axf|u&jdJcrId`L+yHU>FDCcgJb2rMl8|B=M za_&YsccYxUQG0;$dSjGxH!8;~Ibg{VOAc0?v{6plC?{={lQzmp8|9>pa?(aQKck$x zQO?~c=WdjfHp)pG(ydoYqlJ>nLY%RC1P+HOk2v#=voX%u z80Tz^b2i2~8{?dfak9oZbz_{YF;3kW=WL8~HpV#{XXX#w2OE^Lj^8shoF=m5$_9iJjn5 z*)Mj4OJ+B?crKPp<6*$c~ z%Q?xp8*rv`YIA0DVuv}g!<^V*PV6vebeQuy%!wW5#13;thdIB)lGxnSW8Cj!T)i0A zFUA#&aSdZ!#h9t1S=@~cya&^?H?<~{bbl~$qcMtQmBm{RX` z`R1joiGh`sWya9^ZZ`8u&2svMb~G8f zjSItS%*#BzyE03BZ|U`-7FSb2gZL`}jfL4|P-%_#>QL{G!QR&cP|FopnI~vW8~L^r z<3Z-d`U&%OJ?3Sip+bN#gP6=`r`#Tw+2Ey%DhC}ytRp(BAHRiJ3pCnY>#hy@!A7c1|jDH@NxkvI2Uq3q65rHV&ch=#!N5 z+kb2Y=Oq{9y|cmCQlau1Ve^-H0Li>7$pGVqdFzh(@<;w+w8_a7s}PMZyREtGtb*d8KQO+2mzBe*s#uM#Bb~4HQUj zcN;}+f2t;XWQ+v)4NH3!%&svllHALG%@gIu2=C8SpX@jG`d-=oI4D6ku#PPp(%bA| zA$QVY6=q%8JZoWMNH6J$`<>Q2l~q8m(FDy#dU8g_rrRE-!Wz6)N83h3qFPT#r;q(*o2DjJ?-x^wuid0Q4QZ zX0Y}iSo6Pjw~n4Yrv&gS%x?v;*~f`6w!(WaO`?QzTxGqN@?0EuE9wfA@80Wh#gCL% zln~B!33 zA@mjst8TlH#E}fgnD0p~El-Xb*20vQFOS^Hm$S+~CYR$Q%s^qjE0(_HuiWII*E_94 zlmKSfwtsqWmo^tx=v!sXtu}PMmBx1S?a#gqcw^ei`YLftc00)jZ|oYMD4J%z?3Mx{ zn2sanAzPcv+!Z)!OjW$hHye|{=8b8ak(J5r3GqljxD1|U1jwnt_o~x2JJ{0k+|LUC zXlfjx#LM@FC(mFYjqXx?smQRJg1SlG_w^b{TW1q*IMRC|NIfd&+2O>hnU`^yV2??d zqh5`94?K;6MlU`*VZH)KQz^wi{E(N%+T@nJ_*+~w^|Jaz%)#FHTFXaG+LkBp12_BT z@gXer_yDsZzjEG%fA2Wy4cr(mdjO>k)JeoIY9@MVw#^hdV4LuA)*J0)`k8mxd0#*7 zBjd8^hJ5r6IMfeM%t(}RM2yZz{<2+upLX(1+68i~_kHzdIA-jkc}biG;zF}?Nq>4))%R&3$T2a(?91wX)VYT9%;EE0OHW(rPm5lik<~@0Byd z&DR<7Xlm4{S$Iq)3qJDNxangE4Nql>3bU7Jo0o#aku*8G;^T5lsxv(?mTkqc$u1+GX&#EvIT8E(zIZ#_ws&AC^Nh+WMasDWmc^jI;$zy z=x=j!Qf%JR=2x3WJUWsYLT7XwC9^YmX}*-Za#|f7+Pnyx0}?fd`BQwCh$JUf@p0yO zXflp03gUKJWUtJ7XCCyXfA33sQ=gMao~0xQJsBG@50d4`{Mt(vn!uZ!nP$rL9^==# zJcOE=p!qgYJmV}#luecdNM?kWG^SEs*)#VJd7p0P{~MczLc9Ou&qEGAESv2cn;#v_ zKWkqM{8_Wn@*3c4fS(6^E%5okp96jc@aKUq2L1x@n}NRw{BOY50bd3DCE!m2Uk`jO z@D0FU1^zPdcYyy3_`iX_0{lO~Uj_a(@YjI<2>f;6zXN{*c-B6CJH82gKj3cxKM43n z;70&|8+bS1?*NYge;4@I`?5cjhc`hU{s#PJ;GLTJ_L#Q?4n7C?EueFUaN|noJ@Dsw z;G2NI1N?p9UjqLC_zvLM?t3?9|BYz~?OOr=5OmrB{|I;|;S@Kl*C??6H`t#6_P0SC zN`xB}x)t~a;I{+cZ$I{*?2#WXocuxkZo;X)AA>(J(7|$x9XjQp^9kt8bm%Mw9n7m+ zfn#3X3mo(6%NAT;9p@dwsa~7GpI?PjeC~j__1m9y$ey;XY{P#KSA1?G=HnE%_SM2Y z4bYzh{BOYTRXSfuxlb!@%U!3qwf_|KSAzZ*z_HvzTXH>Yeb16|k5k;1+f#9Ce~xfn z-^swS+$)q$8!7h|#cjEFDsJsx1AVOTyTGyB-;~ZP2XOtHw@QtJE%!jht^G;Db$y2b z$8x7Bodr_vT*Ym6 zC*)x(DW7!EzL#*y!!6KH=Yaj)pmVcu>hCxXYyM8| z-v#_3@c&QY6t}Gqw-$%6KKc1D*mn}Hk2}W;C!KAe(+hO)xN{D0jKizIAAxc=1Ai3w z55mcx$AJGToc#F@_|y1M1I)*mrW`M-g_F+XpmR6aqo4l*j{bZII(S_ER5k0MFZ1k2!Tv?i-wYi6*$I3d*dN!yIAT5qrHqHYI}iYpi`;zo6_^VKQ`pQ*T=pIjzf$KhHBUk)7o zUk5zJ|4t77g*O)e?L5EA!DlL-^dIyw&euBla^NZc15fe4bFlyS2)F**dHXsCe^qho z{}#|k|G#(eMo0PnpnWR`?+6_0I|Mk^_iEsnZ(X}^xwgLcd|`-#k5Js!w@7$XBZvM^ zckl}x{8|TJ4jk*d4mj4g#nFB|vA*{RxAnE>DeD~kRmE+6w}3v@_j?C#bd2v0+P8A> zj=-_LLx5v_uLh3w?b^r_&tZQkAKnLlx(KIy_{RKa^T*r*?tP4D z%K69@ptBux9t3+lU;Y9()^~bOUmy7b;HYyG@Xw*#$AP0xb}!ba`r`UbTj5l%=RxNP z;4c9GOgP2oTZm6qZ`LQBFTj3(;bh;z{F^K5EN#I4OR(=Joc#O>_(0I1GL|$l|Cvu6 z*kix`QP~eai0wmt_@^ER?f{PMct7y3!JjvUlP}mVFZ5-7&EEt54e0y<9NX)Fe!idI zg8d=FDW2a!{Erk)<>L8rDR9)E1NxW`mx4X!!y@3A4-bJ3t`GcEIQjWK`1vC69l*Qw z_v?!~G2x{11K6J=oa&3~RMUZDeXjxj9mMk<;NJs(4LFV)O;2P$soWi4-xc@|z$XLW z3H)u~=x3voe0}8Ygj3%B2s)j?{wLslg;U%*n12f-|Hp$4UO$}#_B$cYWuT97-UvF_ z?|PhU3Ns($N(k%Qa{y81xSoGRE_13EUayP-zZvRP0UYh;14sLF@`CkifTR7@z)^n% zaJ26^i1n$yO|tys#YMnx0RP(!4z|A@cvH~XXNYf)aXU{q#SQ!KMZ&4we}s0t9CUDe z_$P48w^>8|abZHPX6F^@ByHMdG!zAn;~wChjF>2zZdxP32-d; zYvEKbjvK!Ur}n~f%THx};y6BR0KNcoL#9&Q=o#}oPY z4&G>Fuzf2B@95xR2hVlz(GFe;9M4mx1K$VYIS)8q&s_){=eqY)Fhd3Myd_Uly3)lKPg;RWfhxYvgbgv2}5tMrs z@GZt!JAMux=j-5c|6|~&|1I#wpuZb9+8;jN*GJwJcni?!3mo-_2-k5NA)Mm&2gL0x z(7}FD1svxamx4Z?7pwt$^#47Feai{K^*vfR`H%Wj9rjN-?B8(MH#wclC4F3f*jG5k zhjP@eKjeZv`cn)Xbn5Dy@Td9Djz1C5!G5{~IL2p%L;vrfA8O+3KL|Rg-{u^L|H9M! z7f$}8egt$-e+lpu{~h{&2YrmsgP?=@?|=^G;TGWg!?^l2=r@A+{0RCj!9E-hj!&L& zoj((SW4ligPH}4ts{fbkK@B`2VXnM7@Cjn*Ka%cSHN3CJGLxl9bK<$g=_ug4!+vK z-*D(3P{QSs{sG`mSK->99>TqNntkkjVmY9L_lXSyj_r6R=wo|L0{yHe{`hb%=wN#- z0v*i5+=O2*EO)en7diNJ2k$dESbwmC=L5(2%$>k-J@c$7!TMzmKG(t53)k)V9`H6< zew?=f$9DNrIJNs;&@RoUvY%T2eBn*a=C+`}9_&&7b>XDHH|T#4I=G&bQ_AI%KF*U* z1%4ouy8t-qECG)F@hRa{FZA;{;pAsF`1vR3pnj)weLr#iDh3?$Gf%iKcZ6^%cONKs zJm}zgM-_1NXOZx3MhE-L+G)O@=+B!DzQw`6cko7K!TPNnyrY8;7M|w6!~RzX->aPc zp?KnT#vpIZEaqKzJ!TZv8fjzd%VHLst z94DOo!Mu$Mr~2Z3>HRHjLT(Vp*I0vy-FUjUBnyHU6vPde24`sil_INtX%Qn>d2cCdd1{Co{KuIK*(9Q|xm z=lg^8?E)O@dkJvVxn8)g@10faLNa)*DSC{{nvowdFvO#ZNIbUr{97-UZ-w;KKoDQ;_>1z;Z(2X5TEtH z(Vy;rVI3WZ{tiCe!E1z*KbVJegj2otgK_C1(7}Fp3vl%FJ_lb59LIt8f#dT~KLf{p zchUuZ9I#!+2-od09_+DQrUOTRZUdb;Mr^l<1%2)W`;O3$UIdPDXg1H=E$z9pgN2iy zEg;U_gj4(CdDeX4)LwWTxm-Bu><>EE2`3$Fucw8R4vvTKf&C81!{5Lj`%8xljez;+ zJj@eL`gmW~DB^kh2>N*c%mo*bH|!7I=X0}g@(26fQ(%82wBu`F zkM~V&0*?1hWzF}BO^ZWk;L9MMw+L@6zAk9Q``;&={Okn&JPSIVfqw-Y+v_LLc@D}Q zvmn^dBH)<+=Lsi&j)HP87Eb=RYT}RQ*MJVT<8t6Dn)>!{0`CI)yMZ4K{NRgy|BnIQ z2RQ1~0>}JW;NVXH$2dF>9LJ@Pfp^XF>-9Zw)MQK#$95bnoXSQ0F~Cv(1<>gRd9n%kvA`Q&?w5;s z(gyfb(2mCf$NRDKfuqh6;oX$~D}kf`+dv2X`~mFozV2UzQy$`d-HosC>xIXogMp); z^M!XayWx7*)nMNW;Gs>_6L3d#QzZCMj~_^v~Lvn@xV_8j^`1}fnz*ZJNRzkIL|!j8m<@l zgK;=QIMs``HE+vyVa1yYFIU_?cR2_2@wxtMfp>@cwpqmGP?;wHUnpGrvs`iO&)bS; zi=REOWqqq-?XMJ0wS*%$$`QtPufDgMhGWAaXcvm`vbv#BJhKNUjjNt&8I3PbjIK=_SljDKo`FfX>k9R~tG0(8nj2lIJ8*rU!8 z;O#-@xSNb4=0pBqKIa0*_9_sr^Z5+nI-e(j4z|}6;HW%e0Bow2=Te{ z7LJc@-{rv3|A&O@_I*;gZr|rX2mOBuIO=Z#9rS-2@FT(hx?6+W_io|3eK&$Vw(keR zb^Cq_I_Upbz|sHRppWg_8B^?+rTW{~+LiaT|19C8kL_D5T(|Eu(82gz1svOV1?XUW9tM6C#Ao>OkoO_~v3-kxqyII+ zb^Fc{uG{w_&_Vw%1&;blK?nU`3A_vVpK}NMuiJO3aH?|R`>FKpi*z#iN8SK;J8wr}IV zak->}{x=7X{vRe>w{Iumq>t@;Ea;&A2;kVh#h`=nsRiB@;?w+2-+%1C9f70&QQ^9M z`wG|XI}mix|DnK9e*);B|0Te?f&V`W*X?`EU4Ff=eG7z>J+|)|!gc#j0v+_f3^@8f z7xZy_o)7xizE^+_>c0p&xSsqPa6Di51$3~!P44D6P<_$9J#h51i*Sm=u@L9uf#dl? zFX5E`c)l@4&IXd*5RU zG#_2x1BH_g*7r!@$3uP31f58hKVHoRj_dhLfMb0h0DUa?Y2e+V+_xP%S%3Gc<(;SO z1^%=Ej`8m!T*p7pVIK#M@t-W5;&uY~Sq>cIKU27l|0Q6Lakvh6572*EcsEln*6SPL zq>u4$a<3mB^nYLBuaq#PfQ@v995pb;U28Yf@ zhyAy}F%CZoPwPj(u^snb#qrebc%bmKegr%U@kt2R^{oJo^}SIzm5cFQ;jn)eIM#Qa za9!V5fn$B&6Rzv~8Q5b!>;N8v`sVzD<3{zxb)=JkV|`17>-yF>?5_ci_5G`GsxPi1 z-3lD*dzWxs-$%h7>-!w=9H?*BeSUp0pIZRO`t}j7>zn7Wj|0d0P8P1)w;VXuccyS% z-%G$A>w6vWo>1RsKnLe_8^IoRwgK-2I&<&mxRF0Nue%mF&RbRpr@X>-;J*u}IN-ef zLD0eR?J?k}zaDhZ|F?nn2LBTeu>a%_o_8-5uG{x{u*Z4b%fiWjoVULPI_UpLz|sG& zKp*qu2hhiP-EW|S`nRp-dTIYx1IPKm^T6?V)agM#KA8V?4!%w}#R2307Vth0|1H9` zpF15q`yt;SjL-hUsocJxe~@s}$M|#xj^lF_^rJ98=?nV(KtC6Ff8eKqKF(Lq1by^> z66l-=I_H88`hOL0?7u5O2jl-R@RLA)_`@7eiVybRBH);xHNtiOog-ZL--|#8{l64A z>MsQy^nWGrlfnO-N7#Sef2Ru9d9@hqvH#vAT=(BQKnML_1swf<8uYP!p9g*HzyAUq z)X#dx=;Z!c>`6XbF?RXvVT+n|< zIJG0z_haB#-+dnA_~`l`Ae?m2{siDy-=4yCeNP0A^&Ki)*LNJ)V|^z99|-lm3UpHX zFW95b!@%=EXZYiO98&r(aLmsd;c5L>cv}Aj9n8;5fusIX&_VxK0v`na=RCpwr}baq zx_uXeeMjqe?IWR5dUJ~6n~88xnPg;nQGzW57zfO(82oN4jk+I58zne zS3n=@y9qefcbjls-|v7Af%-Oi$~bO5y1x4g*ZI?0xUTOA;4zpd%yRIxz;V9urh{)4 zPJUt@elMK-#QWKH0UrwW{S){p!1sNcqQK8p4FldvIMo-&^RB@0eO7r6oe97(597d3 zg>r8aPW8on_@{942j`_5!5-uD0qEm8$)})$dHW04qn}yNm;%j*;(QwT*;zRGgY6h| z@DadqoG%7_EVmZ;a45I=KgpZ)`x80>$9@qNPVvO^tiHmjUU;505Ogp;LxH3I1kgeM zOMs66|9=!t{@{7mG0z%cK02NS!pR=Tr89)v=>J^M$NZTO`Z&&C0XnGv z58&9o&w~!e=WXC4AwFemC<^KAd*K=nd+|a47Yo-K#J?6G~H6t3I%InY7>UjdH(e+2s2zFR>b+xJV*LH*Xx`Srr% zT6^GlTss~(j$^}xQylQPHUT*LUn0D*vB&sV0ndl{&lj%y%jIB?$MNfglRsGB7eNQt z!CnK7_4);La6D}CydO8TZx0;XrHk;!X1A2Hh-Pm;Awb_-NqRzQw|I|2ILi(f?JTk9qPC=wttV3UpBa-@vhb ze*hhfPt$cA2lBrV;&Y2|iUYRqYT)Sq^TKuez6|=JaOW5NH6 zU*dY{_I+HqZr`n7kL~+~aNWK;KnMNb4IKS%zTWo-+xGzBq>t@;sBrQV^#_6uj?bfj zD~Qcs>dC*k7I#uIu|F=-~ML2XL%c z*A1pX^U>`a6;A%3{V3qrF5`q#eQ|s~8#s>7Q-o8wI6lt+dyLyfz{f+}UKCD#K4Zk} z`SNSP(f?nB>-si%*$9}Au5WwbSl=$fslIp}>UiK--(JFXeTRTO)^`l>2~gkbg?BUM zV*B0(9P7J5xUTO;hyAy}vA#bE*X{c|aIEj%|DtGeUSazlC|vi8BY~d|^-T!xX0))r z6~M8+HwxGFUE#2Q7C6>-op4>>SAk=F-xIFe_cO4^_T2&e45)9;D_+>V{)oq;vBD`1 zI9^Q=PJU9^bd7;NTfrX3y`7+s$LprA@_ssQ2M8zqGr`aHz|R8S9dy)T2=)%P6GIZQakAIIk|po4jS zD%fLw{t5aNhXu{pkBZm%r;h)H4t|4h+wOCl^Zw5ZCqHwt{P@2N_Hn4!TcD4}&Fx@6 z5$wMOj`8pG2A5Ce;(Hak3AcVW-<$153)l6nQua1aK6lu+e3SKbejWzA2>kCQoXW*~ z$aU~S;FyOO0LS+s+$@~p@SG{c=Kl(?$LDZY0mtWXw+h$w+6jCT)T`fHejKQ7&0Fx_ zlZ6w*b-5K_kL`Fr@M6%vaHFq}>wymmr~2af`A>)ai@-lHm9z1A3plP%z7HJNC;uay z>V^GoCva@9MsKtKWRJX)aEde5>rCOgUX#Hd{VWHLe%1oV`d%hn`+pB`^z$L$IIiyX z4%dtP#Brvha9!Wt!gXGq47>!|{XF2LWuFVaNb$m!?8nQ($@UZTpKafN1K$CBw{Y!$ z_jg&3bb7)#cA9YVpSIOXxm93~-xvQX@Lr(v+k3t~zHj!pO+Lr?_jmB&4t|z{{~+A@ zUnt}D8}DiUL(Plo(20Z!w zZ{^aI)@TpCF|EK+j{n!2dV&SCI)cji_ z{q6?EI}2~|nXiNMtJ9JUIlIH3Pufc=ROw_k-* zz3{xU{eL+Q#IYTh0LM7o=HT}__+!F#y`Be-_1fgn*(RLoi`S#~-tPO4e)bbi_9sHW z7$n^0i9Nmy2OS(w#sSB1;~d~v?gdKU9tWRR+#U!2P~08|PyC$grTrWzoZ1VIgJXs3 zelb_+49{lWs};A$wPU~V%f?>sL>L4z6E42Rb;;ocA^RrTxE1xb^=y@&9t+ z2Yl<7i^u(bz%j4J10Mi!SRh>cxd?a#`1vsCp#HlKzRkgRI(Yl<{CZ&=h5*Mn+y)%u zunsu-`3Z20L#yw(TpfpYz$+mRG2y!1$2oY3gV#FveBrvkTrS-9m!{HR-U1zr+iu_( zx56EMoH1^5fn(g3IQR>KCxba}hrsFAmU{KWaj2H=THrV@`W-mx zAJD}2AM^7N;p9K&XJ_F$KW_$mjOSgzF`hd?2mNW^l>MP{F+X!0JXbjRgZWks_Oxwx z3-h1(YymzS+BcHrmy7t8nrY$Bi$9>v3Zz=-_;*Su?Jej?ZDhF+SsjQ@zmt z1rB~c=-_zrqJzH)I+$-wn)~s`e%(qq`H#=#wF8d*s6BA(N5=s_5Aq=_T({#WhyBmO zb^g4#pYK2B&nv=p{=6$(m%AD4ah&`L_+0S6riEWF&chc2$NafTxXzzDgp)s*Klgw= z`tt~I^yh2P!TdRRf8S3$FX$_r{K5Pg>)=Jg$xqCm#h{P*vmA6Vf9?j3`Ex&T%%7)$ zpAYe0D_pnZCl33|Tl#Upadk{9pJV=p=(e`E9VreEZhHe*+!N zw@wH6?S=Uk7EW=)eCrJy^X+8dm~X>@&x3l67Ova9(qaEJ*yHi{b+9L`r^#XS>C=Ym zMGVgu76~Ua+O|#X{{!|oAL!oJj}PYgLgA!=_A7zoaliOL-ygKUMz|h_R|qHfFc0qs zej&uO(LugG=3!?C4?FlE2OsU=B@VvC!IwMuL&9}^p9PNfecPe4RXD{H^LZ!eVBY=) z9P@myb{tRg2lIJ<;1@ys+X$z8z?Nk29EZ(14sLZgzItg zNwA*}^;!pf0q{43>-ug5eT@GXpo7od{{%WXzO_C$IG;N@c)5cwaPY;#b)MWLoZ9_j zsPA2%gMMxRj_Z?KfaCgPr$e}2y1(ZMr+8xjO#sJn`w@pu+e7`lC9VGZng7hEuW%|C z=Pg5lE=!gks1-~$d1&f5av6n}hg*crmfpMFqo5%B)Nr-43>GjoBX zpO*p0>mWBe_$uJ2^OSJiU!D_A{^R{WFM|&Dmydv>{%@d<`PuG>;CLSC;I+ba|9VHb z&Ce?(KYs;#EVpU<;CyQb9P_q|aNRFPgFWVLv4hWZ@W+JfynP-x=52O|;J6*;;8Ec^ zKl=*T`I!qG^Yb*&$NW4UIOgF};Fu4q9Q=cCe+rIM<-qZ{yc{^@=R?BDPxNQ4aPkM| zlk0)weDZbRIG_9o_@xm4Ey8I$!G5%NXO1V8i}sy`>*G`p;X2O!fn#2cbnx*GeyMOO z7thO9IP4!2PX5zAG*D{#~w1RTe)LI*E#@biS*{C~Tx zm;Rx7V1Ej%3oQnFJil8B{Bp>vkAPE~9k)O0pW4mO&nv)wF>uV=+ksyR_MZyZkJ?KlEBw&Ur*uYx?O zap+$N_IP|;2pr>c4RDOlEx@maa+eF&@p;~1{}piB$M%;qj`#Bu^I-*WjKlrFuK|B{ z2-k7m4fa&7jdSzvez~aM4mj$M6iymAE}bb{mpd7BFt2KWWBlg;$M|0g9OHAPa2@~0 z9QLmZ*M5Eu_UO;gz|o&SfMdP(Il=E2*nbZOj&bV*9Q(^);o8sP!gYT+8#uOODey&* zC-WWp*MdFvm!-flKDPtM_^bks{bjXq-Ci3V_Pc@8KDNJ{+r!UW%!h}7V;r6Zel5hI zahP>K_9f_0JKm`^z-py4)F{gLyR{IL7~S;28fKfMa}a5w7F^lEeNJ z;o8q%z#jeCJL0zs`qKh9*6U#5+Mlk#vA;xtV}BVdT>E*JaNUmOz_A@?1HTUPWU)hk zIoM-=xf?jf=YHTApQnLie_1PB$7id&gkb#;Wppe z$b9>ChkdhNz79V3)LJ;{EQUNhL^!n$ueb$2dF(9OLkYgTDtH z063O=qi~8t2lMZiL(PBY6YJ-<*J%*X7X5?y zw+{a1iNW@LPGWA`w?v-bIa~2UIbW+#{4C)YD85p37Ad|;c=5@;Kf|G3iyeHg0lq!P z^8n%GKc4@#2fhUQV+?e#+(E!mzr?{8IQU8je;7EH`!R4Vw{vcAePa&3(7{&#$9&ss zAnWV?-a$C!Gp=u32ps)fEZpXgyP=$3;eI3 zzd<}lH)E-v(k;)fY6`g9-U`$P6+a-Aqg@mqwStoV}Vo=j+j;`GcLeF_z~ z$D>-PEtI9?a{9Qe(~Q9G~LcQE@;zAppbU$|{Y8;3l_J4+mD6t{7hqc}Y~L7xSR z+xT3kxQ)+^irYB+OE~$D?Re}Ezh1~A!YOVTpZ>rxJ`+F(<8uet<8l8U;S@JK?ym+N zJnp{(9R1u1IyjE~;;?TsG`PM|;Z$Gjce%pJPn`Fj0vzYPqk!YQ_blKyK>sQdPVIvI zw+8I7UKaqze!2oU>c1?U>h(V4?VDh~Klt;$aPkM^|2uGu|GuXL$MYZu@9N+agp;3N zfuA+Nab9t$a6P^)2EG*PwMIDA3;q8H>@m*Uful~_VZrr1(!q}vPW8h4j|kWKe=_J` z{LcY<^mDF*UjjN<-$lUjxb~`W@)P6yF>rh@)A^@z9LRq>uUr89Mu`7%;X3}S9sE7v z>{;RD3&!(P;8@>gBm6icKR~$d zzwLp~fO=gD9P3*;GFX4Ua2$`tz`G9iMf;F%Ito$9dzA z4u0q;zrNUihYQzv@*MD+A)cQK*YWud>@g0%1IIWt&G+*V!JtccX9}hmVEpJoyiBjL#0>7@uE&qd!f@`2Ju&IuJPe*%dhE z$zTVc1|0Kbm2j#rj`I%*xB1imAY))Y?<-y+^YBQ4??1l(wpuvp;BnzEz;A&(+yMMm z;O`38?Xm^zG2gZW$9DM^_-&y7t8ks4V+;L!M*C&LwLkZPJ(l|v@Y|u>=YXUCuL{@x z^cl-d(3t;6*O`FZSa$#a z7&5#WBXc@9lA!^okRihgx-e7gU8?d!6y`s}s8_jj#(-S_kCXAcLQeb^nGI&UZ!Kdk2hBR;|@yh+YJ_2W6WuA=fr>b&a=YDYN z8~|sZoCIfl?vCNOqR;Pn)#?;+>52C4x|7G<`s%1$VtGA(wsL>H??623nQrh?hEA5w zp-<6Y6AbS5=l>{|y!g8THz^mNd|g=-@jSmO3!aMgRSP=w-%`2w;p??d(Bbj%X>gt| zJqOO?;}GzV;b*vV$&2SvGmQAfi08h&0r8^c_Q@=L-uoC@R`uR9efseO>pM*nsR@>-bFmGGf!9U*ZC{N)8|@n`Z)j{=6e+J z)Hw%Eoy=XMdD#<~a{ZrExy%c%Yvori{@MT4p~LxYgn0HzGw9Q2J8=5!(k=4Ib^45Q zf1UPG?)w~wc&^h?;IlFBo54lPT{o!zbktXK5Z_t3-w)3tp6mA|aIW8x;9S3ND;F1(dWaw#6Nw;gR{@;C>MSH z-J;%z=l5TRgJ%STxZ~Ft=a=#z8BcAhq5S;UV z44m_xq1>PMf_-Awv!=ltD3^KUKF|#ObL6!EocTW3Hyl^;<$9l?Tzs;x)`RnVH+z(e zA9+ra*7+LZdH#P_zu5VMvmeHTvmfRvmwNIzxElJb+g`-8K8K+{3jKB(Iy|2| zk9hjL4o;s1UyR)+rNDU|CJ~(PH+50&ub1b*IqnE>nVU3uVsP7~+}|G#Bc87d&MNok zw_yL+c@S3|Ou2n^AoTgVU^sL*kDow?uM56LJoo>-(3e`c z@86{ih}Io-dMlUMf9?N>=lWfOcYhVuNos_+I6H-`+ns%9s9|D3^HFd594|+2HF8o-iaFSL)B#iFbp4f&HY7 za+xdo>|*eq2JZ*X{#>No^@BSPFZ@zeAD)M|R_?FU6!8DT|Du}3 znb!s7zW-9gqWR+StA@dw8@#8%M}f0{stu3E<=gQ(P^>{AjpL#q^KR3I|<5QJa92x4%{POcTk13aNxqiEY&qx3F zS1$9#zbi2WoOOF0It!rlKH{mK8*cNjR2BX2{W`{AeH{QS>S z=rqGTUQ_PZ?LV(Z^SBWC-lN>FTXS%((-d&_)w|$~pK0*L22TU0e!15||KgMSi3U$H zc(TD$4BpS+uYo^``cDO?&v^#FVDN2kMEU*{B<;?lR*j8#bBvqtX2cgDz9#r2@HX#+ z@qV9lS1xsC-%bMOy7&p4@ehrQ{4oAGaMoumIQOMx6Cxevbr786J~lCm=eR#9_wzl5 zci|p*YLSfxxX%c0_VCo49<0N0{UDR=al>F zBG=T&KYbPfr_agCMThgUNVz{RE1|=A-vrM7*#^%3`4yaXPFL=)i|o^)ycnOT-1nbk z@a6{ZqTJ87mvVnyya3L;hJdp^*8;4u8Yzi zMs*gi|989qXZ`nsv)@jDe}i?=_@hwYUl)&pb6s=>=ep>wT;_%AqPKGK{;%T&;_35! zaQZAdJ@o1KRaNEwywp)HemL(7bjni0Pk@$9QKgKstX5#@fq zXO#Qv;vzWnx&qGnKL+oc6j-%;S~!?&T&KAeqs_Rm6a_Ro6g(C2pLzRzEv!}n_rLx=n4IdHzul66+Je)&Gj zUEuU{FF4m%cjbQn4+LlbKQue)2l5rlr60J@r-3iWyc|;QucHeF&pIc{mwDwkcs1pI z{p%VVUKH|4&c zUeM=x(F@?*XNE$b`^;!??%NZfBVOI-f%hpFKkVCrpU3W>B;^v%_kUZ1Q)dx4`+uo& zsXyO;|4zAI&tDPG{yzo266^G`azC%!UqtJ7PcVqP4qQ;V_~HBMC6tRFuE*NYVI3Yt zJm-D-f1`1yVBGECe82k$IO}#!x%lM!aeslcpRa@etDombef}-#mS4GF|EflO6L8K; zd+=4ze;)em&(#ZJ*XKMq>yu?+6wmtPSMJxR2srC=D>&;@34AsDS61%Vr==19EI8{k z1bhwj-+?~s^WmZ>U%sz5OS$ALo|5$avM<0n?k4cH7~(Z~qy+`9NvxxbE{UmW_8 z_{_Mj-uTOqi=Q;;f2rJ$U#{HO--`H5&_4>!>-ibVWnAW4bxGut*X@(Rd40Y=IO8XQ zGd>lZ>wTkg-_Id~Uo&)yeHHnqeno@VH+WZrzise22Cx2gp&Hz^nY^b@aKH0Y-WI6s%$7@X(rJ-}Jd;o#I62Tq+C%EdpAr=KYo z|2&>9gbt6VD-E4>hRzR$&R@{sary3VqdJq)?o@b=ka6ca2`KXE`B(Vi@{l+ zgV5*a$_keFeKlf5DemL#~@Rsno6*}@9m+x+m zyL?YWXFB>V|GL=oTi)PJl*@c^y|+;=_2>C~M{u66b_3`6YCmxP4(&kYk}HoFbBy@4 z;H>|T;H>`H24k5x*Rq>+XWVOK*t$FupQ)8s@zX zIO7Kze1gH3gH!(uIQ8>wjC`iT&u!rUs+)3GH@9yLQts~?Z-8^(m;law<1^*bS6mmX z!0G2WIM-vs_hDYnXOiwe6+Q0OV@;2{`1&4q@lPrjpX|4x;Pg4e(^;d*M%%Ec#-Yo!r?Gxp&M z%0-{&1CDachG4G&iE(689!dRjLZ5jMm%*^fK#W$53%R5lELdLm-(W8LvZT1 zhYtI22srz2I&>sA*N5wk_zU2yL#8cJUfgHefHQuw!M`#1U&{SD-0)-6SFFQ5;H+Cc z<&rCXb_1u+afZ&v;2ifCL+3Zd(@zFCb?*2ns%L6o)}5C&FnAk-KWFe!;OvK~%H2Nc z_VcyM{r!A9IQR4Y;M~v8E0_9nKhM22%9nmBgL6OcrQG>U*8ThikGuVOICQu!W`T3u zA3dENx2O*v{5c~;PGXI5kD32%xj*(mm7Su!Ot4} zl5&5)%Ca-+6ZS(1<&qbDRzy7esv07{q7ej~otH7yW z^yjD#sgtPOuV-Cw>a+vrxZS`RKTx?}|103B!Gmre&c7@2NnQ?|>#>(|w_mw^b+mGS zU!4ffef1-7?yJi@{S^0i6FlzrlikWCU+yPY!0Es2?x=6&ITv(4d{ntG#;-T{8F23B zckKDMzVn~xap%9G!P_YJ^BM?FpVK@Ym)BY&{sK6UUj=`O`hn~BcIAHG-Ua?W_Pyu8 z*|(#>8NXP$O(##aPqzSY2) z@3YGNe8(c5IupUEv(M1UwJ-KOmN0mEaPC*h;GCBfgO4-#CUENCx<9HX^R2AhuTO0w zzA-rK(-oZheZUz%S-C&%esHe4n+`<&yyLx;` zXd`Zja`D3ba2h!Mul96K>wb95i0|`jlrQT!7GK~20hr+zXC;c>0?(c7Hl*@k0{jDQ7 z_qT4~+~4|vbH5s>T>NlO~6_qg-_rpI0U1dqG; zPYu3IxnGBU;PfB&+rR7V>X4vZbQqru&V6hkIQx9E!Ivrb_mhpv{r%)8aPB9&z`38K zgL6MQpZa@6p;8{*a_2hbaP`TR&+<8||<^Dc75S)HSfYbj+o_;^wCue)y?HkLLOMSRc z?gOX)xKq)*$aD7TK6$%xVT>QIT=Js-8Q}Ea;B=(Vd29;)1J>ODaK;Y>XZ(lC#V7mu z3vl}X8Jzohf!`yaqUGvb%;T=k)ePQPxoEKd-NEVSO;5+we~}TN4$l2K>zSxOS%-oK zPcV3*!IKQ0Z19l=AFtd$E_|q5))DvrS>W9N=YjLQbU8Tp?bXU4wc&^{AM*MFE&vY*G z!+u_(+}{tkD);xpL*Vpt3Y_~%ri^G@_J473`e^{p^*&6w^I1#x)z>`k*83FY{=Qe> zeCWro{~gMG{X~yD{kqEieWMFF^BUvnY}S4IOC!F?h0v$(r-jFzpKb;psNDDY0XTiG z^mLrhbR)jT#b|!HUfLLZn8E*2F8Ol(X8JR#!xkKOl9Wqc9Ji%%nO}bX=LzU=zj_Ls z`&AEc?pH&=xnB)eE`GRQ%`oDZBcA?$GWcoXWU5#!DW=eS$I*CDS0mt*^Eqg?VW3H?ckr=PXT zB`?-_GdSyf1o~WeXAsZtb6p1Kddz$!nqRKRyx{DIg34unx$deN@g0==`@_?Sr=RD* z>E}go<~2sS?`I}B>%73=X$Id4&d=GN2B-cNgO|S=^$FvfDEI5rLb>!qZLF`h(BbEi zhJsUng287Re35eB&r;>$hu_y;10DL=0ZuXaeg<@?U;J9^dfu+w_n)X-{MSW2 zYl8E8hz~%YeclXw750HQl*_nrSno5z`T6j<%EgcL?mYdS>TjUW&yCl*9_5>XaUWDJ z1I%`rxc*igH(<^xXe@ zdfZ0DQ~xaDc|LOmd>i~%&J^2E5;*l|fb+O;(%@H>JO5Ml{4;0fa9o+MR_K#9%B2?` z2mb(^ettIiQE>XqoF&S)HT3TRXM8Jg{%+xDaQc~T@Xg94Uw)qd-mIY?SD&%k{~eV} zJYVlT1J2hw?<$wN@%7GmaPHf;-w@S-{_7dMi*oV9bhKi0y$#O%dOy?mm13bdFg_9&hK;J z)ERB)nfq`_aP~tTaMmXsoblQI6X|n5&j(JOm%v%K@djU{T;`qoz+S{3!hD@k zF0Q1e{dAwnd}A~(!qfD1P`t-`D6ir19jep97d;CAFIcaYaVyUmpr*c9jOohp5w#H#SiQJvT~=NtbV@sxbwLaI`mmIPc$y~`3}l` z{RJN1r{kXTxEnV|-cVosbKGj+?88TuOC9KEf^z4_jeFALJM?;2@qDrKdQ!R5aq(Yz zyq2D~{ATD>$RFxE9Tz{$ylK)IjSMI-*Mn?il58|%~1;C+>gK99d6jra)$Pc`^r zgQppMhr!bge#PLq3dF8M34>QMcrAlBHh4SbQcs>gbXP8}c>eG_IL{yYgY*1hB=}Ao z-$yH#dFT1Vb|e0Ga2{VSfd35r_61|tvxmWl7`(*Iv305&{858HZ}2pO?=bk&g<|^| ztX$@?Hum$k5YO}K#o%0bX$H?!I2xD7<$~bUxktJ9;XdCNoc%UPxs1Z|qSv6$^P+j+ z9Cx|FH-fiCefEGeuLecJeEoItkaFMW* z`@=lMKZt(F0B2uaH~8JfqdN0^vafQ_=JP1ym3MHa?lD}l| z*OW^=`TBGMIM0XYfir#;IO7k2vz|+CiS6^Ca`D6Xa|X{*GSrcKURTKrz8mviO}XE1 zbr8?%Zx4X;`dc&Q;*-a(e&F;!(%=&eJ_CGNFo=77w*;KO@0SkFasLFTPVQU7x`}`4 zJP6MCC&3y29ysGa2WR~E;Pm+$ICZXqQ>R#bFnH!tQ9sMvRMPYO=fU~=ek;J){~N*gp#RI44)vw~`8$etgLB`g56+6`~<|)|4f4~F!);K{(iMZx#Y{dc7ijnec-ImIpuy{c@n}p3#b2T%6&g|l*_aD zJBkm0|7-t*KI_>AoX68G%4J;k=K*m3&TZMUp?`^A5hUUI;YD!9uQ2!>w}m=#&%R9r z{{{V@tlY0#CxiDk_;7=dGx%4^{drlbT>Mvr&voFOmmi_edASVE{WDLwus)J6_s<&O z+$URsQ>QyPb*6%|55EAX&N^`F{0YwZ+_%T}e>*tGeGr^F9l$y60C4I|Qtr>!hswoO z3C!0laL(6%q0jkB1LwFq44!WAo63jvk$ahAcRU&f&VBL+aITj<;Cqo*jS8W@)PcvN zy5L;zEx@_|w^1%?JRWsYF5Y=O8iIKGd>x!Vb5;y}`s=!ka(^E0R4&irep?fq`*wYB z?%U14S?6Ts;)nCz--w@yc=p3$gReIDcIAG)2b4>`%J#zj~)Z(I(icN9Jf0-k4F=rBXi*X-a(c-LjQ8V4}G2t&g)kl!S^G6wQ|Xe z{a@kEs6MPi4RG$a4=eX|27_}Qy{cSB;k=9o=lp&E&iS1K&N|Ff?)U93BmSCle|~e` z71f!3@`2M&VQ}VENxAQ*9ysgVQn~M^E%bT)sxx%B|8z$@`{4y}_QPoC@VGM-oX4F_ z(2?ABgyo7We0TUCzW>t7S?zT{9z-^XcLIjn=+AHces3C?+$5B@9S^H&LVBrmShLCR%J)@L+0 z*XcAvXA?Nr>Ceh#boTQRaITA!;9M7%z*&bY%KdpSS2cFs9#QW1RU5?9Pe*Y2=?2cc zhA8*_j00z#XDIjmdqioeop(*JnC7>+`w6zfmsZa-FVHF7~)izk?3zb{0BZr*Zd$35rjy(+0|AT%HFu z1?TIvmkhoEobNju#lT8JC}<_!05^9K|_s*0WW$P+#ujgMaSt7w=Xs`SS09 zCRdN*1+4CUhUkKhSz|J;jsp2r>rKZyP6rW(<>hroL&7cb0fsB#&X z_52X=6>$AL4ZI@wRdDLpyf5@4<8of!1*gs`<$j&()r@pl=M~E3QPz2#$6cLs)CzU{ zI^U(-uTM+FH$=W|m5bV8)VVWsxL(GBvp!S7`MJB}%EjkbfhpGye<+u6k6_$O(BZgQ zYlr#zc@;5uMdk7=_FF9@J_VeA2f44IGZdWtIl<7G3C_ALF!*+Z|EAo}D|?-=K0eQ{ zT?y>{WApU$6=M<4&xb5kF7wFuebT_EV1BoO^L%3;^rs`f-u;n(@pDDLkI+TA zF!~v%T>MZ!6`cF<7oL9N&A}6cTkg8yxT1dye)@v*b3Si_m&Q6;qTH{~Dsa~42y|G7 zOZB2U@HieeOyx>3J~!7Cd)$>7Zmo?`HR z%Kd(rV8qWf_}2#i$>7Hgep$Kr;rVdRq-Y-Z2LI{y!+hX8|11p7^UnnEqv(h7%B3H8 zeW0Zg-vylg_6#`tZ7?|FUjt`+s&eteSQSQ>-jh0dEGeffvC>Be)1pX zetoKdv!Cl5yqUqhLH0_XB5rh8uhwIP3F?a`D6S@Fn2%a~e7v_r}IiUf1BWm~wgaH>~T@$|WzJ7uAFg z|L#wH=!}QXLxxT#aQZC&P~?-ZkCK#&pZutQPlLZ_=oD=d>2rQ-C>MSDc>tV!G8CNi z^%ppGHa88&6@B*SK5)jLF!*)wn^1?G4@dg+dB1XbRK~89FSrYCgAjisbY_Cn&nAO! zhd%e!U%`)|A1XZ()ju1?y$_u8QnpzbFZYe1(^R>v3m)&9agI$Gu0n@3S5_=droLI~lyU!CzM{c^${R z>@(so82mCg`}V%(VLc@;o+r0d?(fg@4Zc^osEJmJelH+Li%?&5`1<`#A205`~EvBmvQ5-=Xr7;aIT|C%Eb?lzds?K`^=8E(YVw} zH+cSbQ9OMnfpgzz4o?4@m5a|kLDKGZ#CGK}3a`T-fez;}U;EIH=zQ$kR?86FAhCbz9wDyJn8`sF=33{CE zqFiEmTz*5jj7$BR9YaBXULI5~kFstLgEQZ@;H+CGaMrDda=$*Qi0Ad>&%sY)9#=z$ z{k9eS%U}>UFGs++zAh;D=jDb@QGHmq!ph~*-{EHlIP11mx#UZql{$y|KCfl)rUrjW zxv0el|E`n??twx!wzabG;`h_t*P9;GCC+%4HO;i|yd7Tc)QYKlIt&;5`gJ#NeMR zmr>$_e^V2JyWsW>IP19%ob@~o&b)5y9{QJi>J$d2PDOCWR|9AKgUV&TSf5A1x!&J| zjy%V$_p;AKKF^|0x-0kBdq2dpZwG_3Z(jjt|G%ePyl}lYc{cRp_f>0f_SGB8Sx_u7Le3yc=ZmYprx6R7^`ef=E`jLC~ zNpA3Sn8#AeMTdP-8Jz3A0XWxtvT}c3o&x8*^j9uExh}Hwiu|)~m6iKG#~OU9!RHx# zzj7HpKKPejHn?`+%&R6ibsB-}ft@+{VEKREL}3C_Bm183c?DEI4Axo_xG?%5}` z!OvqJn=2O`uJ=yhTo;K@xFAC0jmIY@$8-X*gXThn{ADlX4z!^UYobj`j`}LU*&h`E~bmTd1y^ne^ zs>22J$wuY=df$O~_U&G9_U&PC_Wz&C#S7Q_-2R~-zpuUqXJ4IEF3%FJwD9S1IR->| z33uzgjB;UI?++=LajAb9oa;T?z(}8U%MH$ai-EIlrNCLYO3MBEbV5A)q$l`A%;RwA zaJ`QM=X#$3&h@@nxj!%Kz*)Cl%B4zN7hML$uG=`}k}rLpHux2T=NcU9`#QCi%cJqZ zzp=XB8-uf+kAbtE1HhTr6maUy0jJI~aK>){XZ+8~{k#r>bG_d(B&xGK$F27-!T&^` z{H@$y?^$1pblA5yg0pXL0^b`v)m<05O}TjCdf%(u@2lhB?5kogM}9;rJ^bIe>K=FN zy`^%A<$52a++Xh%hlYZF9qv^wkFsvH!I|$v;H+D7aMrE8a=$*~5YIlD27U?ixBxm_ zN2|fP-nWBuy{9Yp=j9?e=Oz2FXkNH3#)GqNtCdT>^jTtfsN?fW2CrrCp2|fnKKR!@ zA-D@}1HoC(QQ)lSC*aI$6F7Btfm7!cIO8vYGd|lZvFnfzoa?=ja(R~2E~{RzUJCvf z`XtAQP+#u(ep5m4zY*UHT=d;>cA#>99Zga$v3!4Lp21fe{1=1&4SpyX#O*UpN5-z( z3kDyf+^@qVaModop|e)Gzi(`T&M(0r&gWim?hl8-xj*~?&Uw6`TYjS){jkAlHS{k!jKAIBwUx`W{z2b9XT*2!1KHoJKsAD-qqlJ4gL~1_l+^HhvUk9eDE*1 zXmA(Yrg(f)VZ5JLW##fH*F|;kO~He%J`KV5fHzm}*SVc?f81_H zd_U-4h5zA(&YOnLd(gQCof(GCTExc(wYa@la2MQWy%pBY&ugA?dGtE;mnir1?eb1+ zooAH)@6q5%uFidwiw@^~?z^#d7AluVGeKv$a^KH)hRzP?a9tcQbj}+(|3D`*{A3*; z`uF`5QSR6IR^{@nEYK+j9oDC+p>rQ}vO=f6q4S8L(-t~6K&KmYcwFmi=nR5RHt4(p z9p*I`@j-Z8t)S=RmVH84Pq|+i+`0Z~2A&=IZ-M6ke|=)8BlYL!K;BmF>+eN8_tm3_ z&k6lMl#6%P=gIe?ajDZ)xjgzG==4%9I;_vThR%o3xe+>_K!<*oA)fUtI4Sfg7DB10BxG5kn`#(76JgeDIU){b;^epPQ8Xeu^uXXXS@ZSwp9?p;Hq&H$mqC zL#G)y&vOPrM{1g^uaDmM_>fG&gTZYkboh4()4cfQ?sKq{qx$gm&dmm|2+r3p^_7bn zeLn1Q=d&$z=yQ-4KUTjNxkS0lR|lMbo`(+o-1tG5m-CaLpHFV0Ts-pk%=al5eO@0p z0i6Pv$6u#Lb=v^mW?D2ZU!QgaFNpXZ%Eb@&lXQchGkDeyBR|y156;gSCW13Q$>7Nb zPcitL2A^s0#Rg9^_zr`o8~hwNzo(!7qo{7IPi1h%F9v7bwu9F}e_jQ@AH4kZXk6-4 zH+YhAdDb7nojblihIsB9QxGq`9a6i>cD&pEBE`Pq;h#y3FK84{1))LpwGU281cLwn+#qE{)a$^KF1n-p24?+ z^Ly?m!TEbNCFe%{Fl*|!D38J}SA zs>(%;{h5S#_Gcf&OK-W~Q9KAf27PkJ=b=xzXFt>cFN}VetX%q&pF5on&V6GcIQQ*u zpuYruRx20pT&MdGPoKxZ>9hM6QTv5M6pY^}7{TDQNDT7y4?&n)axs1ZR9sp-vO~F~8PRjkfUIu6V=P396d;$Hh&<|gN zbAS65`mECM$oZ6$@_nD4(*6kEH>y`n|*TvZuMDt7k z%aqHwTwmXTbAA1zT+}45<)Lg`k%i%ZIPTsTuBu#O`Mz*l`MX>+Yg*$(QS{ z@Yi9!avvZ3ODG=P1-FUd9QUkpKd)}cp8NB+%0*3{lcd*+wt0L)j^M%Ib_)93haXxN`FR4bYf_bq z_LJaMb;I}bouFLexu5I?=l9Js!1=w=_!XfaU#B%V_sRS#!+5!m5B|B|CoHL4beh0_ z*>7XV*H!MvZ$!L2maM;9c-Z4tvIP$Yw?92TQsY~$3dfbY@%@4m%H>h6-z(r;zb#gW zI(~hA0B1dqD3@o+b4Kd#0%chf>iE1SIQ=wL?vLBa-~$c*p26oC{G`FJ7(D0N*!3x5 z@UjN)rrfX3I|k2@=G9aGUSvMyQaAqoTN&lj58NN_1n2(nFm$*-i~;Am_zaxu@hj!x zmh-zB@m!}{!P!@r!Kt5rT~vSisjgfeEglrZ9gq4dmpbtE+91T2K>TpZ1xaE~gEcNSx^LH;FGk8zsex3U%mvKu5gSdWp1v;$r zXvEX!VsP;~M2~~J4PN)VFkgvfJ=-bw>(EWP`0t40NH4^T)>y6QC~*3mrd(p1L#O)2 z$Pd?72jza(*DG&vh{Y@$@+x@tpTB4W4H3P0*K|-Errz5&t*h z=_kkcQGMtquX1@*^xeGQgLuyGQ;4VjAmvhL{+`u`h!_2)x=v?9zZ2&12k3CUUxg0G z&ABPe%kQgv%3WR~wXbdir_LSV@#u#~pwHj$eGKvZ{oW4BC0DMyVbJ04@xBHf{vPk! zhR%E7tKf4Q^m+a~+u$3Z!+!YH;HRL&zaN@ub69^@=b8F`^o`1;4mB{pGnC7GaehC8 zPATNI7&=^cGk*xj6@9+{yBnO>le2G$;+gL~2ColJ{T|9)zHU7ZMLfry2!1c>@Hsg3 z&wBcmf@7!LTKyQ?|2tb_^En3JXz-ldV(S!8E{}4(+zMVA^VQbSc^2_9XKtT)$A~{> z@B-Uo`;0euU4u6R=Q^6NTtiu(IdIlz2>4E%uMSu4*XJW6KL748U-8N7inaGdoWGC# zAULl}bTW9ZUm_j8-kGUfd~$zV0nT|j4bJ#02ESQ~8{9;nIvbVCqkJEE8~AO(lic}L zn|+ZEf3N-$IQ?YbAI8hQSaUjgz&Yw&O7{=64Z?$;qfxjZW${ND*3?gI^=vj+3{5Oi*a&g0PG`OmY^ z;p@{r(5Vfbp@z<<(BbR)Q;27sZ~HZNeQFrI2Y3eZeMh;du@650XCJ15v)|?^_vdAa za=#CEfitgD2LDI7`1~WdbA6ugU|0vAmr*W$E+XGYm5U#a+YOxi^Frv$bKLLi#vh8t zEeHKx;M_L`fpgzjqg;G)|NIf0`|VZbzW)M;LqDR!J}jwR9_9R21m|(23OJ7=_k%Ov zB<13V>#Lg)|CVy!=VZjw&vbD5nFG$emMi!DYz61MABWCoSf@pfg!T06oB+-~X`x)6 zCC_oc2fG^l_TT~6w>PDS`f|@cDG6R4@y{!ly76`BU~u-yHs!wmBZz08oKY@*SkKGg zoR`c;BmbP2yx`2YpmOoUKB;EJKcU?3lkSM8pXb5pr$0FJ8mrv*lM2p0S)|{=Eu)ey=U(Z{fU1Ui@BLb>;HtarAi)#53Q42A^s0 zFTlAj1|19ih=2CyeuJMd_>adU9qyC6!Fir}-r!wMMD=05L%?|+I1ilhg-%8~Jl|UY z&iL=assHM!P)F|B5AT3i2qx3*8@Ha0;@Qu)f%AA>S-I4o*CnbWp2zX}%KdfG8ah00 z>+70w zzYlYrjq>90u{k*N>Zx3wC6dnPFy*4pdcKBu*7I%Xb6&mx=eTR2!*RD7@uv*_m%+22 z3+v$f&!b!(<#D!d-~TAY zvrpay=lRTJaGuZ1R4!iFCmX<-*C~Uahdz%x*TH$*>2^MLzDJcyzC13U2j_9W;e}8~ z{L^PU<$m3|Dwk)m4n4tH&q3g<=WuY&*I4C#J!gZ{=QrRyj_-y(Uq>WdjGgb@2CoLr zK72yCsEJqiy|br0o~---T>$ z)vJP63KDSpRX1?S%lR3nTp0b&0q6S*E0v2+o(CR9d}|zkYyK7aybHh3K%u{*yjcHuaMnLbx#+OZQw-kE z;3Ew_Ub){7AA!@)H-^p`gJ=CG%-8o{K)FBet>7HDs&aq-xexJo1cSJ~t*>0h<#Dqy z;#vR4z&Y+naK^s{&iI+i{d^aJcSe8i0q6W)FnIaPvFlmO;7twQ#^7BI-bcAVUoV5R z4sSz;-*fy)xj&D)pu_cb0G#XV4D`9a;;zK5PeJfPsDC|h9xonNE*sm)BA&;u64yf=(dYR|S#TaNUIl0TGH}*2Z(J}*!Oi)Z zpq~>cY=jStrfwMoqRqp#aX~Y-#Pi+59l#5TUi^rAAKEUf9Pa~ec|F9kUqP1D~w{r5L zD7c9ZU#C=2E@2ac5O+S@T)AlQd}$1HxR1>-_ZHT);|TD z*X{oSXMEAzQ62U`zk+h{lNWWUpg)@QGBzduhxho8^?--kkU zT+T~^T=ZAY^;;dB<2F$)&-XBNMnV5C z=rG^cZ;J9|Uh|cU{%PcOLxCusuP;(7l67C6saQlTR`_tW#?d5Guv!!~g0 z9QAa1=h$z<()9224M03~-UsKr%u_D& z!p{XQ_w>i=>w*o?q5es5zFx~LZ_)%e(dRz!q;jbN=kZ15u0HMcd#N89{0r#N&o5ql zver4XEQa7Fe)#&Uo^m&?i*Kr2d{V!!7r#U6KgHm)4V@pn_*(9JxCW0a9IY4nDW}}| zAFKH`Gk9A==M8z2HMoh6Sa8R?ap0AMVmQ87xzvY!wN|;*nV+}ZVZ^5!yhza~U+Pyj zcw>X77`&gsM;rW8gRfOC`SN^bt8%F)-!Iq=zBhQ#)$>>IMyUU3@G7YPIptD+?&pPz zMf1q`rpo>K8fEaQ2LIIH>kYoc;D3WR!gZ~L;<4vF(csAjPce9JaGr;cGx#Fq{`{_0 zF7wOxJvTvz$H#Nv95=uG$Wd^Uc_FWC@P^<#&-p;P_z|sKx-ZQ_Jok+sz`4Gz7(AO? z#8hp@=QDUSB1hi4l69QcYLF}GeWmJI!fK965lz`6gteQOj?J}N$TUOyN- zQ>obT`3+vm;FS%Y1U?=4wg%^UZ*OqU%SeOI1gHL&;M9*R9XsEG22U_}WrNoP=eVuF z`Td~o;QXDdNy`0o`k``J7Zrn4T>s1hmlkvUztHEtx(V^^5Wfw)D(33~bT}_L%EYc` zad75)Cph!%3eNbKz!|>;obf+^Gd^2F;EeAC&T(G`=eQHWsk2tOJAUnx{|Ih{%Y}aY`6{hk!X{$A?pE&4 z%Y)$b(*c}*-UDa+=irRr1I{{J0B1jBx;?5hc^-ooH~8%azsKP94gQF7sWY!fJ*Hgh zESEssy66BMp69#{9lqXQ109(g_j`SJmk;Y8`eUH~5;*tU(cp>LZ%-%}|9s!=EI7|Y zGFJ%4_4_KPa`CeSe)209@65Ln;_0(GIDLKt9nSl9<-VT-(D@}Wgz ztXq9>z7B1r-1mRuozb{lUq!&Vz8+F8end+@CLQ;*$KCJsjZiMJe4qU@L%-c!ksrS9 z?y6kIW!-v$Gv7hr?6=|ItlL=SetlLWp8LQL;P(bka`S!&I_$%9;9nv>%iUqVGA@rV z1(i!ba9+xSb6%<`m-_r3NIE}j!CAL+%4J;oY$_MQgPYIW8@z|Xrzsad@xi}+3Bg@( z`xKn@{1Tk?+zrmWE`w7idzH|?j7y#3;EXQ^&iH$k`*o-b&h?(ET;{7iu6x{HHS{B# z^VJ3XVlarCuVQ-b;B}Qt{c|DTM$lpX`+?K{%g|o~{jG>+9ZrMO=Uvre=Q|3V zpIe)tT=HT+ry`#HJRh8XRv7$ygYN+6dfWrf>u*J?hj~eztD!z^lm{rT3;J*xIQ8q- zh;-yR`}F;kr6K7a$}vSKCD9-42A1e2K zeu{YdnGa4sUx72P&B}d0hrn64i_rNeD6N~vviHZXb5-U3dQ1Z6{I-S;`zizR;&q4a zKSk<><4S$F|JL8x`&joPqKUcxoSEcI3&bPX9Ki~Vo?+X%eb!(;EpWhCM z=l+udehcc~OSwOfQ^7fpo0ZGB+%gKq`r{*w;Qac^u8TfcXYq$RlRW9{ppDa@@v8=;(#B={S0DZ30Q{Y_h z8Q@&+*TI=@)(4{cbN?x)TK$;#SCGjFZlX{B4;Z{1_@UrQZof)s9O-ag5)J+^IM28Hfm3Is!KZ>#Ck>oB zI}Dy~@D2}!dHMT53V1ElVYhOrC&xW)@VF+i>voI5Ya2Y-;N8Iae)GT{khJr2H{#{JCdcnn?$`Ng z=n!bT&hW_1pu_dHl`bnVW_6lzcNVZfWH*kF0Yg zaMrmhIO|zQxnKWA%KbV&3r_$2pu_71lZ^OOa2}8HJsRc9{k*br$yYqN<55$@^LX^F za>Nk!*L~^$CrD+c|3X)obe}>i%0sup+)Sxii7ibln%~1Uod#?mXSV> zBZ=VDNiukQaO#W%r_Ka}&ouZg$)Qh~NA4#H;I+}`?<<#ja@=_aUuE$92ES_Xf{#V@ z?l z@!~Avxqtqn+^_TPt;70=4v$Aoz^VVZa;ZZ;%u6TbzWz(l;qhoBbn-%HEOc1U$>8kU z*#=(&o)MUG{dQQn_-CC@gR{=(!CB91%KiH1XcP4t`?(@G{U<6H9UhM!H{v^i^LTU| zIy{avX&cQiKd<;0_!QKq3pjOpDwp}4j`$JErJj7B>kaTah+hmH*5ME3QU{LvUl9#% zGA`o_wvWvd4c&d{kHSaa*^8R)P+lfhY^>CmCi&%o*P065q0 zQE;x`v&zLk_pwWe=eo}HMATPYzXieRKf&NtmHXq~uUzJf`)6b5aNM{jLq8HPA+FB( zl#4$9o^LVbGLO``4Lb5ztxz_uKXf?1uOObs>vs(OozUTNBpo`O-?QMH-y1td`7*vR zIO9K3E_L9(vDe_ol}inHUY(~?IIi#%ye~Ew{3-Cg%H6u#tk=W;L_E*)M|O_%**|Fp z-(m1W2EVRc>ToSc!u3hEE>S)22QQ{v^5r_M1kUruNzmc>%yjU&(65jZjVog$>GzVF zDHor7zo4@h@7^!ygLuAQ@RM@U=IfUhPle-(K96_p!Fjyv1jp2}HFiIgH+U_B|DoLP|NFZ|b>Qp4M&Nus*iO0R%k$?$h^J1=rz3sVZKA=yQZD*@ zz1E<6q{IE^A?32ZMg<|RpW7-I9ro>T@MXb+F8+ORe$I9$^x4n*z}e4PpNV{Of9s@N z{IDPTDtG&X{!DS)2Iw%~ZHVW7dl35E&kH>p`VoElFAYxr^_2TQn;X2J!G|0CErWlp zT>6uBJ8r~ZR_^DOvqzLK^D3|0&#R_#8JB(D7@Ymw$}VJ`T1yE=357x`L+jV{F?@!X7F7GKd#)*>ks9AUe}?+yvp>B`h@Gfk8*#V z4mJ3A@KwQ+Ts;pf7eAtPML*xtyiYi;@Op^<7@Yg$7vS7a;`>JP!ulsFm-_I$q9@`x zFC!4o^NsP~Tt^=&7yo=+GZ(yJV9nKGA-KF%==itbtV5b|sTtSfF(W=tzpxJe`YNhi ze9})mIQ^6ZXI{0G`+k~(vz||Zb6!S3pY!`RIOlgdbl6uX5HFt6w69vf5cR{2IRF1d zxzvH>;OxUM z!Fm3+9r`l1yf&8GS;VvduYptl<^fUNrlSr|g7dt6ka8JL#$B%C9!ET1uiZ8<(kE{T zz5(No24_8|f>URca_1*S`{Al`sdFpzL)}4jH?*BIoi}K}h zrxG~lx30mH4W44~eg=Qn;42Ki)!;{z`+bssc$6>mDrN9QgTJ6$=CMK0EN&iuHsa41 zJnJj5{oHNvO$M(tBDPK&gQtRX-IW;`>PX#cWB*K4F6)B7gWUk}T<=-rqCjwyc)pH! zLb>R3pX_hMXL~i$;e53)_y^$3Yp!w`m#+s`Bc87ZPk?iO&h%R3=Md(-sB*V|y5mAU z#8ameICWk&bW#ydoh=5x3QqkxuSfoQTpX3gOMl95%DVOYm%;OniTpo+_)W^CuhyU+ zeo-#t%2IRsXTfFZIDQTK+=rhU8;#5Bz0=-|IM>BYgD)`nO6B5n7yN8Q{Da7MH#qB7 z`mM+h=eMT8+ktc5UkB&>PFL>c(amo<;#r6D1~3112q)tz7)`I`&xTunu#;>2sOE|1x;#@sUsJq$?Mn zJf6NfA&Td^`xKn(Zn<)|UM}eSU;7Zx_rJ=>#lhg_kDCb2>#_B~>GN%H#=j5F>%EH% zp7dVm=l}eN{~Om=x$krKq}cw?gR}p0ydUY;4*t{a!)2Arae?zbADr{G3_5&$u?{>5 zeYi)t?|wz;XM5^ZL>iaMrEjN6~!o?<7`HF8+&P zz8Wg`$L#_g)~z3O@&V90ya^Fuq zaQ6RW;M|9MfOCFNC>Q@cf6D;p`CIPUVO|nX-dDN!q@T|Xe#PJw=S2EkkG+)p`X3qb zTM^HFc&wb`;7hv#*Dp;Hyt9|l3E zCUk~_*8(2{edd)4&b$^Ie2c+PDfjcuP%in_hM#|+!+f*P4T6H3KktnV-VZz@c#`X% z_m%tm;m6?YlTX3f4~v!i{j*ZJ-zOKqS)c3Gv*Q;yw@cMTh%O zaf1(0?$>#)!7mxS%oowP+?P5j_w`>h;#VS``_jn&#;)5G<^H_PQ||9eOQ6I4zmE8S z?Mw5+aYg4}`;u}$ulk7RzSJC?{ni?s{nkafpI1-ie!tBJXTOzP5W8-*l#4$1rAEpn zU+znfLWk>gJao7(eFPouOS8ebFU^NO=Vc2x^EzknJPTvzTT!{6Z#CtTFZZSUp~HMz zfz!_ngYO2<2qw+#OPLl$eZ@Y>2hKhz49-3&t=#XEO3M8{=>bmv6AV5J`rMax8u61B zhk1z~?n~3bxi2jH6?Ql=%b^~)*u8Q-yQ|0pOpsR z2Yv2K$Cdm0(pl(momTxO^2vSae&wRWed$4P?n{p<_w(un&b-DM{0oC`QZ9YMe0M4L z_oZKTzo34nR*I?!1pZn5EBmNH~zSPP{pZn52 zaQZy2+@F{0%4Od31(NPKmGj$3pZiiX!0G3SRZ+g=LzK(7T&E+HOC9b*zGI-nb-ETh+?T$GPEF`+1+N9Z7y6u+ zbKvx!b#?5#N*cVTazEet$|c|0@beIKnD67@^fTGuY2X>ymyRo!aoHys;OvvX!PyU4 z*MxQO`zMcbzfY3D>HkTCKMQ^COYa%+H>?f)NM16w`~9((!5>5&rYra7RLv zO1Z@HeZ$X{yE>=o`@b6z&-Z^DuaEMg&S2$EXNP_s^=-scXB9Z>bHw0zH$>xh#dV%U zaQbPY-1$k+-wp1M_?FP=_+3;t9`Cw?^Y}OtobeSlMn37Mxxoi3cRqXQ_bcB(JnObs zxy&y=zkL*(pX0sf``CWk8~jz}&d*f!GZFFh^P6(t&slK#DYPl_GaY^20i1Q~ZSdE? z4?$-hIN#U)0i69-W^?GrTeu|w}L4%hE=Q>IO=X~{7F7s6q z``#$T-wM7NoH}{7#`c+D@cY2|d8FRp{Jhrd;QYMSGUaZay3c23-xm7u`|u{^5b4;&=shr~V_q#P&H!xy+;FuvuT% zY(hN0PkQ6tP)Fhm1^?-eJB7g?g3lq!#V221j0WfHxXsGN3qSXsZp0_;i~PuQa;g8^ z`=fj}z)xA_E?@V3if@&RPktX~y%+Dkx0vlfq|fvDd%^klXHS4Lui3wbIx;Tnut>S& z#Pf>pz^RiC&c82Q<6z{I@sB9?$DIt$`T7`~uLoBce88b-T-Il-!9ND)>zx6ILmf9? z6EXz_32s9@enkR;+d_}`(APWPc-;M6o(&#vs{OOo;}i6{!ETS22+k?xmhZ^Feb&?C$P$E6H{|U@8rAD;-$_|D+$x2ngYIy4Uc)9r6Pl#4$1 z)uG`09?CiBaG%U{JklpG0nYt%j>81qNTMTkhRF9YIO}i*yb|e6+zADVMr636gOAeAI~l3-RpFoToznqQm}7Q0~v~y#{Y;@OH}m zd3;8>j9VM?J_I^E54;Q=es4F|>8Sqv-fjQ z;J+)Ex^W)=1aFFdD0?QF--p5P{v+fvFFZe)qg>{l*Eg0bmvQAW_qz?J5zoB-G{r#4OFz@kBL?qm@ZJU=W$;vkFEaQlgP&6F9|x~1mpbq`nE%hH zZafZ_RqofVGC247w%}4bcinZaa^KIlh@Ti(aQp2R<^Fzh!O*!39p;t!QtWyEk8;sx zzC{tw<5~sqLhyMnIOE%cvp%naQ)hv4zu&eP{D{HNgY!62;jgd`{{C6d;13zRxpKcB zI)FC|l5q2w3eJ2#0q1$(R^?I$zP~W&@7Vsw8T+}ZaadrSWkFz6`%e?S7`v&59oSmRt{O~xt2Jx)(QRwq^+-byfz5D}xu8VS)!+iZZ zG*#}`p|x^9uN1`R3nX2i^nyO~8Vt^T_;rI%1ZV%R0O$43b>Qr`mRF*DIc`UT_c8cT zgO5?}*JqM)sVD1`3LVzxbLjB8_czeVi#o4|4(E3lbk+ou?B?YZbVfku68K2)Y*(YY z(PvHNl9%+5yMEQ!;};|#xDE685dD0`IFGyQQSW=apkCLS?s0b=Y>vm>^{WFOPtxme zRj!43`F;MTa(`WXrQF|dHyV7K!S^Wl$2|%DDCVp5^{D>r+lLMQq`_Y{_&WywM!Dq6 z_f1;;Z?^yc-@!;xE_JJg*JV?{HTX}rj>;OmCio%5w+Cmw2f%rK{_d=?$8Dh8`FHPAJneD! z_lyeN5b3ag${4(ca=$+xQZDu3ai=-rYh&N&0M6srQ_95^_p2A7&+7?u4V^Ec!@SlQ z{6~ZDGx!;U$7PFM&)fztX7F+b|4F%D|6SnC0}HMXvt*C$r?_%oC*Fv^6YP)G9Rd0HNDo~IR6F8$2&w0OkxJgtIq8HLBe=7?wi zcZ5FI%hS+d|Gx&#^PJVt=Q`Sgc=rEpgQpuh7r{C2xBMrnC&#U8@TUykU%9B!=WuY& z`!?us9`}HA9@CZk^LPsJoX3mG{dvrHW0nWXPwJF4bgFrgs(SRaY!=O3CVmq(e`Jmvm8ehtofJZI=+&J&L7>oid=kFq|`BA$Kz0yyh4 z1f2DGO}Ss6amr;})@L!|S)W~qXMGMC{EWe0%^TLi&v&kJzaN%@GvC$V%y+YLKi{8~ z`}tvfSMGee zI=td>=l^?;yK(d099#c>gZD9bnL?2cKksxy;gHKckJtH?`|GPT;`w>P+R9zNu0P)@ z5{=9He5l;T*V2BzqFkQEd8tw~w$DDw#pfSEh?~b(5MKv<`=)Xkw*}%SBcA)}Eb#lG z^P6%Rm-T$0Smbjd^d}g6t#V(dWbxQK$>6NdIOUR8JG@?dAG{^})F=_^%ea%lla%2LkvFF;8P7g&*0xF7e9}nANDKv>wf~A z_0L%{cD^;hX9OXxpMO#=tLJomS* z%Kg0hAfEF$5c-_Q(a_;MehwY_+you^`~~s!nGSu{|19F^^AhywGyCmf-Q=D=3oDnp z$zuun{>y{P{r;Z{&hzKl;8Ox2*FROuhvSM4^SV#DjLYkC^_BZR+k+bf-rJme}yC9yg$9pOl zKkT0ohR)m2;q|D=hEA1=VZMH!^fUNmqGZ_|AUDCHh7ZjtMZj%kK5Pa zZz`8(@qMnDM*Lau;~4jEaK0Wdct_-ie2H>-l=<#Ac=kI(9ajhUz55c%_4K2eCLI{Jb5N62=EwQmJgF*Pe=RUtP{rtA){e0#&eeb#FInR0C z``&xs?k(PLCq#S-Ip1I2A?G|KUz zI6rU+-1^CXKl%oV_rD)~C&lyMkIve0biTaq^WeH(_mlH_b&~UXy+Qf8|5J-c$9<6I zTN&{g5wDN<)e&!rcw59fBHkVGzKDMl@r@^q-G@CRJ}u(a5wDB*tcc$Tw{_>o!CT?B zA6`MvyY8es{CK_kPNVaBoYr?d`4{9f;5P0M`HK|K`^md-zhC(0*|*#|jH~tU0JnI4 zK2rv_Tk+%0p(P=YUGlh%5nq0n5byQ)`x_63Ydz;vJlE3z*LtSxI(9urMEv}S&xdQD zpC#vYe+h2$;^#kaQ+{6eT_=zBfuASrNzTs`4u)Gj{5)Yg#q;xovWxBUD(=NQWK2g*}N z&h=j%@lPqgRaT7mQ>FG8t&<KQ1hY#1BXOq%zA8 zUK8-+*ToUPi~IwsXE8bd-OqV@hWs{PetvZyIX{nD6!GKs3VHnafYSo0d2q|m{VCsj z?0Fqa&Yv^7h5Qbh*MsC7|1Y@L|)ew{lE zw_EY?;hJBM&WrEAOUe28wte~7Y*9z{u$hn@k$UCXe|0L(*z`+NNUH>uU{5+xYW-1^4P zqi&--eB79NaHv!B91YhzC&BGjoacOU?!(rHjP`*aUn=32-y(+aICVC~^W)TfxYfzO zm+Y_Pyk9*V@of(so$u$#fBm??4-{a{_BW8 z7x8gNjGbpqxb>NjC;4z&M?SulQXW2@98S*lmmE3vxQ9giCAi+d-h%7>tDo}l{p&Mw zKK?9UId(mj5x+3v_ecDFxc2i4xYb`qk5gZhZ$$nx<>z^AdUU8?^KS*$_1Xn)x8n7x zB<_p6{Cesr^4lrTiEvvl?&oRbye=1z^SWG0&V6WtTeZ9{_mK0tJW9@ec$4zm zM+v?ES?&uV-eHvdz`iuugC9? z+7WKChtT_5DkZ)H=kxCuuSEVnxYfhw`L{eF)M=L=Bp2S#J>XvF1U!E@2yS_5sGb`s z&k^M5>X2Xi@GH1o`w5MEIC(YY=_UUy`IO&={9b1_>O2f?*FHu0vrY{0cFFr&Uc_ro z3h}!CoJDRA9p1OCPaci8|K;I4*uik^f3?K>&spjyKA-0MD%^74LE|nsC5&sAJg=^Z z_eOjm;!7f)b?VsTt{L$O5igGTl!zZ3@rxq9FyjA?c>avB=e2vpPmK805uX?F1>|M4 z?uVQJoj(iBW`wPFW{EYJ4nM}p+FTXuK%**opL_Py< zdG;W`0B*P9JXe$R^Z8ctFDTEtXIO^+{oLrGaJ!c8U)R9>IODIU?xA=-&Sck)=I7T_ zYm)Qh{?if9J##bD1?=Y9^rZ9n1XKVOjZ^PJQCV7CKrzFQ{Z+jKcBpb;(5Qi zyguadK6m5!*b;K?=L#2%j?4XD18&!HpL@xcFFyJo}BZ%3%CAoKmS9{ z{apQ$(fpiee8jgUe>}OV-;eeq=i}{P$vJ;l#J?iv^;)hW)M@kjn#NrlZrAdDy9+sw zJ2m2U5x-h`Z>bafjc@S><4?hk*MS1w~Yca)V=3qBWww*7v@51X!-ro*@>$r!* z?N+?MJxuZcpgKD!KmS~*i}G-te<$aDzC-zWfBS-*_qTDEg?ZT}=P7~Py!d!{R3!ck za$c7?l!w>lHn^_KU6kie>Q5&**ZE<@hsgPUk$w5-eEEK{`m9ms{2NBRFyfOUz9-!J z$?IMYw?6Q?A4z$*508^`or@yA&lO=_x{i0l?OM+B06DMY2<72*T>i?CU)M1gZr5`C z#pFEho)O=loY(Pqa$d*V$vOXGa-P=^-1@`EvE{A`^RmmXkl7K4uIROcwP%A&rouu@8{2xw~)V0 z`T6H=A5(r_-wl5k>aC5|Z63|vNp+q?&g1SpJH%W5TPS`W z`RC+MMf{{2LLR%kgW_jL{7JaY*KXslv)-Wirzp>XH(J#Ho=?6f;#QW8_pbvY{u$ispAc@I+RmDiY}&Uc;C3zF zAKxP9_mAaTvyx5YwH6mUb@oj7}=mX~|iTFMd|0&|D+MQ~Q{P__-BjP#s zVt$M~>qq>|h~F3St>=xMe|Pdnk`RCVUGDC&<1dHX{?EsUIdIz_`1o)a<*{AW^LLQ* zy1Y(#_;L9MxQ%POnCDsRp3yq___hZ*&+GDtzfI2dd=T+3BEG?&M(g1`^dL&UG2KlZrq{yDg=*AQISD|PQ^9$v3w$+?~z;C>t!!Ot1T{UzivKPvgJ zuh${u{Bzi2$d9D>FX5Jr$6dZH$#bn=hX(+dY&fdzP(A#_lvJ6Kd(#HeWB0RPhOXNxLw?@*psCyzS!;o`DU|0~76e!!^nxOX2o z>Z{Pt2QN5k)H#0r<3@c=ihua{QRny{Pa1VTu6|H6wy$yWsINu&d&xP^7vwzdqi2og z;d#Ar-l%U#`J2uk^>xYrO}-KN4;PNc^SIgdWBaYwkL}+^yngoB@l$KV9mDo3`&(GP zU#*|{&E8@E{0({MRJ+Ih@AKaMvXeKvjNutfF6>tJ@Ad2;HlA(n)o^@S<~0D^?Uwlr zINnyW%xmF!A^kG1gXfFSgcpd{!_(po@Co9x;DzFi@QLD0@FMYMc(M2#c!~I2c&T^` zyiB|mK1F;Uyj*-fe5!aGyh6MkK23Z9e7g8Tc%^s;yh^+iUM=1QuMuAapCR52uNCis z*NOMSXNoU|<8Hcaf9r!cNPIthmiPd?QG5{IBt8Uh79WPs5nlqIE4~!oB0d6d6;G`k zV4ipue7<-#yiGg@-Y%XCUm%_bUnrgr?+`D5cZ#RsUE&kqi^L1z-QpABJ>o_1Uh!i1 zV(}7qpLi*}U%U)HAU*{?C|(X95}yhm7O#LW5uXNMDn1=PBEHQk06g#V<9rq3v&5_6 z+2XImbHr!BbH!`ndE#~OeDRs^0`YoyT6|N?Yl8U3@IvuM)&$8oo54=v|d*L(17sLJiu)d%7!5bvLA3jTb0NyB`k9BMke+b?zz7Kqk_!8uw zD_(;57V-Pxt>X8>=ZQ~*&lk^zw~6P#+r^9E3&iu_3&p)Z9pVLu?-cj^UE-yPUnE`# z?-uv?M*JRGU-#zS!*Q=kd>Xu2d^&uNcnf^4con=wyc*srUIU*eJ_9~qycXUj-V1LR zUj$zuUJqX=-T?0qUjXkEZ-jS=H^CQ)cfz~HyWl1oeDRTM!o1qVhvDtwvyf+jcq4qFxaaQ>Z$^Bl_#Akb_)^rfNZj*xi>Iy) z^Xd_why1xbj6AOCydS>lV~+2Vch9Pxg5uJ{zJW1e_9JYPJ&DXe3G_%QOP#aBc81o6wTKNO1B z!zYT@!i&VSP-n4tHoQdK^OuU}BEC#K4?aaaA6_nA51%UDfch)MCm?>Bcq4qecsue` ziu-Y|O5Bfo)#4qd+h;_aw^fw&*{ z7K;0EuS49Ad!6Eb-0Kqeg%iu%ev*5$x!>E6W`1y!mDt-!lM7$cF+TfSR|3>WpS>k@&%NFvBqWFc);W$tvzGQarV)3Q$67dmusd(y! zkf%&M3qD0W8(uD+1D`6M3$GB*gHIFx_IIJ4>EZ>5uM|(itHhT_->St65nm%d5k5n_ z2wp2*46hR}fzK2#h1ZLh!5hS@u!dt|v;H~1- z@Ok1j@cH61;BDduVIAAW2jC0DXClu+@p^cNcmupsd=|V*yb-=gyb0bdehlt+J>qi^ z-zz>BzF52k-Y4D)?-!p39}u4p9~5tc4~e(Khs77bmxwQfFBR{AkBE1|Qyc#B_}>N3 z5?=(*7Vn1Vi1)yA#e3m-;`hVz#rxm|;(vmt#s2`GAU+-YL!tO(3&U}5qIey=Nc=>2 zvG{a&iTHl-Qt?uFnRxo*@V<&E;@uYoFBd=Y+~8Bi4~JKXm&2!t=bRVvOc(zV@s;9V zz^laHhgXaDz}F1BTjqVs{QgOVXMQeInKk;pl+6*J&@bMvH93-JAGodR(Uj*PxaK*M z+}_gY?}vEwE`p`H!La0l4N*h0{;}Gv8I;*t`k(ic-$LxKdF;O}cwgOgisw8hlD|&*Poq3G_6X`ZhvMI$_=ZUQjTGNY z@eh!5{jZTPqIi2xrfpWso8+Is?Tg*heLwfVKd-)AI2>g5hqoxt%5aOXB3~13oiE*D~XtLh(0I{G;S}`)#Jr{Jz$g5O4KcJ^u65S1HfClxHb9uUAg;UPRmM z>OP9!f}G>+Z&%r7@$B}Q5!=+yi1iI+f~~O?mkJw6{>a-NyIZg%r&S}9MY8>u;@_ijSHblb`%m({$=@fR2De(co--molk)Uao@R=-ea!c(TgVem zHLaCgB->-;r&0X-l%L-(z2-{cc9x@);DM&-MQ2Aiuw_*4^uTS@Qe1 zZ%6X~Q{wZG{|j-i^J{U>KMwC>(sj&+dz}TyzoEE~yQ#R(*WbVCdA!e)BIEk|G(CO- z#+@qpeSer9$#bm4Peh(G#C=}pihKUcBKfbD_+sS0MSLEPC#~Y%e}CVf-JI`74@rC} z@;@)`^}izS_5TB|`Tc!!-sdUEKP-7X|F`14zALPfx!YtO>nw$jy9!*#T~p$xV%+iK zZRnf7U(DkpDn&@8@sCeZD7%`@Cx4I=QrzpABkuLw zChqmL!nK}1NqjZx`J1@+^GR{vZ(oY!e@)_NApd~4Kkocn-23pIxX-n9y*E0vM_1q@$O{nKD;tOy;eNcSaeih08oW##T{>9>c|9xNF?=PQ=dmomF z`+UEH>wHr=zdVk$pq^ZD@8^2rUgzfGUgtz{uX9Inud@WMb?zbY^HAqO;=Z38Chm1s zi+i1?ihG@BiF=*r!L`ndCB6-HUN7$V)8C8x@&ArU{`nHW0QnymuZKS)J_Ft(?(6%u zxX-r_Za3%S#zzw0f&5>I`|;;{aqq*5^!ZlKzZ%?+dtJz%7WZ}EQrzb|N!;gKD(>^$ z6Rz_um-uefGhN*Kf2_FId78NIZ*}5c|ApdSX9Ha8yh`GGQRmI#p8s}n?@ya}De^od z?)5(=?sYx|*E*k<_&(%+OWf;xPu%Th^LDt_dAG)6+=s>c@OrsJ-0OKsdegKM1w5}$?hYfHpSG42oI zUgyd<-|zdI@3*<)Ugvt^US|PZ>)cY}{e0*N6wl|u{zz{7zMq%tlsx|Vp8<;J^Mp&t z|3!J$$(83J_&Lqy;{JK03*a`dk15a16mPxr^P&$?Jf9c+ko*P8^CRW4G3tH2asJ!a zB?r#~R~4Uw$GLp*UYxfo6wkwcQX)PNb?hOYhv#!s#TVfFL&d$GW5vCmv&9Qg&*kDi z?ls~IQ0L9+`2KcrujgKIujeUo`<()|y(;egc}v{u{7Ae2-+w0V^?W1l^{j$*_I00# zdNvUEamR~$f3_9(dM1f`J$s6KJ%@=Gqn;DRTd?1rEj|U`Um)(|UMlY6-Xva%aqkiL zaUT+&itis2_i>*V_i^76pMr5e7N3Cq@N;qBPreuT+*)U*ZHov_u(UP@8^%=m6+FRdEt2D`-8{liTnOGUflao zC_WAIDi-(OcQ;ww=k;rGpI4=LHR_)s?sc9m?sYbZ`+Tnw_jSBUybtU62XX(si1WmK zUXO_Tyn4iEU|#*=UjHZJUgr{Z)cJ#WH`Zk({C*@~cmKVAtBZU6>xz5*8;g5COT_Ci zuX1reE*&K9^Q{#3`JSMT`JN%}^_(j{fcT5m@x1Ly@dfbf#Fyat&m3{@+d}br^kI>> z_u)nzKNpD)q5fIo1HSI!-v0&SP3Uu%_ypvCS={%x z#p2%Q_r<+${}%VYeJMVKf-nX~J z`_P9E#fOmRQ*rOZ*W%uXRp@h$w(j#V-wnhIu%C<5e z`-=A={$TOR$bXV}8|pt#yc_Wsi|4_w7592>7WaDoD83Eq`AJ6GKMf48{z{}J(S%1xQ{pZgsS>FawCx6b!d;wm+KPP#*a6IJC2U&avj{k2+yg$D1 z=Xx^Z;&{lP$1xv5J^VQuu4gse@BR5|Jzm%I=U*(o3-xR$@m^1%xIfha^%U&LE* ze|b>c?=O#v`~KM}?)%{@;(mYmr+60LxB7)T`uVlE-(Qw1NG6kP%k~F6Psk=uC)fM^ zWesxcgV(v9xZht2#dA<+iTD!SFMchah3B6Kiu<~sAfAW(XN&v#o=c*P*dp%hdzZNPtzF#L_i6D0%$@s`&$I786Hw=d>UjQKD82;sZztY{XKz7#J-oy%>U z>>SDF>+A6=i+kVJ6|cnlZY17^zHKG$b?zoU1@#;t?)6L)_j-;K_j+o?dr?oFI?lH@ zicdv7bH#nV{wVJCw27CZKM#q|!SV1ZaqrIy;@*coasPb9khs_Ro%j^gliK8$>+XN2 zdnIwNCr{k#nIK+?z7>mmJ$s7#&ne5r{r+;0xYtuD?)A(NuSPxf;$F|?;=Yc};tTM6 z?`H7<_+8?D9^+o|1z7h-#J&C}#QTuHTRacz_=flt9ES(Qy>CB@&p?0HNdIzw@cyhT zJ^}eR6ZgJtEuMoqcM>1Mymk}!I`yE?x}3Mtmabze(Kd zyj|Sud_ue)b-p6*eeM_h@mS?`h&qsOKW_UOW!Y60gJkYqt12tnXZLzhBQ2pMZJ&MSKMP ze@NWxe_Y(x_Ze~T!%OOz*Qerh(1-8Dd-1#?wdpU{(bsD=aqnB6csIsPi_btGwiGYG zxI2jZyml4${!9~Z!Mv))=U~0g6z|3Q&J@o+BSt zfcjq$A3#6f5bwtQ^c``p|6_5l{|E6l)W7OxzuX`E_0gK-=_JHoA8kU;uaCA6pN0B= zCGM|(i^cu*$YgPUeN-;)uaAxpUx0a?EItj-lWWEEu%BEc?)6+wZhi3AN7s<^>!TaQ z{q@mZ;vJ~-A@Ks-zdF@X{|n+%5dU{^um4@~iHQF&;-86ci1^fmWb(G>p5wxX)`Bai3RN#LLBfUdM=cV_v6=`@HJNd0v;2 zXC?ERfO$2FS7Tnk6Zd)DEbjBVJ>vI>`@A~DdoizWai7=gqBv$*C091>uYkGS25-_B3_DlEx$z)lx)8L_`FsX_j#=q@eRa%UPagnAmpI}QxqM0xI} zc|A$azo+G&aI2qxZ_>Xh|LK(HYs$mFH)E5n!uXb_h2pn^TkU6%?*dQg7r!U!h)DeL z6mOr+@_wF0@ivCPFa1jLT8eL`Jp6l67ErwXt`*PUNp7|J-^u8wJiK0?Q2bex=RXwB zMB6+{X34w^2r3NAXk1E#Cj$#%bi|Q2hDi7Vm#=<5u!>DgGXEi}&9T z^8)#K6#oXf#rKX&E|P5t`AmvWZ4<7yK3IGo;>VMpPw~GZxA+0XA4q-y#UDv-@k5Be zko-c5zlz-Ammq#VxqU{*_mc(W7C(acH_0!e_z%b}e%bHInwWf(Y}SX1DSmZwi}&B3 zwH^5-6hE2V;`1zFvP~y%p!jNXi!VU@rR0}V{B`6OKLPQ7hMV#I;%^jhp?*Jo4sN@} zEtLQ76rahzUJ{UO?}-<{hs5*XKZxhRSNT=QXSG;t9@K?lr9s9)RApYOtP4Mr< zXTewA_Lu8Y56>5`gKsH51HO}ZHGCiOO87MKY48)or^3$?p8~&BycFInUJU;OT=)Nb zBz_{|9~Peg?-DP7zagFn|4=*!{$KGdcxt;}uFDAC@4JTh68OgAL-1dT55P;s{r$)L zi}xb_Nbzp?$>Lq`nc^MrtHc+;ZxU~V-z`25{wCaxCEwC<>|=8Ny=~u7o)40PkUx&B zTNL_idHDC;ZB1^!d(Go_CVzzdB=YabFDB>D8{P%C;~^iPAES6ap1%-@AB@C*AMuIX zkIwgds&hBE)p8m6J{120`E>Fx$m__t{!7VQDgIV+j(-4d^(5h`iFh1&jQn!S^AzRb z=X-xA=k@v!ZpVQU%JUh;KTG~CxqXJ%_lKY0R_848<#$LR*%C@|J?p|P{tAlUnBw{M z!mi}ppZ(xg|BsaCaPptXkAd5`SCXGd`T6zH734hb9P*zj&ux@H;Z!x&>p_a=JdZ}= zpM%@Hxc+X6zlz4~rTkp~Clt^1d`sR)c~Uzj116h}y9(TL@awO1Bz_{?`g}Fz-zk!3 z4~pkHD_~*^vCr`>u`RA#=p**~Q{wVQZ;XK9)#mSA6&2sR# z>%eVX&c89a)l+E!$+k7Q#rt`Zoy5J)J;*JOAAb%aw>)`xd^{4ab)FdUizQF}8dha0 zbvecJasKz@d>puwocnV>T<>2G!>ujXCB^!@o}fIuKmUWA*K3~x#ZuRham~SZ$-`{^GUykyxv(xCf{J5|YImb_iTRoZeT0PvpjNGo9h(E-70OjHQ z$C3Y$=5>bTX<0YqzmD9-ov>Q)8z|4oG_PCW)}JBDf4Agm!G3aIB+t_l@8fny;=h!5 z&;LES^(P18=Iy5UzMP!%A5Lz${O5)zMEq28UdOrQmdERSRNV7F z3Afl&XkEI=Ur(;|`^!hMaT zQ{PDUEh;J!A z1$AyK?se`6*E;u-cpvvLa;vix=j)Fqw_Lrb^UR3P6!*VFeTlf&ISa0J-YD@t?w`mr z>%MvD@BQSKs}FTP6Y&?tE78v$b=>dXglnAx67SRWQa$9EKHv}OyiIQTOVPJ~l3RSodEt)wnRw;G z;NOV1;13P`DBjT<3R-RV@YQnLzsfhm_j%-2kJrCBxy6@$ZI`K3k@(PF8BXm?ZvCvs z=TmkkxBS>0QiqC{qR&T)_l5MSQ^beh7mIs8uTV$+TOxj6#Ge+g$GD5cecZRji+z2` zt&>eS&@?2>-F%nf(g$U5z}mF3EFT+w#dRehT6@AO|Kfmu~lQPrM$J1Ge->xjfnfTdM=VWrLrwQ@< zi+i3!#J&C_$Zw$h$G|Q3sq}j1G`RJ12KluV{{iK>0q*%*1w^Ka#|IZX(OZ7ZV@z#f_ zcpQ9;+kRhq5_2=b1=ud5V#zRJ`Bgf%E>LyMC6$+-m!9WWwISj&UvcI zEzbnxsS}@udd?^3JPqWQrvQ0o!>x=bk}G__oh$JRkpF4%sdyZDL%aq4j(8nBfA3_# zWV2enq;U^`FPFIe>&D~XG;+I5AD(XZ|fZX!5os(Q7+jZoY$3G|ddvc5S^UROI zE%rgG^J$8=>$>oI`9*Th^I0U%e<|MbbYoqXMm%Rq5|nHf%k``aw=wOXpKnY@eEW#+ z74iKdK3#m`@yX!Hb}ZbEll*?O(jXX0he(o?p&UyYV?yq0+_Q{m{KkK+5+;UrgxtpV_kAt@>*SkcvmET}!L`n`#Cx5) zh!3okNt@c6oa?M2=Q?MQ+t_V54xb(ItKeGa^%6g{QmE%Paj$;?IoJ6bIoJ6fxsC1b ziyMgeQn=PRt~}J`{VxdLrdASfK_7D9mgmeBM(;0cOT6dFkHl{x@e?ragh>205#gB=UGeK>zM@CdiJDv%jJ)E`$zofh@T$udU1cenHp}r;a^bHdHh|lh+|OMpp7)16 zDW2<@Chqn8R@|S@oKN|=o>>&n^|Vqv*K=G!WmaJ#wPW&-w;Qt=L~`xMHV~qHp8Hy>GuFx4spiZ^h)?x5?u3(6_VT+PCv1-v8c2gShwY z&yhU$lXKsmmOS3KMdIGK9?HXgdtc(K(YKGqy>DNVTi-?|XO=1T9XaZ_neuSo?vZ#qcW>K$;@-DM$*pgF z=vyZ__w5DoIq2I@aP8X)2Ziyy&&B9lj=1-25?u4_O3r;dK=RB&{%PXgw@S*xeLGd+ z>(IBe#Jz79lUv_9(6=kdxo=JC=-Uf$o$uczeqK)KP{%&x*0&b)Z7MnU?NIS1^z9nB_HDMrFG1htihJLl zj^ufsocs0<$+KjQFt2`b@7o~d;l6z<@w3pkpTvECTjk&|j;)vVtsZ?_lbrjOFFp%> zI~1;cJ5u6@(6{5ny>E??JlBzP-&!S)_w7&O-nR!R5BKd!iEl#Ro)h=Jy+&?*t3=-x zlXKtR7q3U();%QjU;DNZ+}6de8$jPChV*SA?|&vqdeTV%O!pe z`gV=D_w6Qf>su-M_6KtA+dT0)^zD7P_U&VdUx2=SF7AEHJ9O;+uTRc>n+W%H@yF90 z#l3HnDG&E;KZ$Qa-wqb{z8y_&eJeoUs>!);r;4|sZ+F7AZ-18fc{pyji+kVx5y|sU za_-xICC?13%TjUgTM8$dtWNIR8gTFbJoIf{aqruvxC^CyXK!@TYn_jx@=Zu9EHyq+fKc`Xv3ig|rX&gXl-CbvBPIgt@@ zpVwx;8T)>;HQd*00p_*6xX)`ha+_BN<~4~KbEtuB}asS-GFkI{ZR^oe6|4-sx|0;)vKG}L%{iUdXO>(Y3Uwj(sFB13te`j&8 z{}{N||67UgL;W+vz5bcxR(}ENzl5CYzf!yj_1`Y;{l8n>KTpvO*ZSX(_yN@aj=0zV zF}c-0g3rTzPR{i&5ubzlbEc23qs4pw*B1BscZF;Hdyw>-lJUw<7T?vJy_Q67Gr zt(Ev8^yfTr@6YAr)}KD~=NfYE&usBJ^k)%V=liO}ci{QMTjG7m*tY!~$&+T+hbh-nT6%5BF`7#4kbLO2xfz<>c14j$J~12a$8%4im3O-)6(LZ*wKS z3w`^excBY(NS>F;xo`iJJbs?!U*g`k&nXZ0ZA9Wn(6{A}4E^wR@xHA=ZhdRnCB&^u z&VAcRd=~mP4X%AVO5(fGx8udVZ`Vfh+#vB;D~3965%+oBO>Xn5$GqCed0r2RS7Tl; zi~Di%b#br%JGk~Cb<{8WpM&~W68HMoCb#-4QU3p4=)W3_kA1BMiz5bKnTL0-1 zKhXk`?QC+}x7yCnaOz5O3!SiD@arOe2VBRUFY(0~_daqSx0BpL3oz~r5q}r1<9;ad zQ!wr)8WO#Gi%hxGzb({fn{`YwShAT}Xg9`PHR7AVb=)l^z60ZKL(b#wPHv%H7v<_$zQ7w^!o(Fz!Fd zdE6m#3vI)=UqyVSW0Rm{({WdaTW-5<0OPJr&f{)DZlUuq?yn-gCtSxZm-rO3cv*)Atvm)@uSJ94YP9`)Z8@q6Lgx4%k!FY13x-HJ-K#Z{Rv%lhNb z4?iU5`hO0Jo6ZGuKz-EuKy}>t7!)6 zzdqu3!nOWCOZ)&{cRVQW_4kPT^VN6Ax&Cj-x&Gyk|7HKHQU59t-x#j-Zz=I!XPNi_ z)@7==Kkq$^e7U4F|D3|vc2ALx5BmlyCmN0?+{;t`WK0hVBFWqm!tas zL(cX8KyEcnL!RYMNWMun%fY@bT|H!%i6Ue##Gsv@&x=NAf+=yQTw^;u9(QJty!hU|cxXy`EZ4s}-1|R*`ZpB!`gc;txMk#A|Iy@J|Hhs3)v?i1u(|2yPd|HtH3(*)%CJmTX{OoEb4>(7RJ{|m66 z=ZSm$+lhB!++E1I{=>+*{^QB5rUK+SIpP<=wfnAjT>nwzR@2BjVZ7rbelA?=zewWq{P-j8_0JP;LH+lWbNw%qbNz3VTTM$) z|34%CC0y(OPU5?8{9o?mvHPDEpM(0hCg=KpP0sZnN^Ug`q5dNyemY$1KS$!T(Em%t zz5gxZO{o7Ka<2bba<2bXa;s?o^}iMI&){1BeB zo^$Fi_rqT7KWj&POStYo+e&=iiXrbLasRpG?&S7!$x{4WavyRV!#`IwRXhvthpdkH zsp3BF*>KCvKkvSQoS#?UB6$ihuU2u--$ripD!{xRBIkKMCO&VK(6`sc{pZF15cl7! znVJ!9r|Ys3+>Rx7-2~LXy13WB0lC#bQWElxC+GSL#oJJSnYjPF_}AiI|LJh8|7>!8 zpTm`sCkx|VC+_ca_&w#}b)P5k6Vac)hZ-2nI`UitE4>Kw^Jp)7=1fS-1~Mhx%I6BeY=93 z`_?4hi@rSz*S@_Z@h#}vYvSIw?<0ABCg;Abb$VC_UzZ8k-_{rRzKw@lo!qw~i7!Rp zb{6-(?M-fdYeC=kBj>&yEMB~FsJjWSeY;WO+weJ;TgAO^Pe<}BlK3f@*Q??_uXo99 zUiFyQhvYo3PsN9@Ka4x$m+R7pbfc{HZ?#b0A>v;D`EaejLE@`X z|5f5%|Bd8U|H#f^+*`@H{yW6;Q2(RiQ&4}WxYz#)TS`lBXK^Ul#Yiy+L`nZy!p09s2gExcBXAa_d_M`Zhw&eOvylU#{as>{q+PwQu`K z{Lt#*_EXhu$4IubBY7^6_3Ht`9V*F)k{Q2%4%zV08u zwGSVY^SXa0dHnv8Iy=n6+G4qU-Lv6lyzc8s{4DfmV{u>it;wxF_2|#`#Kd+1MchIhU4@9iF@Bpi{v?rocnf#eO-@3$?V1N4ou6CZQ9`0L>#J8YtXNY^>E+n_U6`*gIk#pa!7SF-{)& z$@3FA_ifE{f4MGsSeJZp?^_yfb#mXfllXb)+fL%%x4p=%ZzDT}I`$>!zEy~iV12KG zYu~Py_#E`@_u}5SCnI^DCFj1qC3*bsV!S8reft;X;l3@A_%`(I2XXJ)O6QHPm-Vf0 zr||vimG8R*L~vi zFt6vt{XAQ@xYz#`T>J37#CM?naWhBzZ@2OKS0lIjTTp)51`!`G?&EF+*Ljtb^Slm{ zJiVCLVd9?uSaO?JDdu$|InV1f@oLQLiikIf`?z!9Irg061mN* z0P}i{oaePzyb|*oj`+9YKJL$Oo!7<}g#F!|=e0T9_mct4YofU4pG0o+8krRGmXh`7CFyreeqJvYx{_oi2Jx@aGlq&=&p5(924fDKM+{e9=^6+u^K5`!SamvF#*M5(j9~XuqzIOd+|2fa55#KlB(<6Rq z#QzZSwunC)@xh2MiTL^#jXmE<5kENMr$xLz;x|ToVZ^&4{%OQlxOnV&jgR4?7<@u7$>-!S%k3nN|} z@gpLBPQ+(N{Jw~HMEs42e@4#7t8tg6GMhavu;)j7yNLf^#E*`6UBs`Acsn^CKRY7+ zLBxNI`1+TP_JQ+Hiuja>9~JS2h&M(2uMvMG;-8T7I(`%JjV>RZFUL=e_@U(7pVK0K zRmAUz_~Q|OGvfb=_{y_J=f!ny7V+I8et5*sjQF(?zdPbjMf@KT|0?3ET`~52w~Y9n z5kD&8=S2K>5x+g+&yn-~)*JC3BEHI%qx0oFJCgId9~ALpB7RQ9Z;kjp5q~-2pG185 zt48O=^=}gKZ6m%<#7~L%xe>oD;(v;Gcf=P*{Ktr|+&Fe0wvG6%5kEHKr$)Rv;%yOM z6!C$Ge--gnt{!{7+eLhG#H%7cBjU3oeqY32jQGDIz9izSUNiQ5iy~ec@#7+XQN(YF z_`?zJiuk(`PhC6qymBJGeZ&ul_{kB!BI0u*{+EdNkn?f1FXH2xM(4}%t3`Z5#3x7m zkcgic@e3k;eZ=pKco#VzhhK?!KlyS=OIp?qeHo1Sf5@|v(4*E1@!yGGI4<~V*M+Z^ z`=;au{`VBtBDd>Ct`BkRlUx2uwudeLux_P@c0_80{y*Q`Yv4lYif? z5+om2nAcmQv8D0V7r~3f%Z>?9LT=;cBfeaGTX+R|rX2Wm@y??IRFQ9y z{C^ndnQO^y+{wr@licz*qyymLYgvE%{YY~u-truUJgwxGryu>yBuKvZzMY8pv;o}e z%-uQjZK{ym@}G_P3h@hlT=6U6^T{*y>=Ixhxs6+faXZOv+!t34^(-RK^uJ{J%oU5t zEl(@*^pjhjYf;Z2x#j8EFOw~`lswZ1-$BCF%lbAOd9umvzhybeMY5&IZQMU1zL1>b ztH^EKa*R8Z-0oiu_`Z?c{@aZA70nedS|_Da|8|Bnscc+t?Y58#ocH#8=D+Bh#1HQs68ShD@B3jR#ao_x(f@Ywr{I|b zRTAfUF2Oox<9OzE4i|@U^T}Xr>anINw$u?d5ygh=?CAU5-#eCbzEyXb2 z7ge-kxSiEw@%g)i?@P!nz8!ro6EB((;%mq=`{7E#7m{0^-03z_vY+C5@8>CqDv5h@VSt@wa0CX(!LbQ&dI;;aNa8E1Eh1SLa*KZ$ z@x$ac-=Z%pI@#}V|MUFYBQBrZ;u{cOLT>pVL;f;yi%$*PMY3OzTl_PKuOYYi_WxRR zD%D7C@vk7hncU)szq07$cH|cSI^q|STYT9Pi%x#u5xK>`i+F$D;p@_j_!Rad@6U&b z&nCD0Jzrb)WWMB<|3%y%YRE0Vp*^fu1G&XNf%rypi?6yr#J7@L{MU$|Pj2x=Z`);Z zzbCi&DOle{pTRoPi;qdT%A-NqN`tf}Yxy9$c9^z+;r;iBkxAXZf z>yO0OK4THdwtD#D@yq%{ZsVqI5AoB+KY#Bb zw>-74WzwYj$us>yd?CJCbs0zg67dH3O!CaU9?4v$`o)X>9>(>$EPsd$zEt8X{926T z@nx@s__TP?RH{V0498Wk*Ya4OSI7D_N_?mHhuq@VMf@PS)nA49)SAgR$>#ZeKglMy z__7@=B6&O~xBR}J6p~wfKkj!k$+t+n0?$vH$t`|(d~%U&`D=x*Hd>}m++XI3x1#U) zc)n)wmcIe{{dt_{8QwJHT}bhkKNtB+^1}5VUxfS%$t{07^7oKu>fbEfemY(sc%D`~ zZ(A&$i}jd}^DAC|Kl0a-TmIV3L;j`WMaVyMy>Pvc>-)`8a;rag*ASPR|I7GcyE574 zig)69aQ^z?de1+M`sb2ciZbMHC(qPh7;ay(!7uYvApb(~D(oL68;-_X{#xX(AkXxF zs}Q$XJv^OBO)nVDWAQ!6znI+i=S^{c878;*qHV(MYjMBy^=d^uGs!K!0^>G_H=Gjk z%qO?wRcAW*Lh&jqD%l3fEq{Am7+|S*KVC2R?W|5qF&Xo!K|Wu{hK}UQWNRe1|Na{B z&Ez(2*%KC>>?h*Q@OEKi9G$}mZ$Y8i%$9@ zJ`7K760Y|?_~U3cx#h`4J-OnkXTt3Z$!#eAJJ&_zmZt}KO2pH+UsaG>o(nLq>ExED z9eJw6TT#zUa?5iW@-&cJp4w-Vi)3pQ?}WFKTb|j-GoL&&ujevpQtjgD=YuaIw>)!^ zr-$6~RAF9=#fuh&Jj3Lc=T78VN^W_YktdZ7w;Pvy$<&EF`Q(CBg9dCFc6-*=K*o=x%ka1puX=`6C#@$de|wJpTHz zklgZ=tzwtS^JnsO@_hsHl#yE=e|}p|ZW+pkt>R>T$SvNV-`0>@d~0E-e<8WW58!^? zLvHc8ze+BWtzxtA)%)`k;-`~ad@7_*Rf!i>hTAui+w+GiJU^T(UN#}bFCw@6>BoaF z7OyxmxZlp}TpzEy%8}39@-#dY;w!{^;5FpdpN){GmfZ5R?;Y~Y6z_jHcr&@>*$emI zx#X6o2YFh>+aC#e7Lr?@ZBb7rd1hXJ3-OD@d*J=#mZunb2FWc?1?m|V?|(Gp&&IlW zpUaRZmpoGs^5m;O7V`M|dmi7q zet#IZL_GCCa9?Myr){O+jS}B*heg=&I9%`X`Pt$7`Q$ck?L@mwo~Mvook!zwY7x0b z7JU@r`^hcd?_Y!DAwJZT+A0Z3Hm}F;U)kgqKU^5{PbathccO2#7y_wwNs}Mhz+~RTAPPK}+ z9+g~~Y>UV<&mXo8zF52g$MbA_wW=+D#i^nGeDUEULLR@JMOhyn!T#JR@%?v(_-65< zyMoUrw>(cFPdmBQQ+9WVUnt%T?;*E5zCSD`w>-mphCKb^t$zx>l-%<8^Nd8g24U=1Z1B{n|BR)YRPSXYsLOHpWODJvh6Kgl{K)uFi`&IvrA@5xAGWa5L%U|1Sm&y3z z4LC0O?W|6lmp>krBcHitNZ*uPBwK}eExd-@@_dK>)RJfFIWhEerg-YEP-io_<@pJD z=8{`v`(DXKvbBmg%nj~+@_Ef#IryN&xBoYcyOcbggm!Kg;#0-ptLOQ0#qfPLxn)RK zg?Z(ZrxR~Ro;115>pA2pB)2?0`-eOw$@E!$VO-+;I7P;m5JLc6$ZW+=Cg?i?arxR~Qo>p?p^Xv-A zMY7E&w>%YDAs3x}c~Ur^Ih{P6a2fJcky{==-qw(3^56}X4dfQ@$J<77i?3+Q z+$z;cZt)Lb|6D|Fk?Dz{|NZ0^-YN zPbZwl`Q$2c%j4&_Ysf8+pWmKIp2=f3O11`aqh;sY$t};a^X=s6#H*0U-@ojA_VfSq zDcE!!P|9K6$ z<+&bt{QcKfXC}|lA+uLMY0a$mghr%ye79iWqXHt%_O%JWp-_IAzc9CqI-<9my%naWzS2=EssA>E+@A<{ycd) zx#jWa$$tLN=jG4aYbf6G`1AIe~%4@-2JR%j2)pr;}SAf1O@MZh8E?K@GX(@$&{V$t_RkX30geHIQ4L%kg@lk=*iBootuM z`vEeSqvyA)4h)blUhB_8$m{T0&>uVeS3I{Q4BSa>{ds-W0E@^iL)qE^dc+%0_#nCEc^7$x$vMwb zanF;Be%Kew^AYmolUts4)RPwPtPF`Uy-XV|kAH5oOyWIHxwz-4BDXyL`Oq42tEUL( zH)_Spjt=!Sl3Sk7F|TIwj_}kobA!3$=g|7LlUtr|k!K+}=jkNpJd4RKkADuKpWNnE zfqA9un`E=AEq=8e`!2b^kaIkKe7G!reZ=GKUm3UfTI8>wJeGe8#7`&Z_?hGuzXReM z$nC$)$lpqC@ui5LPtNg+$Sr;!#P^Wfe{0uIE|QHuFKOOzY=%?A6mNMBMIQdVBxPN|fu{vJA=c0dJzduj#&;Ppn=jAFTK853X zt+@YwgIVHLh@UU+$8&!yuyMD-K4xEfCB6*zyCHG^Tv-Ly+3Rm!EhMWJ_xB;s6z@TN zi+Cg>rCZ|t^EHFw{<)Pb>@S|jKW~y2_s@y=`4W%!&v#6hc>i2Rop{+= zp${G8)@M8|O7)W482+$C&X>tGj{tR*dJpc{j{`2%!a;x*SP=3lk zr|jeQuM@5)!SU6-b=}}o#e3j$#r^#%J>vekgKXSyJb!b3$X_U)!sFUhaew@+74Jv< z9P!!>LjG>?R6+1kJg@h9{PS*g;{N$!|Gcfocj7$r0*c=%Nqsbqv%}XdkYAM${>zuzSr#}Cir?>Cz$?(avc5cl^zG>H4>K>c$VmfzN^AM3T4;?2t} zAlY*9^Kg&%-=8p*+^+NAZ{Y7+G_!yH`z2Z=-hV%afBw|-?||d-2*q1HTjKtlkK?Gv zZ-?)j#b3q~ApiRk9^bS@k}TPJC4RRpgQsyjkG}`&UL$^)6_srM_unku{?+2=e*+Y6 zUWA_?_~$)6K3$SrnQVD$hOh2b@Dg!9A6+Tlyi2%!yLda!r*x59>Ca3I@r%iAY(HN! zqK@+jRd^imI*WD>d1jJZ{`T#HcZnBnAAFeHa`hljE?)0?{<1wn{9JO&KNC-QJHiTmfU=8F60s@lZck*8C<2i_|_ z3?CHt_r;Bf7wr}5&&A`R_pJgxLA(}TBHj$2D&7vS67PZ6i4VgY#r^%yE#gIchx*&a z{r&%4;th!R&jl}++}!@P!~O4jyZ69Tc>H%ChUbarP6_o?i4Viu#C!fP#OJOTzIy)t za^w;3+&_4ec9TYr;=P9122R=c)BE*-g9~`_%+<#wF z4xYbwe*ZlT6U6=f(xu|*=^_6#aX-&CL%bjH4dVWL8(PHueQOKF{e8B*;{N%aVR3&y zb`GAG`FwMa3iVGB_xB0ci~Hw~7KrBB%vRLa;Pt4jekA%7B3rCJaR#a=WcC zL$@_si9<=OVd^v^Hi1M;c<2KV9!gRPi3a!3hZ^^=hbB(LLm#SH%uG<1I3tOZc+UOK zzx4c5U%W}V_x$=l|L^SHb+mWi_f7aT@o=~B<>vh<)`Px19mH{eW`sEER&vZ^;$I@} z9u~gVyq`tf+!5h;p9_xqanyZ-qmNTS-`r6fxW8YQCE=qn>nxIO;>s6Hk39aSOyz2Rct2b)A0wAwg|ePwJYC+liwNca%8# za!e3M|BVuH^xvpoCvgxL{V{^X(I2CWIQm_T5l7#NtHjY?VwyPmOVmAKuc!Epj042c zN1~HB`a+-%3tv}pQhc(cN8g6)#LUW?=U%n#g(SL7_ zIQr~0oBIdwK|j4w;`zU1ebdCtH-*J@6wh!{Mvcwa6 z&2@Rk)}ya%Cvo?H=#f{3^NhSE+%E*rcZ(i*S>Wh9+SFplO_=(uF5<}JDiBBAYwNSN zPuL`+B&xXnFS^lu-<+-DdQFbW5BEK1`{du2^}EDTFIgs@PKmyEi|vE@;wj=Olb_iX zA-(DAc#b&oSL>g*^^pq_w~ILPOAEx)S<&OZAg&Agg|2%48m^!R1anw%*ciVd8Rc48!J}bD#)}yW}OC0rL!46xGdV~q$>5t_6w7hKVbEkw) z5Ko^L-mur!yJv;>5=TAnG;!3=Hte%~au>y?i#YPe3&c?`*4khovBp&%w z^bH4WpY($8X5!(0gcpdTehv4zwMswyk1Y0#$6mAjQJ07N+!ej4e@wh?>pL37Cr{jI z7CuirXL$1)wh!unaQ_=|-7VrXLweL7wRhP*zU`tvN4&U4_zmLdyWV`z_KBE;tTE!K z=b9sqzM#Et+CJga689=`)CH_OWa|?bMBhg|l{G%Z{a1xMuI-cmT6jBg)U}m~qhHgd zsO=M8R_B5GZkwZz{V4I`I?+!PPnf#1mLA*3jf#GpIO^TztGIq&cig2s+4|fm89Slj{qD0Rz%FWvO9Q}cUU$*KbNbKjdA#1d(e1C>486SMTI+WX%lfa+h*GcjZuLNXtpAu|IzC^&$YqJ2 zq4oQfwt7pbL9O`LcirpB@cCZH(}d%HqFAl?{N*1@e4J;!*Wbzzk05E!@9w4ssruG^C!)GUkpmw^ZY*)u66yw=K7(}oj#8bst4xdyw-}X zBVFGouV~*%J#xG>)z4HQp08h%^eyh`XMd3S%Rlsnm4EpBE&Gr8V^`$+ZxKzPq4O_P CM|rOR literal 740008 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