Added test for backward diagonals.
Began implementing pieces. Split attribute instantiation for Pieces into a separate function to circumvent the problem of needing to override an alias to a class method in a subclass that's set in the superclass. Credited Cris in the README for helping me with the latter.
Implemeneted initial _cache_horizontal_moves function.
Implemented initial _generate_diagonal_moves. Changed name of _cache_horizontal_moves to _generate_horizontal_moves.
Added empty test cases for pieces.
Removed _initialize_piece function; instead resolved the Pawn inheritance problem with a mild name mangling scheme.
Began writing tests for instantiation of Piece class.
Added input validation to Piece constructor. Tests are passing.
Beginning to add more skeleton functionality to pieces.
Encapsulated file and rank validation code. Beginning complete reordering of all instances of rank and file to file, then rank, to be consistent with SAN and avoid further confusion.
Player, file, and rank were made class properties of the Piece. Validation code is now encapsulated in the setter code for each of these properties.
Made modifications to _generate_diagonal_moves and _generate_horizontal_moves.
All mentions of rank and file reordered to file then rank to maintain consistency with SAN.
Began adding test cases for cache access functions. Reordered mentions of rank and file to file then rank in tests for consistency.
Implemented tests for membership and non_membership in Piece caches. Tests are passing.
Fixed straggling orderings of rank then file (as opposed to file then rank) in tests.
Reworked tests for Piece constructor into tests for property setters (what they were really meant to test).
Installed mock. Added to requirements.txt.
Implemented test for move_to function.
Added test for move_to function when input is invalid.