├── .gitignore ├── 01_introduction ├── maze.png ├── merge_two_images.py ├── merged.png └── player.png ├── 02_exceptions ├── load_tiles.py ├── load_tiles_buggy.py └── tile_combo.png ├── 03_semantic_errors ├── generate_maze.py └── generate_maze_buggy.py ├── 04_scientific_method ├── event_loop.py └── event_loop_buggy.py ├── 05_print ├── draw_maze.py ├── draw_maze_buggy.py ├── generate_maze.py ├── load_tiles.py ├── maze.png └── util.py ├── 06_introspection ├── draw_maze.py ├── generate_maze.py ├── load_tiles.py ├── moved.png ├── moves.py └── util.py ├── 07_interactive_debugger ├── .pdbrc ├── draw_maze.py ├── event_loop.py ├── generate_maze.py ├── load_tiles.py ├── maze_run.py ├── maze_run_buggy.py ├── moves.py └── util.py ├── 08_unit_tests ├── draw_maze.py ├── event_loop.py ├── generate_maze.py ├── load_tiles.py ├── maze_run.py ├── moves.py ├── test_crate.py └── util.py ├── 09_test_data ├── draw_maze.py ├── event_loop.py ├── expected.txt ├── generate_maze.py ├── load_tiles.py ├── maze_run.py ├── moves.py ├── test_crate.py ├── test_files.py ├── test_mock.py └── util.py ├── 10_test_suite ├── README.md ├── maze_run │ ├── __init__.py │ ├── __main__.py │ ├── draw_maze.py │ ├── event_loop.py │ ├── generate_maze.py │ ├── load_tiles.py │ ├── moves.py │ └── util.py └── test │ ├── expected.txt │ ├── fixtures.py │ ├── test_file_output.py │ ├── test_graphics.py │ └── test_moves.py ├── 11_testing_best_practices └── generate_maze_faster.py ├── 12_version_control ├── example.gitignore └── example_git_log.txt ├── 13_project_scaffold └── setup.py ├── 14_cleaning_up ├── code_golf.py ├── load_tile_positions.py ├── tiles.txt └── unorganized.py ├── 15_decomposing_tasks ├── event_loop.py └── mediator.py ├── 16_static_typing ├── highscores.py ├── highscores.sqlite ├── highscores_assert.py ├── highscores_cython.pyx ├── highscores_postgres.py ├── highscores_pycharm.py ├── highscores_sqlite3.py └── scores.csv ├── 17_documentation ├── Makefile ├── conf.py ├── event_loop.rst ├── iftex.sty ├── index.rst ├── mazes.rst └── tile_grid.rst ├── 9781484222409.jpg ├── LICENSE.txt ├── README.md └── contributing.md /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/.gitignore -------------------------------------------------------------------------------- /01_introduction/maze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/01_introduction/maze.png -------------------------------------------------------------------------------- /01_introduction/merge_two_images.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/01_introduction/merge_two_images.py -------------------------------------------------------------------------------- /01_introduction/merged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/01_introduction/merged.png -------------------------------------------------------------------------------- /01_introduction/player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/01_introduction/player.png -------------------------------------------------------------------------------- /02_exceptions/load_tiles.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/02_exceptions/load_tiles.py -------------------------------------------------------------------------------- /02_exceptions/load_tiles_buggy.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/02_exceptions/load_tiles_buggy.py -------------------------------------------------------------------------------- /02_exceptions/tile_combo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/02_exceptions/tile_combo.png -------------------------------------------------------------------------------- /03_semantic_errors/generate_maze.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/03_semantic_errors/generate_maze.py -------------------------------------------------------------------------------- /03_semantic_errors/generate_maze_buggy.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/03_semantic_errors/generate_maze_buggy.py -------------------------------------------------------------------------------- /04_scientific_method/event_loop.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/04_scientific_method/event_loop.py -------------------------------------------------------------------------------- /04_scientific_method/event_loop_buggy.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/04_scientific_method/event_loop_buggy.py -------------------------------------------------------------------------------- /05_print/draw_maze.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/05_print/draw_maze.py -------------------------------------------------------------------------------- /05_print/draw_maze_buggy.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/05_print/draw_maze_buggy.py -------------------------------------------------------------------------------- /05_print/generate_maze.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/05_print/generate_maze.py -------------------------------------------------------------------------------- /05_print/load_tiles.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/05_print/load_tiles.py -------------------------------------------------------------------------------- /05_print/maze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/05_print/maze.png -------------------------------------------------------------------------------- /05_print/util.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/05_print/util.py -------------------------------------------------------------------------------- /06_introspection/draw_maze.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/06_introspection/draw_maze.py -------------------------------------------------------------------------------- /06_introspection/generate_maze.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/06_introspection/generate_maze.py -------------------------------------------------------------------------------- /06_introspection/load_tiles.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/06_introspection/load_tiles.py -------------------------------------------------------------------------------- /06_introspection/moved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/06_introspection/moved.png -------------------------------------------------------------------------------- /06_introspection/moves.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/06_introspection/moves.py -------------------------------------------------------------------------------- /06_introspection/util.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/06_introspection/util.py -------------------------------------------------------------------------------- /07_interactive_debugger/.pdbrc: -------------------------------------------------------------------------------- 1 | print(dir()) 2 | import pprint 3 | ll 4 | -------------------------------------------------------------------------------- /07_interactive_debugger/draw_maze.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/07_interactive_debugger/draw_maze.py -------------------------------------------------------------------------------- /07_interactive_debugger/event_loop.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/07_interactive_debugger/event_loop.py -------------------------------------------------------------------------------- /07_interactive_debugger/generate_maze.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/07_interactive_debugger/generate_maze.py -------------------------------------------------------------------------------- /07_interactive_debugger/load_tiles.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/07_interactive_debugger/load_tiles.py -------------------------------------------------------------------------------- /07_interactive_debugger/maze_run.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/07_interactive_debugger/maze_run.py -------------------------------------------------------------------------------- /07_interactive_debugger/maze_run_buggy.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/07_interactive_debugger/maze_run_buggy.py -------------------------------------------------------------------------------- /07_interactive_debugger/moves.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/07_interactive_debugger/moves.py -------------------------------------------------------------------------------- /07_interactive_debugger/util.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/07_interactive_debugger/util.py -------------------------------------------------------------------------------- /08_unit_tests/draw_maze.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/08_unit_tests/draw_maze.py -------------------------------------------------------------------------------- /08_unit_tests/event_loop.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/08_unit_tests/event_loop.py -------------------------------------------------------------------------------- /08_unit_tests/generate_maze.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/08_unit_tests/generate_maze.py -------------------------------------------------------------------------------- /08_unit_tests/load_tiles.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/08_unit_tests/load_tiles.py -------------------------------------------------------------------------------- /08_unit_tests/maze_run.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/08_unit_tests/maze_run.py -------------------------------------------------------------------------------- /08_unit_tests/moves.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/08_unit_tests/moves.py -------------------------------------------------------------------------------- /08_unit_tests/test_crate.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/08_unit_tests/test_crate.py -------------------------------------------------------------------------------- /08_unit_tests/util.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/08_unit_tests/util.py -------------------------------------------------------------------------------- /09_test_data/draw_maze.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/09_test_data/draw_maze.py -------------------------------------------------------------------------------- /09_test_data/event_loop.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/09_test_data/event_loop.py -------------------------------------------------------------------------------- /09_test_data/expected.txt: -------------------------------------------------------------------------------- 1 | Hello World! -------------------------------------------------------------------------------- /09_test_data/generate_maze.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/09_test_data/generate_maze.py -------------------------------------------------------------------------------- /09_test_data/load_tiles.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/09_test_data/load_tiles.py -------------------------------------------------------------------------------- /09_test_data/maze_run.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/09_test_data/maze_run.py -------------------------------------------------------------------------------- /09_test_data/moves.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/09_test_data/moves.py -------------------------------------------------------------------------------- /09_test_data/test_crate.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/09_test_data/test_crate.py -------------------------------------------------------------------------------- /09_test_data/test_files.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/09_test_data/test_files.py -------------------------------------------------------------------------------- /09_test_data/test_mock.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/09_test_data/test_mock.py -------------------------------------------------------------------------------- /09_test_data/util.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/09_test_data/util.py -------------------------------------------------------------------------------- /10_test_suite/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/10_test_suite/README.md -------------------------------------------------------------------------------- /10_test_suite/maze_run/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10_test_suite/maze_run/__main__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/10_test_suite/maze_run/__main__.py -------------------------------------------------------------------------------- /10_test_suite/maze_run/draw_maze.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/10_test_suite/maze_run/draw_maze.py -------------------------------------------------------------------------------- /10_test_suite/maze_run/event_loop.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/10_test_suite/maze_run/event_loop.py -------------------------------------------------------------------------------- /10_test_suite/maze_run/generate_maze.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/10_test_suite/maze_run/generate_maze.py -------------------------------------------------------------------------------- /10_test_suite/maze_run/load_tiles.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/10_test_suite/maze_run/load_tiles.py -------------------------------------------------------------------------------- /10_test_suite/maze_run/moves.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/10_test_suite/maze_run/moves.py -------------------------------------------------------------------------------- /10_test_suite/maze_run/util.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/10_test_suite/maze_run/util.py -------------------------------------------------------------------------------- /10_test_suite/test/expected.txt: -------------------------------------------------------------------------------- 1 | Hello World! -------------------------------------------------------------------------------- /10_test_suite/test/fixtures.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/10_test_suite/test/fixtures.py -------------------------------------------------------------------------------- /10_test_suite/test/test_file_output.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/10_test_suite/test/test_file_output.py -------------------------------------------------------------------------------- /10_test_suite/test/test_graphics.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/10_test_suite/test/test_graphics.py -------------------------------------------------------------------------------- /10_test_suite/test/test_moves.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/10_test_suite/test/test_moves.py -------------------------------------------------------------------------------- /11_testing_best_practices/generate_maze_faster.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/11_testing_best_practices/generate_maze_faster.py -------------------------------------------------------------------------------- /12_version_control/example.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | pygame/* 3 | *.log 4 | 5 | password.txt 6 | -------------------------------------------------------------------------------- /12_version_control/example_git_log.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/12_version_control/example_git_log.txt -------------------------------------------------------------------------------- /13_project_scaffold/setup.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/13_project_scaffold/setup.py -------------------------------------------------------------------------------- /14_cleaning_up/code_golf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/14_cleaning_up/code_golf.py -------------------------------------------------------------------------------- /14_cleaning_up/load_tile_positions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/14_cleaning_up/load_tile_positions.py -------------------------------------------------------------------------------- /14_cleaning_up/tiles.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/14_cleaning_up/tiles.txt -------------------------------------------------------------------------------- /14_cleaning_up/unorganized.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/14_cleaning_up/unorganized.py -------------------------------------------------------------------------------- /15_decomposing_tasks/event_loop.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/15_decomposing_tasks/event_loop.py -------------------------------------------------------------------------------- /15_decomposing_tasks/mediator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/15_decomposing_tasks/mediator.py -------------------------------------------------------------------------------- /16_static_typing/highscores.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/16_static_typing/highscores.py -------------------------------------------------------------------------------- /16_static_typing/highscores.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/16_static_typing/highscores.sqlite -------------------------------------------------------------------------------- /16_static_typing/highscores_assert.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/16_static_typing/highscores_assert.py -------------------------------------------------------------------------------- /16_static_typing/highscores_cython.pyx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/16_static_typing/highscores_cython.pyx -------------------------------------------------------------------------------- /16_static_typing/highscores_postgres.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/16_static_typing/highscores_postgres.py -------------------------------------------------------------------------------- /16_static_typing/highscores_pycharm.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/16_static_typing/highscores_pycharm.py -------------------------------------------------------------------------------- /16_static_typing/highscores_sqlite3.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/16_static_typing/highscores_sqlite3.py -------------------------------------------------------------------------------- /16_static_typing/scores.csv: -------------------------------------------------------------------------------- 1 | Timmy,550 2 | Lancelot,440 3 | Guido,330 4 | Arthur,220 5 | Kristian,110 6 | -------------------------------------------------------------------------------- /17_documentation/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/17_documentation/Makefile -------------------------------------------------------------------------------- /17_documentation/conf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/17_documentation/conf.py -------------------------------------------------------------------------------- /17_documentation/event_loop.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/17_documentation/event_loop.rst -------------------------------------------------------------------------------- /17_documentation/iftex.sty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/17_documentation/iftex.sty -------------------------------------------------------------------------------- /17_documentation/index.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/17_documentation/index.rst -------------------------------------------------------------------------------- /17_documentation/mazes.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/17_documentation/mazes.rst -------------------------------------------------------------------------------- /17_documentation/tile_grid.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/17_documentation/tile_grid.rst -------------------------------------------------------------------------------- /9781484222409.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/9781484222409.jpg -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/LICENSE.txt -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/README.md -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Apress/pro-python-best-practices/HEAD/contributing.md --------------------------------------------------------------------------------