.flake8
.gitignore
LICENSE
Makefile
README.md
coverage.svg
pyproject.toml
.github/dependabot.yml
.github/workflows/ci.yml
.github/workflows/publish.yml
imgs/python-cookbook-cover.jpeg
requirements/dev-requirements.in
requirements/dev-requirements.txt
requirements/requirements.in
requirements/requirements.txt
src/pyrecipes/__init__.py
src/pyrecipes/chapter.py
src/pyrecipes/cookbook.py
src/pyrecipes/errors.py
src/pyrecipes/recipe.py
src/pyrecipes/template.py
src/pyrecipes.egg-info/PKG-INFO
src/pyrecipes.egg-info/SOURCES.txt
src/pyrecipes.egg-info/dependency_links.txt
src/pyrecipes.egg-info/entry_points.txt
src/pyrecipes.egg-info/requires.txt
src/pyrecipes.egg-info/top_level.txt
src/pyrecipes/cli/__init__.py
src/pyrecipes/cli/chapters.py
src/pyrecipes/cli/ls.py
src/pyrecipes/cli/run.py
src/pyrecipes/cli/search.py
src/pyrecipes/cli/show.py
src/pyrecipes/recipes/__init__.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/01_unpacking_a_sequence_into_separate_variables/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/02_unpacking_elements_from_iterables_of_arbitrary_length/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/03_keep_last_n_items/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/03_keep_last_n_items/somefile.txt
src/pyrecipes/recipes/01_data_structures_and_algorithms/04_finding_largest_or_smallest_n_items/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/05_implementing_a_priority_queue/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/06_mapping_keys_to_multiple_values_in_a_dictionary/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/07_keeping_dictionaries_in_order/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/08_calculating_with_dictionaries/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/09_finding_commonalities_between_two_dictionaries/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/10_removing_duplicates_from_a_sequence_while_maintaining_order/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/11_naming_a_slice/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/12_determining_the_most_frequently_occurring_items_in_a_sequence/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/13_sorting_a_list_of_dictionaries_by_a_common_key/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/14_sorting_objects_without_native_comparison_support/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/15_grouping_records_together_based_on_a_field/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/16_filtering_sequence_element/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/17_extracting_a_subset_of_a_dictionary/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/18_mapping_names_to_a_sequence_of_elements/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/19_transforming_and_reducing_data_at_the_same_time/example.py
src/pyrecipes/recipes/01_data_structures_and_algorithms/20_combining_multiple_mappings_into_a_single_mapping/example.py
src/pyrecipes/recipes/02_strings_and_text/01_splitting_strings_on_any_of_multiple_delimiters/example.py
src/pyrecipes/recipes/02_strings_and_text/02_matching_text_at_start_or_end_of_a_string/example.py
src/pyrecipes/recipes/02_strings_and_text/03_matching_strings_using_shell_wildcard_patterns/example.py
src/pyrecipes/recipes/02_strings_and_text/04_matching_and_searching_for_text_patterns/example.py
src/pyrecipes/recipes/02_strings_and_text/05_searching_and_replacing_text/example.py
src/pyrecipes/recipes/02_strings_and_text/06_searching_and_replacing_case_insensitive_text/example.py
src/pyrecipes/recipes/02_strings_and_text/07_specifying_a_regular_expression_for_the_shortest_match/example.py
src/pyrecipes/recipes/02_strings_and_text/08_writing_a_regular_expression_for_multiline_patterns/example.py
src/pyrecipes/recipes/02_strings_and_text/09_normalizing_unicode_text_to_a_standard_representation/example.py
src/pyrecipes/recipes/02_strings_and_text/10_working_with_unicode_characters_in_regular_expressions/example.py
src/pyrecipes/recipes/02_strings_and_text/11_stripping_unwanted_characters_from_strings/example.py
src/pyrecipes/recipes/02_strings_and_text/12_sanitizing_and_cleaning_up_text/example.py
src/pyrecipes/recipes/02_strings_and_text/13_aligning_text_strings/example.py
src/pyrecipes/recipes/02_strings_and_text/14_combining_and_concatenating_strings/example.py
src/pyrecipes/recipes/02_strings_and_text/15_interpolating_variables_in_strings/example.py
src/pyrecipes/recipes/02_strings_and_text/16_reformatting_text_to_a_fixed_number_of_columns/example.py
src/pyrecipes/recipes/02_strings_and_text/17_handling_html_and_xml_entities_in_text/example.py
src/pyrecipes/recipes/02_strings_and_text/18_tokenizing_text/example.py
src/pyrecipes/recipes/02_strings_and_text/19_writing_a_simple_recursive_descent_parser/example.py
src/pyrecipes/recipes/02_strings_and_text/20_performing_text_operations_on_byte_strings/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/01_rounding_numerical_values/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/02_performing_accurate_decimal_calculations/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/03_formatting_numbers_for_output/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/04_working_with_binary_octal_and_hexidecimal_integers/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/05_packing_and_unpacking_large_integers_from_bytes/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/06_performing_complex-valued_math/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/07_working_with_infinity_and_nans/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/08_calculating_in_fractions/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/09_calculating_with_large_numerical_arrays/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/10_performing_matrix_and_linear_algebra_calculations/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/11_picking_things_at_random/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/12_converting_days_to_seconds_and_other_basic_time_conversions/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/13_determining_last_fridays_date/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/14_finding_the_date_range_for_the_current_month/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/15_converting_strings_into_datetimes/example.py
src/pyrecipes/recipes/03_numbers_dates_and_times/16_manipulating_dates_involving_time_zones/example.py
src/pyrecipes/recipes/04_iterators_and_generators/01_manually_consuming_an_iterator/example.py
src/pyrecipes/recipes/04_iterators_and_generators/01_manually_consuming_an_iterator/somefile.txt
src/pyrecipes/recipes/04_iterators_and_generators/02_delegating_iteration/example.py
src/pyrecipes/recipes/04_iterators_and_generators/03_creating_new_iteration_patterns_with_generators/example.py
src/pyrecipes/recipes/04_iterators_and_generators/04_implementing_the_iterator_protocol/example.py
src/pyrecipes/recipes/04_iterators_and_generators/05_iterating_in_reverse/example.py
src/pyrecipes/recipes/04_iterators_and_generators/06_defining_a_generator_function_with_extra_state/example.py
src/pyrecipes/recipes/04_iterators_and_generators/06_defining_a_generator_function_with_extra_state/somefile.txt
src/pyrecipes/recipes/04_iterators_and_generators/07_taking_a_slice_of_an_iterator/example.py
src/pyrecipes/recipes/04_iterators_and_generators/08_skipping_the_first_part_of_an_iterable/example.py
src/pyrecipes/recipes/04_iterators_and_generators/08_skipping_the_first_part_of_an_iterable/somefile.txt
src/pyrecipes/recipes/04_iterators_and_generators/09_iterating_over_all_possible_combinations_or_permutations/example.py
src/pyrecipes/recipes/04_iterators_and_generators/10_iterating_over_the_index_value_pairs_of_a_sequence/example.py
src/pyrecipes/recipes/04_iterators_and_generators/11_iterating_over_multiple_sequences_simultaneously/example.py
src/pyrecipes/recipes/04_iterators_and_generators/12_iterating_on_items_in_separate_containers/example.py
src/pyrecipes/recipes/04_iterators_and_generators/13_creating_data_processing_pipelines/example.py
src/pyrecipes/recipes/04_iterators_and_generators/13_creating_data_processing_pipelines/data/bar/access-log
src/pyrecipes/recipes/04_iterators_and_generators/13_creating_data_processing_pipelines/data/bar/access-log-0108.bz2
src/pyrecipes/recipes/04_iterators_and_generators/13_creating_data_processing_pipelines/data/bar/access-log-0208.bz2
src/pyrecipes/recipes/04_iterators_and_generators/13_creating_data_processing_pipelines/data/foo/access-log
src/pyrecipes/recipes/04_iterators_and_generators/13_creating_data_processing_pipelines/data/foo/access-log-0108.gz
src/pyrecipes/recipes/04_iterators_and_generators/13_creating_data_processing_pipelines/data/foo/access-log-0208.gz
src/pyrecipes/recipes/04_iterators_and_generators/14_flattening_a_nested_sequence/example.py
src/pyrecipes/recipes/04_iterators_and_generators/15_iterating_in_sorted_order_over_merged_sorted_iterables/example.py
src/pyrecipes/recipes/04_iterators_and_generators/16_replacing_infinite_while_loops_with_an_iterator/access-log
src/pyrecipes/recipes/04_iterators_and_generators/16_replacing_infinite_while_loops_with_an_iterator/example.py
src/pyrecipes/recipes/05_files_and_io/01_reading_and_writing_text_files/example.py
src/pyrecipes/recipes/05_files_and_io/01_reading_and_writing_text_files/sample.txt
src/pyrecipes/recipes/05_files_and_io/02_printing_to_a_file/example.py
src/pyrecipes/recipes/05_files_and_io/02_printing_to_a_file/somefile.txt
src/pyrecipes/recipes/05_files_and_io/03_printing_with_a_different_separator_or_line_ending/example.py
src/pyrecipes/recipes/05_files_and_io/04_reading_and_writing_binary_data/data.bin
src/pyrecipes/recipes/05_files_and_io/04_reading_and_writing_binary_data/example.py
src/pyrecipes/recipes/05_files_and_io/05_writing_to_a_file_that_doesnt_already_exist/example.py
src/pyrecipes/recipes/05_files_and_io/05_writing_to_a_file_that_doesnt_already_exist/somefile.txt
src/pyrecipes/recipes/05_files_and_io/06_performing_io_operations_on_a_string/example.py
src/pyrecipes/recipes/05_files_and_io/07_reading_and_writing_compressed_datafiles/example.py
src/pyrecipes/recipes/05_files_and_io/07_reading_and_writing_compressed_datafiles/somfile.bz2
src/pyrecipes/recipes/05_files_and_io/08_iterating_over_fixed_sized_records/example.py
src/pyrecipes/recipes/05_files_and_io/08_iterating_over_fixed_sized_records/somefile.data
src/pyrecipes/recipes/05_files_and_io/09_reading_binary_data_into_a_mutable_buffer/example.py
src/pyrecipes/recipes/05_files_and_io/09_reading_binary_data_into_a_mutable_buffer/sample.bin
src/pyrecipes/recipes/05_files_and_io/10_memory_mapping_binary_files/example.py
src/pyrecipes/recipes/05_files_and_io/10_memory_mapping_binary_files/somefile.data
src/pyrecipes/recipes/05_files_and_io/11_manipulating_pathnames/example.py
src/pyrecipes/recipes/05_files_and_io/12_testing_for_the_existence_of_a_file/example.py
src/pyrecipes/recipes/05_files_and_io/13_getting_a_directory_listing/example.py
src/pyrecipes/recipes/05_files_and_io/13_getting_a_directory_listing/some_file
src/pyrecipes/recipes/05_files_and_io/13_getting_a_directory_listing/some_other_file
src/pyrecipes/recipes/05_files_and_io/13_getting_a_directory_listing/example_dir_1/example_1_empty.py
src/pyrecipes/recipes/05_files_and_io/13_getting_a_directory_listing/example_dir_2/example_2_empty.py
src/pyrecipes/recipes/05_files_and_io/14_bypassing_filename_encoding/example.py
src/pyrecipes/recipes/05_files_and_io/14_bypassing_filename_encoding/jalapeño.txt
src/pyrecipes/recipes/05_files_and_io/15_printing_bad_filesnames/example.py
src/pyrecipes/recipes/05_files_and_io/16_adding_or_changing_the_encoding_of_an_already_open_file/example.py
src/pyrecipes/recipes/05_files_and_io/17_writing_bytes_to_a_text_file/example.py
src/pyrecipes/recipes/05_files_and_io/18_wrapping_an_existing_file_descriptor_as_a_file_object/example.py
src/pyrecipes/recipes/05_files_and_io/18_wrapping_an_existing_file_descriptor_as_a_file_object/somefile.txt
src/pyrecipes/recipes/05_files_and_io/19_making_temporary_files_or_directories/example.py
src/pyrecipes/recipes/05_files_and_io/20_communicating_with_serial_port/example.py
src/pyrecipes/recipes/05_files_and_io/21_serializing_python_objects/example.py
src/pyrecipes/recipes/05_files_and_io/21_serializing_python_objects/pickled
src/pyrecipes/recipes/06_data_encoding_and_processing/01_reading_and_writing_csv_data/example.py
src/pyrecipes/recipes/06_data_encoding_and_processing/01_reading_and_writing_csv_data/stocks.csv
src/pyrecipes/recipes/06_data_encoding_and_processing/02_reading_and_writing_json_data/data.json
src/pyrecipes/recipes/06_data_encoding_and_processing/02_reading_and_writing_json_data/example.py
src/pyrecipes/recipes/06_data_encoding_and_processing/03_parsing_simple_xml_data/example.py
src/pyrecipes/recipes/06_data_encoding_and_processing/03_parsing_simple_xml_data/sample.xml
src/pyrecipes/recipes/06_data_encoding_and_processing/04_parsing_huge_xml_files_incrementally/example.py
src/pyrecipes/recipes/06_data_encoding_and_processing/04_parsing_huge_xml_files_incrementally/potholes.xml
src/pyrecipes/recipes/06_data_encoding_and_processing/05_turning_a_dictionary_into_xml/example.py
src/pyrecipes/recipes/06_data_encoding_and_processing/06_parsing_modifying_and_rewriting_xml/example.py
src/pyrecipes/recipes/06_data_encoding_and_processing/06_parsing_modifying_and_rewriting_xml/pred.xml
src/pyrecipes/recipes/06_data_encoding_and_processing/07_parsing_xml_documents_with_namespaces/example.py
src/pyrecipes/recipes/06_data_encoding_and_processing/07_parsing_xml_documents_with_namespaces/sample.xml
src/pyrecipes/recipes/06_data_encoding_and_processing/08_interacting_with_a_relational_database/example.py
src/pyrecipes/recipes/06_data_encoding_and_processing/09_decoding_and_encoding_hexadecimal_digits/example.py
src/pyrecipes/recipes/06_data_encoding_and_processing/10_decoding_and_encoding_base64/example.py
src/pyrecipes/recipes/06_data_encoding_and_processing/11_reading_and_writing_binary_arrays_of_structures/data.b
src/pyrecipes/recipes/06_data_encoding_and_processing/11_reading_and_writing_binary_arrays_of_structures/example.py
src/pyrecipes/recipes/06_data_encoding_and_processing/12_reading_nested_and_variable_sized_binary_structures/create_poly.py
src/pyrecipes/recipes/06_data_encoding_and_processing/12_reading_nested_and_variable_sized_binary_structures/example.py
src/pyrecipes/recipes/06_data_encoding_and_processing/12_reading_nested_and_variable_sized_binary_structures/polys.bin
src/pyrecipes/recipes/06_data_encoding_and_processing/13_summarizing_data_and_performing_statistics/example.py
src/pyrecipes/recipes/07_functions/01_writing_functions_that_accept_any_number_of_arguments/example.py
src/pyrecipes/recipes/07_functions/02_writing_functions_that_only_accept_keyword_arguments/example.py
src/pyrecipes/recipes/07_functions/03_attaching_informational_metadata_to_function_arguments/example.py
src/pyrecipes/recipes/07_functions/04_returning_multiple_values_from_a_function/example.py
src/pyrecipes/recipes/07_functions/05_defining_functions_with_default_arguments/example.py
src/pyrecipes/recipes/07_functions/06_defining_anonymous_or_inline_functions/example.py
src/pyrecipes/recipes/07_functions/07_capturing_variables_in_anonymous_functions/example.py
src/pyrecipes/recipes/07_functions/08_making_an_n_argument_callable_work_as_a_callable_with_fewer_arguments/example.py
src/pyrecipes/recipes/07_functions/09_replacing_single_method_classes_with_functions/example.py
src/pyrecipes/recipes/07_functions/10_carrying_extra_state_with_callback_functions/example.py
src/pyrecipes/recipes/07_functions/11_inlining_callback_functions/example.py
src/pyrecipes/recipes/07_functions/12_accessing_variables_defined_inside_a_closure/example.py
src/pyrecipes/recipes/08_classes_and_objects/01_changing_the_string_representation_of_instances/example.py
src/pyrecipes/recipes/08_classes_and_objects/02_customizing_string_formatting/example.py
src/pyrecipes/recipes/08_classes_and_objects/03_making_objects_support_the_context_management_protocol/example.py
src/pyrecipes/recipes/08_classes_and_objects/04_saving_memory_when_creating_a_large_number_of_instances/example.py
src/pyrecipes/recipes/08_classes_and_objects/05_encapsulating_names_in_a_class/example.py
src/pyrecipes/recipes/08_classes_and_objects/06_creating_managed_attributes/example.py
src/pyrecipes/recipes/08_classes_and_objects/07_calling_a_method_on_a_parent_class/example.py
src/pyrecipes/recipes/08_classes_and_objects/08_extending_a_property_in_a_subclass/example.py
src/pyrecipes/recipes/08_classes_and_objects/09_creating_a_new_kind_of_class_or_instance_attribute/example.py
src/pyrecipes/recipes/08_classes_and_objects/10_using_lazilly_computed_properties/example.py
src/pyrecipes/recipes/08_classes_and_objects/11_simplifying_the_initialization_of_a_data_structure/example.py
src/pyrecipes/recipes/08_classes_and_objects/12_defining_an_interface_or_abstract_base_class/example.py
src/pyrecipes/recipes/08_classes_and_objects/13_implementing_a_data_model_or_type_system/example.py
src/pyrecipes/recipes/08_classes_and_objects/14_implementing_custom_containers/example.py
src/pyrecipes/recipes/08_classes_and_objects/15_delegating_attribute_access/example.py
src/pyrecipes/recipes/08_classes_and_objects/16_defining_more_than_one_constructor_in_a_class/example.py
src/pyrecipes/recipes/08_classes_and_objects/17_creating_an_instance_without_invoking_init/example.py
src/pyrecipes/recipes/08_classes_and_objects/18_extending_classes_with_mixins/example.py
src/pyrecipes/recipes/08_classes_and_objects/19_implementing_stateful_objects_or_state_machines/example.py
src/pyrecipes/recipes/08_classes_and_objects/20_calling_a_method_on_an_object_given_the_name_as_a_string/example.py
src/pyrecipes/recipes/08_classes_and_objects/21_implementing_the_visitor_pattern/example.py
src/pyrecipes/recipes/08_classes_and_objects/22_implementing_the_visitor_pattern_without_recursion/example.py
src/pyrecipes/recipes/08_classes_and_objects/22_implementing_the_visitor_pattern_without_recursion/node.py
src/pyrecipes/recipes/08_classes_and_objects/23_managing_memory_in_cyclic_data_structures/example.py
src/pyrecipes/recipes/08_classes_and_objects/24_making_classes_support_comparison_operations/example.py
src/pyrecipes/recipes/08_classes_and_objects/25_creating_cached_instances/example.py
src/pyrecipes/recipes/09_metaprogramming/01_putting_a_wrapper_around_a_function/example.py
src/pyrecipes/recipes/09_metaprogramming/02_preserving_function_metadata_when_writing_decorators/example.py
src/pyrecipes/recipes/09_metaprogramming/03_unwrapping_a_decorator/example.py
src/pyrecipes/recipes/09_metaprogramming/04_defining_a_decorator_that_takes_arguments/example.py
src/pyrecipes/recipes/09_metaprogramming/05_defining_a_decorator_with_user_adjustable_attributes/example.py
src/pyrecipes/recipes/09_metaprogramming/06_defining_a_decorator_that_takes_an_optional_argument/example.py
src/pyrecipes/recipes/09_metaprogramming/07_enforcing_type_checking_on_a_function_using_a_decorator/example.py
src/pyrecipes/recipes/09_metaprogramming/08_defining_decorators_as_part_of_a_class/example.py
src/pyrecipes/recipes/09_metaprogramming/09_defining_decorators_as_classes/example.py
src/pyrecipes/recipes/09_metaprogramming/10_applying_decorators_to_class_and_static_methods/example.py
src/pyrecipes/recipes/09_metaprogramming/11_writing_decortors_that_add_arguments_to_wrapped_functions/example.py
src/pyrecipes/recipes/09_metaprogramming/12_using_decorators_to_patch_class_definitions/example.py
src/pyrecipes/recipes/09_metaprogramming/13_using_a_metaclass_to_control_instance_creation/example.py
src/pyrecipes/recipes/09_metaprogramming/14_capturing_class_attribute_definition_order/example.py
src/pyrecipes/recipes/09_metaprogramming/15_defining_a_metaclass_that_takes_optional_arguments/example.py
src/pyrecipes/recipes/09_metaprogramming/16_enforcing_an_argument_signature_on_args_and_kwargs/example.py
src/pyrecipes/recipes/09_metaprogramming/17_enforcing_coding_conventions_in_classes/example.py
src/pyrecipes/recipes/09_metaprogramming/18_defining_a_class_programatically/example.py
src/pyrecipes/recipes/09_metaprogramming/19_initializing_class_members_at_definition_time/example.py
src/pyrecipes/recipes/09_metaprogramming/20_implementing_multiple_dispatch_with_function_annotations/example.py
src/pyrecipes/recipes/09_metaprogramming/21_avoiding_repetitive_proeprty_methods/example.py
src/pyrecipes/recipes/09_metaprogramming/22_defining_context_managers_the_easy_way/example.py
src/pyrecipes/recipes/09_metaprogramming/23_executing_code_with_local_side_effects/example.py
src/pyrecipes/recipes/09_metaprogramming/24_parsing_and_analyzing_python_source/example.py
src/pyrecipes/recipes/09_metaprogramming/25_disassembling_python_byte_code/example.py
src/pyrecipes/recipes/10_modules_and_packages/01_making_a_hierarchical_package_of_modules/example.py
src/pyrecipes/recipes/10_modules_and_packages/01_making_a_hierarchical_package_of_modules/src/graphics/__init__.py
src/pyrecipes/recipes/10_modules_and_packages/01_making_a_hierarchical_package_of_modules/src/graphics/formats/__init__.py
src/pyrecipes/recipes/10_modules_and_packages/01_making_a_hierarchical_package_of_modules/src/graphics/formats/jpg.py
src/pyrecipes/recipes/10_modules_and_packages/01_making_a_hierarchical_package_of_modules/src/graphics/formats/png.py
src/pyrecipes/recipes/10_modules_and_packages/01_making_a_hierarchical_package_of_modules/src/graphics/primitive/__init__.py
src/pyrecipes/recipes/10_modules_and_packages/01_making_a_hierarchical_package_of_modules/src/graphics/primitive/fill.py
src/pyrecipes/recipes/10_modules_and_packages/01_making_a_hierarchical_package_of_modules/src/graphics/primitive/line.py
src/pyrecipes/recipes/10_modules_and_packages/01_making_a_hierarchical_package_of_modules/src/graphics/primitive/text.py
src/pyrecipes/recipes/10_modules_and_packages/02_controlling_the_import_of_everything/example.py
src/pyrecipes/recipes/10_modules_and_packages/03_importing_package_submodules_using_relative_names/example.py
src/pyrecipes/recipes/10_modules_and_packages/03_importing_package_submodules_using_relative_names/src/my_package/__init__.py
src/pyrecipes/recipes/10_modules_and_packages/03_importing_package_submodules_using_relative_names/src/my_package/A/__init__.py
src/pyrecipes/recipes/10_modules_and_packages/03_importing_package_submodules_using_relative_names/src/my_package/A/grok.py
src/pyrecipes/recipes/10_modules_and_packages/03_importing_package_submodules_using_relative_names/src/my_package/A/spam.py
src/pyrecipes/recipes/10_modules_and_packages/03_importing_package_submodules_using_relative_names/src/my_package/B/__init__.py
src/pyrecipes/recipes/10_modules_and_packages/03_importing_package_submodules_using_relative_names/src/my_package/B/bar.py
src/pyrecipes/recipes/10_modules_and_packages/04_splitting_a_module_into_multiple_files/example.py
src/pyrecipes/recipes/10_modules_and_packages/04_splitting_a_module_into_multiple_files/my_module.py
src/pyrecipes/recipes/10_modules_and_packages/04_splitting_a_module_into_multiple_files/src/my_module/__init__.py
src/pyrecipes/recipes/10_modules_and_packages/04_splitting_a_module_into_multiple_files/src/my_module/a.py
src/pyrecipes/recipes/10_modules_and_packages/04_splitting_a_module_into_multiple_files/src/my_module/b.py
src/pyrecipes/recipes/11_networking_and_web_programming/01_interacting_with_http_services_as_a_client/example.py
src/pyrecipes/recipes/12_concurrency/01_starting_and_stopping_threads/example.py
src/pyrecipes/recipes/12_concurrency/02_determining_if_a_thread_has_started/example.py
src/pyrecipes/recipes/12_concurrency/03_communicating_between_threads/example.py
src/pyrecipes/recipes/12_concurrency/07_creating_a_thread_pool/example.py
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/example.py
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/logs/20121217.log.gz
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/logs/20121218.log.gz
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/logs/20121219.log.gz
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/logs/20121220.log.gz
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/logs/20121221.log.gz
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/logs/20121222.log.gz
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/logs/20121223.log.gz
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/logs/20121224.log.gz
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/logs/20121225.log.gz
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/logs/20121226.log.gz
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/logs/20121227.log.gz
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/logs/20121228.log.gz
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/logs/20121229.log.gz
src/pyrecipes/recipes/12_concurrency/08_performing_simple_parallel_programming/logs/20121230.log.gz
src/pyrecipes/utils/__init__.py
src/pyrecipes/utils/cli.py
src/pyrecipes/utils/text.py
tests/conftest.py
tests/test_chapter.py
tests/test_cookbook.py
tests/test_recipe.py
tests/test_utils.py
tests/cli/test_commands_basic.py