-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
bugSomething isn't workingSomething isn't working
Description
If you call PGNFile.open() on a PGN file with that contains more than 3 games and then iterate through using next_game(), the code will silently error on the fourth call to next_game(). Example PGN file and code below:
[Event "Let's Play!"]
[Site "Chess.com"]
[Date "2024.09.13"]
[Round "-"]
[White "Player1"]
[Black "Player2"]
[Result "1-0"]
[CurrentPosition "6R1/7R/8/8/3BpP1k/1P2K2p/P4P1P/8 b - - 7 46"]
[Timezone "UTC"]
[ECO "A04"]
[ECOUrl "https://www.chess.com/openings/Reti-Opening-Kingside-Fianchetto-Variation"]
[UTCDate "2024.09.13"]
[UTCTime "19:32:05"]
[WhiteElo "400"]
[BlackElo "400"]
[TimeControl "1/86400"]
[Termination "Player1 won by checkmate"]
[StartTime "19:32:05"]
[EndDate "2024.09.14"]
[EndTime "16:16:11"]
[Link "https://www.chess.com/game/daily/702586659"]
1. Nf3 {[%clk 0:00:03.4]} 1... g6 {[%clk 0:00:03.6]} 2. e3 {[%clk 0:00:21.9]} 2... a5 {[%clk 0:01:09.3]} 3. Bc4 {[%clk 1:04:01.1]} 3... e6 {[%clk 0:19:58.4]} 4. Ng5 {[%clk 0:00:42]} 4... h6 {[%clk 0:01:20.8]} 5. Ne4 {[%clk 0:00:20.5]} 5... Bg7 {[%clk 0:00:05.1]} 6. Nbc3 {[%clk 0:00:03.3]} 6... Nc6 {[%clk 0:00:01.6]} 7. Qf3 {[%clk 0:00:14.1]} 7... d5 {[%clk 0:01:22.4]} 8. Bb5 {[%clk 0:01:45.2]} 8... f5 {[%clk 0:00:03.4]} 9. Nc5 {[%clk 0:00:03.1]} 9... Ne7 {[%clk 0:02:24.2]} 10. g4 {[%clk 0:00:08.7]} 10... h5 {[%clk 0:00:57.8]} 11. g5 {[%clk 0:02:46.1]} 11... Bd7 {[%clk 0:03:29]} 12. Nxb7 {[%clk 0:00:16.6]} 12... Qb8 {[%clk 0:00:13.9]} 13. Nc5 {[%clk 0:00:07.7]} 13... O-O {[%clk 0:02:11.5]} 14. Nxd7 {[%clk 0:00:23.9]} 14... Qe8 {[%clk 0:00:58]} 15. Nxf8 {[%clk 0:00:20.3]} 15... Kxf8 {[%clk 0:00:27.3]} 16. b3 {[%clk 0:00:31.4]} 16... e5 {[%clk 0:00:06.6]} 17. Nxd5 {[%clk 0:01:14.5]} 17... e4 {[%clk 0:00:03.3]} 18. Qg3 {[%clk 0:00:56.7]} 18... Nxd5 {[%clk 0:00:02.2]} 19. Ba3+ {[%clk 0:00:01.6]} 19... Kf7 {[%clk 0:00:05.1]} 20. Qxc7+ {[%clk 0:00:36.5]} 20... Nxc7 {[%clk 0:01:40.4]} 21. Bc4+ {[%clk 0:00:19.9]} 21... Ne6 {[%clk 0:00:03]} 22. d4 {[%clk 0:00:02.9]} 22... Qd7 {[%clk 0:00:05.6]} 23. d5 {[%clk 0:00:01.2]} 23... Rc8 {[%clk 0:00:51.5]} 24. dxe6+ {[%clk 0:00:02.6]} 24... Qxe6 {[%clk 0:00:19.7]} 25. Bxe6+ {[%clk 0:00:01.6]} 25... Kxe6 {[%clk 0:00:32.2]} 26. Rd1 {[%clk 0:00:04.5]} 26... h4 {[%clk 0:00:05.8]} 27. Rd6+ {[%clk 0:02:22]} 27... Kf7 {[%clk 0:01:37.2]} 28. Rd7+ {[%clk 0:01:28]} 28... Ke6 {[%clk 0:00:02.9]} 29. Rxg7 {[%clk 0:00:01.4]} 29... Kd5 {[%clk 0:00:02.9]} 30. Rxg6 {[%clk 0:00:01.4]} 30... Ne5 {[%clk 0:00:07.4]} 31. Ra6 {[%clk 0:00:02.2]} 31... Rxc2 {[%clk 0:00:01.7]} 32. Rxa5+ {[%clk 0:00:01.2]} 32... Rc5 {[%clk 0:00:01.9]} 33. Bxc5 {[%clk 0:00:01]} 33... Nd3+ {[%clk 0:00:06.6]} 34. Ke2 {[%clk 0:00:04.6]} 34... Ne5 {[%clk 0:00:06.4]} 35. Rd1+ {[%clk 0:00:06.6]} 35... Ke6 {[%clk 0:00:44.7]} 36. Rd6+ {[%clk 0:00:01.4]} 36... Kf7 {[%clk 0:01:40]} 37. g6+ {[%clk 0:00:01]} 37... Nxg6 {[%clk 0:00:01.1]} 38. Ra7+ {[%clk 0:00:01]} 38... Ne7 {[%clk 0:00:01.3]} 39. Rd8 {[%clk 0:00:11.3]} 39... f4 {[%clk 0:00:04.4]} 40. exf4 {[%clk 0:00:03.3]} 40... Kf6 {[%clk 0:00:37.9]} 41. Rxe7 {[%clk 0:00:02]} 41... Kf5 {[%clk 0:00:01.2]} 42. Ke3 {[%clk 0:00:02.1]} 42... h3 {[%clk 0:00:01.2]} 43. Rf8+ {[%clk 0:00:01.4]} 43... Kg6 {[%clk 0:00:01.9]} 44. Bd4 {[%clk 0:00:08.5]} 44... Kh5 {[%clk 0:00:01.9]} 45. Rg8 {[%clk 0:00:02.9]} 45... Kh4 {[%clk 0:00:00.5]} 46. Rh7# {[%clk 0:00:05.2]} 1-0
[Event "Let's Play!"]
[Site "Chess.com"]
[Date "2024.09.16"]
[Round "-"]
[White "Player2"]
[Black "Player1"]
[Result "0-1"]
[CurrentPosition "8/5k1p/1p2pP2/3p2P1/1b2P2P/8/1q6/2r1K3 w - - 3 40"]
[Timezone "UTC"]
[ECO "A06"]
[ECOUrl "https://www.chess.com/openings/Reti-Opening-Santasieres-Folly"]
[UTCDate "2024.09.16"]
[UTCTime "16:26:42"]
[WhiteElo "254"]
[BlackElo "546"]
[TimeControl "1/86400"]
[Termination "Player1 won by checkmate"]
[StartTime "16:26:42"]
[EndDate "2024.09.16"]
[EndTime "19:21:49"]
[Link "https://www.chess.com/game/daily/703864519"]
1. Nf3 {[%clk 0:00:04.1]} 1... d5 {[%clk 0:00:07.2]} 2. b4 {[%clk 0:00:05.8]} 2... e6 {[%clk 0:00:10.5]} 3. c3 {[%clk 0:00:08.1]} 3... Nf6 {[%clk 0:00:12.9]} 4. d4 {[%clk 0:00:08.8]} 4... Bd6 {[%clk 0:00:11.8]} 5. g3 {[%clk 0:00:06.1]} 5... Ne4 {[%clk 0:00:13.6]} 6. Bh3 {[%clk 0:00:19.3]} 6... Nxc3 {[%clk 0:00:08.5]} 7. Nxc3 {[%clk 0:00:23.3]} 7... Bxb4 {[%clk 0:00:05.2]} 8. Kd2 {[%clk 0:00:34.4]} 8... Qe7 {[%clk 0:00:16.1]} 9. Rb1 {[%clk 0:00:04.7]} 9... Nc6 {[%clk 0:00:03]} 10. Nh4 {[%clk 0:00:41.4]} 10... Qg5+ {[%clk 0:00:17.4]} 11. e3 {[%clk 0:00:35.5]} 11... a5 {[%clk 0:00:50.4]} 12. f4 {[%clk 0:00:05.9]} 12... Qf6 {[%clk 0:00:09.2]} 13. Qf3 {[%clk 0:00:28.1]} 13... O-O {[%clk 0:00:23.1]} 14. f5 {[%clk 0:00:50.2]} 14... g5 {[%clk 0:00:09.5]} 15. Qg4 {[%clk 0:00:55.5]} 15... Qh6 {[%clk 0:00:43.2]} 16. a3 {[%clk 0:00:06.5]} 16... Bd6 {[%clk 0:00:06.8]} 17. e4 {[%clk 0:00:08.7]} 17... Nxd4 {[%clk 0:00:03.5]} 18. Kd3 {[%clk 0:00:04.8]} 18... Bc5 {[%clk 0:00:04.4]} 19. Bxg5 {[%clk 0:00:18.3]} 19... Qg7 {[%clk 0:00:05.3]} 20. Bf4 {[%clk 0:01:38]} 20... b6 {[%clk 0:00:10.8]} 21. Bxc7 {[%clk 0:00:09.3]} 21... Ba6+ {[%clk 0:00:00.6]} 22. Ke3 {[%clk 0:00:06.6]} 22... Nb5+ {[%clk 0:00:05.9]} 23. Kd2 {[%clk 0:00:48.4]} 23... Nxc7 {[%clk 0:00:07.4]} 24. Rhf1 {[%clk 0:00:19.1]} 24... Bxf1 {[%clk 0:00:07.4]} 25. Rxf1 {[%clk 0:00:01.9]} 25... Bxa3 {[%clk 0:00:15.1]} 26. f6 {[%clk 0:00:54.2]} 26... Qxg4 {[%clk 0:00:16.9]} 27. Bxg4 {[%clk 0:00:02]} 27... Bb4 {[%clk 0:00:01.6]} 28. Rc1 {[%clk 0:00:04.2]} 28... Rac8 {[%clk 0:00:02.4]} 29. Bh5 {[%clk 0:00:15.2]} 29... Nb5 {[%clk 0:00:03.5]} 30. Ke2 {[%clk 0:00:16.4]} 30... Nxc3+ {[%clk 0:00:08.6]} 31. Rxc3 {[%clk 0:00:02.7]} 31... Rxc3 {[%clk 0:00:02]} 32. g4 {[%clk 0:00:05.8]} 32... a4 {[%clk 0:00:04.5]} 33. Nf3 {[%clk 0:00:03.8]} 33... a3 {[%clk 0:00:01.7]} 34. Ng5 {[%clk 0:00:07.1]} 34... a2 {[%clk 0:00:02.9]} 35. Bxf7+ {[%clk 0:00:07.6]} 35... Rxf7 {[%clk 0:00:01.1]} 36. Nxf7 {[%clk 0:00:03.7]} 36... Kxf7 {[%clk 0:00:00.4]} 37. h4 {[%clk 0:00:02.3]} 37... a1=Q {[%clk 0:00:04.1]} 38. g5 {[%clk 0:00:03]} 38... Qb2+ {[%clk 0:00:07.6]} 39. Ke1 {[%clk 0:00:03.2]} 39... Rc1# {[%clk 0:00:00.6]} 0-1
[Event "Let's Play!"]
[Site "Chess.com"]
[Date "2024.09.17"]
[Round "-"]
[White "Player1"]
[Black "Player2"]
[Result "1-0"]
[CurrentPosition "rn1qkbnr/pbppp2p/1p3p2/6pQ/3P3N/4P3/PPP2PPP/RNB1KB1R b KQkq - 1 5"]
[Timezone "UTC"]
[ECO "A04"]
[ECOUrl "https://www.chess.com/openings/Reti-Opening"]
[UTCDate "2024.09.17"]
[UTCTime "20:00:37"]
[WhiteElo "452"]
[BlackElo "638"]
[TimeControl "1/86400"]
[Termination "Player1 won by checkmate"]
[StartTime "20:00:37"]
[EndDate "2024.09.21"]
[EndTime "06:34:01"]
[Link "https://www.chess.com/game/daily/704388225"]
1. Nf3 {[%clk 1:09:12.4]} 1... f6 {[%clk 1:12:07.6]} 2. d4 {[%clk 1:04:51]} 2... b6 {[%clk 1:38:08.2]} 3. e3 {[%clk 0:43:13.2]} 3... Bb7 {[%clk 0:01:47.5]} 4. Nh4 {[%clk 0:00:07.3]} 4... g5 {[%clk 1:38:52.7]} 5. Qh5# {[%clk 0:47:00.5]} 1-0
[Event "Let's Play!"]
[Site "Chess.com"]
[Date "2024.09.18"]
[Round "-"]
[White "Player1"]
[Black "Player2"]
[Result "0-1"]
[CurrentPosition "8/8/2R1N1k1/3pP3/5B2/8/Pr3bPP/5q1K w - - 0 35"]
[Timezone "UTC"]
[ECO "A46"]
[ECOUrl "https://www.chess.com/openings/Indian-Game-Knights-Variation"]
[UTCDate "2024.09.18"]
[UTCTime "12:26:56"]
[WhiteElo "342"]
[BlackElo "430"]
[TimeControl "1/86400"]
[Termination "Player2 won by checkmate"]
[StartTime "12:26:56"]
[EndDate "2024.09.19"]
[EndTime "18:01:33"]
[Link "https://www.chess.com/game/daily/704627701"]
1. Nf3 {[%clk 0:00:02.2]} 1... Nf6 {[%clk 0:00:01.7]} 2. d4 {[%clk 0:15:56.9]} 2... Nc6 {[%clk 0:02:53.4]} 3. c3 {[%clk 0:02:55.1]} 3... d5 {[%clk 0:00:25]} 4. e3 {[%clk 0:01:15.1]} 4... b6 {[%clk 0:01:04.6]} 5. Bb5 {[%clk 0:00:23.3]} 5... Bd7 {[%clk 0:00:05.9]} 6. Qa4 {[%clk 0:00:09.7]} 6... e6 {[%clk 0:00:09.3]} 7. Bxc6 {[%clk 0:00:08.7]} 7... b5 {[%clk 0:00:10.5]} 8. Qxb5 {[%clk 0:00:22.9]} 8... a6 {[%clk 0:00:03.7]} 9. Qa4 {[%clk 0:00:03.3]} 9... Be7 {[%clk 0:00:16.3]} 10. b4 {[%clk 0:00:13.2]} 10... Ng4 {[%clk 0:00:07.7]} 11. Na3 {[%clk 0:00:16.6]} 11... O-O {[%clk 0:00:08.8]} 12. Ne5 {[%clk 0:00:06.5]} 12... Nxe5 {[%clk 0:00:04.5]} 13. dxe5 {[%clk 0:00:52.2]} 13... f5 {[%clk 0:00:31.6]} 14. Bxd7 {[%clk 1:15:38.2]} 14... Kf7 {[%clk 0:03:33.3]} 15. Bc6 {[%clk 0:00:13.5]} 15... Rb8 {[%clk 0:00:07.6]} 16. Qxa6 {[%clk 0:00:06.6]} 16... g5 {[%clk 0:34:27]} 17. O-O {[%clk 0:01:07.4]} 17... f4 {[%clk 0:00:18]} 18. exf4 {[%clk 0:06:41.1]} 18... gxf4 {[%clk 0:01:36]} 19. Bxf4 {[%clk 0:00:13.3]} 19... Rg8 {[%clk 0:04:02.2]} 20. Qd3 {[%clk 0:00:50.9]} 20... Rb6 {[%clk 0:06:50.4]} 21. Qxh7+ {[%clk 0:04:57.7]} 21... Rg7 {[%clk 0:00:23.1]} 22. Qh5+ {[%clk 0:00:03.6]} 22... Kg8 {[%clk 0:03:35]} 23. Be8 {[%clk 0:00:11.1]} 23... c5 {[%clk 0:00:04]} 24. bxc5 {[%clk 0:00:05.4]} 24... Bxc5 {[%clk 0:00:02.3]} 25. Nc2 {[%clk 0:00:24]} 25... Rb2 {[%clk 0:00:05.6]} 26. Ne1 {[%clk 0:00:24.4]} 26... Qa5 {[%clk 0:00:10.1]} 27. Qf7+ {[%clk 0:00:06.3]} 27... Rxf7 {[%clk 0:00:05.6]} 28. Bxf7+ {[%clk 0:00:20.3]} 28... Kxf7 {[%clk 0:00:10.1]} 29. Nf3 {[%clk 0:00:04.1]} 29... Qxc3 {[%clk 0:00:04.6]} 30. Ng5+ {[%clk 0:00:03.7]} 30... Kg6 {[%clk 0:00:06.2]} 31. Nxe6 {[%clk 0:00:08]} 31... Bb6 {[%clk 0:00:08.5]} 32. Rac1 {[%clk 0:00:21.3]} 32... Qd3 {[%clk 0:00:24.2]} 33. Rc6 {[%clk 0:00:04.6]} 33... Bxf2+ {[%clk 0:00:11.9]} 34. Kh1 {[%clk 0:00:05.4]} 34... Qxf1# {[%clk 0:00:02.4]} 0-1
[Event "Let's Play!"]
[Site "Chess.com"]
[Date "2024.09.19"]
[Round "-"]
[White "Player2"]
[Black "Player1"]
[Result "1-0"]
[CurrentPosition "r3bkr1/1p4n1/p1p1pQp1/3pB3/1P1P2p1/3B3P/PqP2P2/R3R1K1 b - - 1 27"]
[Timezone "UTC"]
[ECO "A06"]
[ECOUrl "https://www.chess.com/openings/Reti-Opening-Nimzowitsch-Larsen-Attack-2...Nf6"]
[UTCDate "2024.09.19"]
[UTCTime "18:06:35"]
[WhiteElo "509"]
[BlackElo "260"]
[TimeControl "1/86400"]
[Termination "Player2 won by resignation"]
[StartTime "18:06:35"]
[EndDate "2024.09.20"]
[EndTime "20:41:13"]
[Link "https://www.chess.com/game/daily/705179135"]
1. Nf3 {[%clk 0:00:00.8]} 1... Nf6 {[%clk 1:10:57.3]} 2. b3 {[%clk 0:02:56.2]} 2... d5 {[%clk 0:00:05]} 3. Ba3 {[%clk 0:00:03.2]} 3... Nc6 {[%clk 0:00:07.3]} 4. e3 {[%clk 0:34:38.5]} 4... g6 {[%clk 0:06:25.1]} 5. Bb5 {[%clk 0:03:23.1]} 5... Bd7 {[%clk 0:00:28.5]} 6. O-O {[%clk 0:02:16.7]} 6... Bg7 {[%clk 0:02:43.4]} 7. Nc3 {[%clk 0:07:13.1]} 7... a6 {[%clk 0:00:09.3]} 8. Bd3 {[%clk 0:00:50.3]} 8... Ng4 {[%clk 0:06:03.1]} 9. h3 {[%clk 0:01:34.4]} 9... Nf6 {[%clk 0:01:38.1]} 10. Nd4 {[%clk 0:05:53.8]} 10... Nxd4 {[%clk 0:00:26.3]} 11. exd4 {[%clk 0:00:01.5]} 11... c6 {[%clk 0:03:52.8]} 12. Qf3 {[%clk 0:00:35.3]} 12... Qa5 {[%clk 0:00:21.4]} 13. Bc5 {[%clk 0:00:10.5]} 13... Bh6 {[%clk 0:00:16.1]} 14. Rad1 {[%clk 0:00:07.9]} 14... Bxd2 {[%clk 0:00:14.9]} 15. b4 {[%clk 0:00:20.5]} 15... Qa3 {[%clk 0:00:06.5]} 16. Rxd2 {[%clk 0:00:12.8]} 16... Qxc3 {[%clk 0:00:05]} 17. Qe3 {[%clk 0:00:07.8]} 17... Qa3 {[%clk 0:00:12.1]} 18. Re2 {[%clk 0:00:24.2]} 18... e6 {[%clk 0:00:20]} 19. Ra1 {[%clk 0:00:17.5]} 19... Qb2 {[%clk 0:00:09.9]} 20. Ree1 {[%clk 0:00:03.9]} 20... Nh5 {[%clk 0:00:21.9]} 21. g4 {[%clk 0:00:13.5]} 21... Ng7 {[%clk 0:00:24.8]} 22. Bd6 {[%clk 0:00:08.2]} 22... f5 {[%clk 0:00:05.5]} 23. Be5 {[%clk 0:00:04]} 23... Rg8 {[%clk 0:00:02.1]} 24. Qh6 {[%clk 0:00:11]} 24... Kf8 {[%clk 0:00:14.5]} 25. Qxh7 {[%clk 0:00:10.3]} 25... Be8 {[%clk 0:00:35.1]} 26. Qh4 {[%clk 0:00:10.8]} 26... fxg4 {[%clk 0:00:20.2]} 27. Qf6+ {[%clk 0:00:12.7]} 1-0
from bulletchess.pgn import PGNFile
with PGNFile.open("./mini.pgn") as g:
games = []
while True:
try:
game = g.next_game()
except Exception as e:
raise Exception("Couldn't get exception") from e
if game is not None:
games.append(game)
else:
break
Note that the except code is never caught - it just fails silently
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working