TESTS = {
    "AlphaString": "classes_test.AlphaStringTests",
    "BankAccount": "classes_test.BankAccountTests",
    "DoublyLinkedNode": "classes_test.DoublyLinkedNodeTests",
    "Flavor": "classes_test.FlavorTests",
    "IMAPChecker": "classes_test.IMAPCheckerTests",
    "IceCream": "classes_test.IceCreamTests",
    "LastUpdatedDictionary": "classes_test.LastUpdatedDictionaryTests",
    "MaxCounter": "classes_test.MaxCounterTests",
    "MinimumBalanceAccount": "classes_test.MinimumBalanceAccountTests",
    "Month": "classes_test.MonthTests",
    "Node": "classes_test.NodeTests",
    "OrderedCounter": "classes_test.OrderedCounterTests",
    "Row": "classes_test.RowTests",
    "Size": "classes_test.SizeTests",
    "deal_cards": "collection_test.DealCardsTest",
    "flip_dict_of_lists": "collection_test.FlipDictOfListsTest",
    "get_cards": "collection_test.GetCardsTest",
    "parse_csv": "collection_test.ParseCSVTests",
    "shuffle_cards": "collection_test.ShuffleTest",
    "pipe_to_comma.py": "csv_test.PipeToCommaTests",
    "reorder.py": "csv_test.ReorderTests",
    "sort_by_column.py": "csv_test.SortByColumnTests",
    "total_air_travel.py": "csv_test.TotalAirTravelTests",
    "ungroup.py": "csv_test.UnGroupTests",
    "fourth_thursday": "dates_test.FourthThursdayTests",
    "someday.py": "dates_test.SomeDayTests",
    "call_logger": "decorators_test.CallLoggerTests",
    "catch_all": "decorators_test.CatchAllTests",
    "count_calls": "decorators_test.CountCallsTests",
    "four": "decorators_test.FourTests",
    "groot": "decorators_test.GrootTests",
    "hide_errors": "decorators_test.HideErrorsTests",
    "jsonify": "decorators_test.JSONifyTests",
    "make_partial": "decorators_test.MakePartialTests",
    "count_words": "dictionaries_test.CountWordsTests",
    "dict_from_truple": "dictionaries_test.DictFromTrupleTests",
    "dict_from_tuple": "dictionaries_test.DictFromTupleTests",
    "flip_dict": "dictionaries_test.FlipDictTests",
    "get_ascii_codes": "dictionaries_test.GetASCIICodeTests",
    "get_all_factors": "dictionaries_test.GetAllFactorsTests",
    "get_shared_keys": "dictionaries_test.GetSharedKeys",
    "group_by": "dictionaries_test.GroupByTests",
    "pluck": "dictionaries_test.PluckTests",
    "sort_dict": "dictionaries_test.SortDictTests",
    "translate": "dictionaries_test.TranslateTests",
    "CaselessString": "dunder_test.CaselessStringTests",
    "CyclicList": "dunder_test.CyclicListTests",
    "EasyDict": "dunder_test.EasyDictTests",
    "countdown.py": "exception_test.CountdownTests",
    "deep_add": "exception_test.DeepAddTests",
    "deep_flatten": "exception_test.DeepFlattenTests",
    "len_or_none": "exception_test.LenOrNoneTests",
    "concat.py": "files_test.ConcatTests",
    "count.py": "files_test.CountTests",
    "country_capitals.py": "files_test.CountryCapitalsTests",
    "gzip_fetch.py": "files_test.GZipFetchTests",
    "line_numbers.py": "files_test.LineNumbersTests",
    "new_readme.py": "files_test.NewReadmeTests",
    "passphrase.py": "files_test.PassphraseTests",
    "reverse.py": "files_test.ReverseTests",
    "sort.py": "files_test.SortTests",
    "todos.py": "files_test.TodosTests",
    "coalesce": "functions_test.CoalesceTests",
    "format_time": "functions_test.FormatTimeTests",
    "get_hypotenuse": "functions_test.GetHypotenuseTests",
    "is_leap_year": "functions_test.IsLeapYearTests",
    "is_perfect_square": "functions_test.IsPerfectSquareTests",
    "parse_time": "functions_test.ParseTimeTests",
    "to_celsius": "functions_test.ToCelsiusTests",
    "to_percent": "functions_test.ToPercentTests",
    "all_together": "generators_test.AllTogetherTests",
    "first_prime_over": "generators_test.FirstPrimeOverTests",
    "get_primes_over": "generators_test.GetPrimesOverTests",
    "head": "generators_test.HeadTests",
    "join": "generators_test.JoinTests",
    "parse_ranges": "generators_test.ParseRangesTests",
    "strip_lines": "generators_test.StripLinesTests",
    "compact": "iteration_test.CompactTests",
    "lstrip": "iteration_test.LStripTests",
    "random_number_generator": "iteration_test.RandomNumberGeneratorTests",
    "running_mean": "iteration_test.RunningMeanTests",
    "stop_on": "iteration_test.StopOnTests",
    "total_length": "iteration_test.TotalLengthTests",
    "characters": "lists_test.CharactersTests",
    "combine_lists": "lists_test.CombineListsTests",
    "glink": "lists_test.GlinkTests",
    "ith_item_power": "lists_test.IthItemsPowerTests",
    "natural_sort": "lists_test.NaturalSortTests",
    "reverse_words": "lists_test.ReverseWordOrder",
    "rotate_list": "lists_test.RotateListTests",
    "are_consecutive": "loops_test.AreConsecutiveTests",
    "flatten": "loops_test.FlattenTests",
    "get_vowel_names": "loops_test.GetVowelNamesTests",
    "matrix_from_string": "loops_test.MatrixFromStringTests",
    "product": "loops_test.ProductTests",
    "sum_all": "loops_test.SumAllTests",
    "sum_timestamps": "loops_test.TestSumTimestamps",
    "words_containing": "loops_test.WordsContainingTests",
    "add.py": "modules_test.AddTests",
    "average.py": "modules_test.AverageTests",
    "convert_csv.py": "modules_test.ConvertCSVTests",
    "difference.py": "modules_test.DifferenceTests",
    "dollars.py": "modules_test.DollarsTest",
    "greetings.py": "modules_test.GreetingsTests",
    "guess.py": "modules_test.GuessIn3Tests",
    "hello.py": "modules_test.HelloTests",
    "howdy.py": "modules_test.HowdyTests",
    "madlib.py": "modules_test.MadlibTests",
    "phonetic.py": "modules_test.PhoneticTests",
    "silly.py": "modules_test.SillyCaseTest",
    "temp.py": "modules_test.TempTests",
    "wc.py": "modules_test.WCTests",
    "cache": "objects_test.CacheTests",
    "call_again": "objects_test.CallAgainTests",
    "call_later": "objects_test.CallLaterTests",
    "call": "objects_test.CallTests",
    "exclude": "objects_test.ExcludeTests",
    "only_once": "objects_test.OnlyOnceTests",
    "editorconfig.py": "pathlib_test.EditorConfigTests",
    "ls.py": "pathlib_test.LSTests",
    "remove_empty.py": "pathlib_test.RemoveEmptyTests",
    "Circle": "properties_test.CircleTests",
    "Person": "properties_test.PersonTests",
    "Point": "properties_test.PointTests",
    "guess_capitals.py": "random_test.CapitalGuessing",
    "randline.py": "random_test.RandLineTests",
    "roll.py": "random_test.RollTests",
    "shuffle.py": "random_test.ShuffleTests",
    "annual_return": "ranges_test.AnnualReturnTests",
    "get_factors": "ranges_test.GetFactorsTests",
    "identity": "ranges_test.IdentityTests",
    "interleave": "ranges_test.InterleaveTests",
    "is_range": "ranges_test.IsRangeTests",
    "matrix_add": "ranges_test.MatrixAddTests",
    "parse_row": "ranges_test.ParseRowTests",
    "power_list": "ranges_test.PowerListTests",
    "is_prime": "ranges_test.PrimalityTests",
    "reverse_difference": "ranges_test.ReverseDifferenceTests",
    "triples": "ranges_test.TriplesTests",
    "with_previous": "ranges_test.WithPreviousTests",
    "count_numbers": "regexes_test.CountNumbersTests",
    "count_punctuation": "regexes_test.CountPunctionationTests",
    "get_extension": "regexes_test.GetExtensionTests",
    "is_hex_color": "regexes_test.IsHexColorTests",
    "normalize_jpeg": "regexes_test.NormalizeJPEGTests",
    "normalize_whitespace": "regexes_test.NormalizeWhitespaceTests",
    "get_most_common": "sets_test.GetMostCommonTests",
    "has_duplicates": "sets_test.HasDuplicatesTests",
    "split_in_half": "slices_test.HalfTests",
    "last_n_elements": "slices_test.LastNElementsTests",
    "last_words": "slices_test.LastWordsTests",
    "tags_equal": "slices_test.TagsEqualTests",
    "html_tag": "stars_test.HTMLTagTests",
    "sum_each": "stars_test.SumEachTests",
    "transpose": "stars_test.TransposeTests",
    "get_earliest": "tuples_test.GetEarliestTests",
    "hotdog_counts": "tuples_test.HotDogCountsTests",
    "name_key": "tuples_test.NameKeyTests",
    "sort_names": "tuples_test.SortNamesTests",
    "swap_ends": "tuples_test.SwapEndsTests"
}

MODULES = {
    "functions": [
        "get_hypotenuse",
        "parse_time",
        "format_time",
        "coalesce",
        "to_percent",
        "to_celsius",
        "is_leap_year",
        "is_perfect_square"
    ],
    "modules": [
        "howdy.py",
        "temp.py",
        "dollars.py",
        "add.py",
        "madlib.py",
        "difference.py",
        "silly.py",
        "greetings.py",
        "hello.py",
        "average.py",
        "guess.py",
        "phonetic.py",
        "wc.py",
        "convert_csv.py"
    ],
    "files": [
        "line_numbers.py",
        "sort.py",
        "todos.py",
        "new_readme.py",
        "passphrase.py",
        "count.py",
        "reverse.py",
        "concat.py",
        "country_capitals.py",
        "gzip_fetch.py"
    ],
    "loops": [
        "get_vowel_names",
        "sum_timestamps",
        "product",
        "sum_all",
        "flatten",
        "matrix_from_string",
        "words_containing",
        "are_consecutive"
    ],
    "lists": [
        "combine_lists",
        "glink",
        "rotate_list",
        "characters",
        "reverse_words",
        "ith_item_power",
        "natural_sort"
    ],
    "slices": [
        "last_words",
        "last_n_elements",
        "split_in_half",
        "tags_equal"
    ],
    "ranges": [
        "get_factors",
        "is_range",
        "annual_return",
        "is_prime",
        "power_list",
        "reverse_difference",
        "with_previous",
        "identity",
        "matrix_add",
        "triples",
        "parse_row",
        "interleave"
    ],
    "tuples": [
        "hotdog_counts",
        "swap_ends",
        "get_earliest",
        "name_key",
        "sort_names"
    ],
    "dictionaries": [
        "count_words",
        "group_by",
        "get_shared_keys",
        "sort_dict",
        "dict_from_truple",
        "translate",
        "pluck",
        "get_all_factors",
        "get_ascii_codes",
        "flip_dict",
        "dict_from_tuple"
    ],
    "sets": [
        "has_duplicates",
        "get_most_common"
    ],
    "generators": [
        "join",
        "strip_lines",
        "all_together",
        "parse_ranges",
        "first_prime_over",
        "head",
        "get_primes_over"
    ],
    "exception": [
        "deep_add",
        "len_or_none",
        "deep_flatten",
        "countdown.py"
    ],
    "csv": [
        "total_air_travel.py",
        "pipe_to_comma.py",
        "ungroup.py",
        "sort_by_column.py",
        "reorder.py"
    ],
    "regexes": [
        "count_numbers",
        "get_extension",
        "normalize_jpeg",
        "count_punctuation",
        "normalize_whitespace",
        "is_hex_color"
    ],
    "classes": [
        "BankAccount",
        "Month",
        "Row",
        "Flavor",
        "Size",
        "IceCream",
        "IMAPChecker",
        "MinimumBalanceAccount",
        "AlphaString",
        "DoublyLinkedNode",
        "LastUpdatedDictionary",
        "Node",
        "OrderedCounter",
        "MaxCounter"
    ],
    "stars": [
        "transpose",
        "sum_each",
        "html_tag"
    ],
    "iteration": [
        "total_length",
        "lstrip",
        "compact",
        "stop_on",
        "random_number_generator",
        "running_mean"
    ],
    "random": [
        "roll.py",
        "randline.py",
        "shuffle.py",
        "guess_capitals.py"
    ],
    "collection": [
        "deal_cards",
        "flip_dict_of_lists",
        "get_cards",
        "parse_csv",
        "shuffle_cards"
    ],
    "dates": [
        "someday.py",
        "fourth_thursday"
    ],
    "pathlib": [
        "ls.py",
        "remove_empty.py",
        "editorconfig.py"
    ],
    "decorators": [
        "jsonify",
        "groot",
        "four",
        "hide_errors",
        "call_logger",
        "catch_all",
        "make_partial",
        "count_calls"
    ],
    "properties": [
        "Point",
        "Person",
        "Circle"
    ],
    "dunder": [
        "CaselessString",
        "EasyDict",
        "CyclicList"
    ],
    "objects": [
        "exclude",
        "call",
        "call_later",
        "call_again",
        "only_once",
        "cache"
    ]
}
