@@ -109,6 +109,11 @@ def __init__(self, result, *ruleset):
109109 # It's a special object. Add it to the ruleset as-is.
110110 self .ruleset .append (rule )
111111
112+ # Mostly for debugging purposes
113+ def __repr__ (self ):
114+ caught_str = ", " .join (str (item ) for item in self .caught )
115+ return f"MatchingRule(ruleset={ self .ruleset } , caught=[{ caught_str } ])"
116+
112117 def match (self , * subject ):
113118 """If `subject` matches this ruleset, return the appropriate
114119 result. Otherwise, return None.
@@ -346,7 +351,6 @@ class BISACClassifier(Classifier):
346351 m (Ghost_Stories , fiction , "Ghost" ),
347352 m (Occult_Horror , fiction , "Occult & Supernatural" ),
348353 m (Gothic_Horror , fiction , "Gothic" ),
349- m (Horror , fiction , "Horror" ),
350354 # Romance
351355 # n.b. no BISAC for Gothic Romance
352356 m (Contemporary_Romance , fiction , "Romance" , "Contemporary" ),
@@ -386,18 +390,15 @@ class BISACClassifier(Classifier):
386390 m (Humorous_Fiction , fiction , "Humorous" ),
387391 m (Humorous_Fiction , fiction , "Satire" ),
388392 m (General_Fiction , fiction , "Literary" ),
389- m (LGBTQ_Fiction , fiction , "Gay" ),
390- m (LGBTQ_Fiction , fiction , "Lesbian" ),
391- m (LGBTQ_Fiction , fiction , "Gay & Lesbian" ),
393+ m (LGBTQ_Fiction , fiction , "LGBTQ+" ),
392394 m (Religious_Fiction , fiction , "Religious" ),
393395 m (Religious_Fiction , fiction , "Jewish" ),
394396 m (Religious_Fiction , fiction , "Visionary & Metaphysical" ),
395- m (Womens_Fiction , fiction , anything , "Contemporary Women" ),
396397 m (Westerns , fiction , "Westerns" ),
397398 # n.b. BISAC "Fiction / Urban" is distinct from "Fiction /
398399 # African-American / Urban", and does not map to any of our
399400 # genres.
400- m (Urban_Fiction , fiction , "African American" , "Urban" ),
401+ m (Urban_Fiction , fiction , "African American & Black " , "Urban & Street Lit " ),
401402 # BISAC classifies these genres at the top level, which we
402403 # treat as 'nonfiction', but we classify them as fiction. It
403404 # doesn't matter because they're neither, really.
@@ -413,7 +414,7 @@ class BISACClassifier(Classifier):
413414 m (Architecture , nonfiction , "Architecture" ),
414415 m (Art_Criticism_Theory , nonfiction , "Art" , "Criticism & Theory" ),
415416 m (Art_History , nonfiction , "Art" , "History" ),
416- m (Fashion , nonfiction , "Design" , "Fashion" ),
417+ m (Fashion , nonfiction , "Design" , "Fashion & Accessories " ),
417418 m (Design , nonfiction , "Design" ),
418419 m (Art_Design , nonfiction , "Art" ),
419420 m (Photography , nonfiction , "Photography" ),
@@ -458,7 +459,8 @@ class BISACClassifier(Classifier):
458459 m (Bartending_Cocktails , nonfiction , "Cooking" , "Beverages" ),
459460 m (Health_Diet , nonfiction , "Cooking" , "Health & Healing" ),
460461 m (Health_Diet , nonfiction , "Health & Fitness" ),
461- m (Vegetarian_Vegan , nonfiction , "Cooking" , "Vegetarian & Vegan" ),
462+ m (Vegetarian_Vegan , nonfiction , "Cooking" , "Vegetarian" ),
463+ m (Vegetarian_Vegan , nonfiction , "Cooking" , "Vegan" ),
462464 m (Cooking , nonfiction , "Cooking" ),
463465 # History
464466 m (African_History , nonfiction , "History" , "Africa" ),
@@ -487,11 +489,10 @@ class BISACClassifier(Classifier):
487489 m (Antiques_Collectibles , nonfiction , "Antiques & Collectibles" ),
488490 m (Crafts_Hobbies , nonfiction , "Crafts & Hobbies" ),
489491 m (Gardening , nonfiction , "Gardening" ),
490- m (Games , nonfiction , "Games" ),
491492 m (House_Home , nonfiction , "House & Home" ),
492493 m (Pets , nonfiction , "Pets" ),
493494 # Entertainment
494- m (Film_TV , nonfiction , "Performing Arts" , "Film & Video " ),
495+ m (Film_TV , nonfiction , "Performing Arts" , "Film" ),
495496 m (Film_TV , nonfiction , "Performing Arts" , "Television" ),
496497 m (Music , nonfiction , "Music" ),
497498 m (Performing_Arts , nonfiction , "Performing Arts" ),
@@ -526,7 +527,7 @@ class BISACClassifier(Classifier):
526527 # Then handle the less complicated genres of nonfiction.
527528 # n.b. no BISAC for Periodicals.
528529 # n.b. no BISAC for Humorous Nonfiction per se.
529- m (Music , nonfiction , "Biography & Autobiography" , "Composers & Musicians " ),
530+ m (Music , nonfiction , "Biography & Autobiography" , "Music " ),
530531 m (
531532 Entertainment ,
532533 nonfiction ,
@@ -551,22 +552,20 @@ class BISACClassifier(Classifier):
551552 m (Fantasy , fiction , "Fantasy & Magic" ),
552553 m (Ghost_Stories , fiction , "Ghost Stories" ),
553554 m (Fantasy , fiction , "Magical Realism" ),
554- m (Fantasy , fiction , "Mermaids" ),
555+ m (Fantasy , fiction , "Mermaids & Mermen " ),
555556 m (Fashion , nonfiction , "Fashion" ),
556557 m (Folklore , fiction , "Fairy Tales & Folklore" ),
557558 m (Folklore , fiction , "Legends, Myths, Fables" ),
558559 m (Games , nonfiction , "Games & Activities" ),
559560 m (Health_Diet , nonfiction , "Health & Daily Living" ),
560- m (Horror , fiction , "Horror & Ghost Stories " ),
561+ m (Horror , fiction , "Horror" ),
561562 m (Horror , fiction , "Monsters" ),
562- m (Horror , fiction , "Paranormal" ),
563563 m (Horror , fiction , "Paranormal, Occult & Supernatural" ),
564564 m (Horror , fiction , "Vampires" ),
565565 m (Horror , fiction , "Werewolves & Shifters" ),
566566 m (Horror , fiction , "Zombies" ),
567567 m (Humorous_Fiction , fiction , "Humorous Stories" ),
568568 m (Humorous_Nonfiction , "Young Adult Nonfiction" , "Humor" ),
569- m (LGBTQ_Fiction , fiction , "LGBT" ),
570569 m (Law , nonfiction , "Law & Crime" ),
571570 m (Mystery , fiction , "Mysteries & Detective Stories" ),
572571 m (Nature , nonfiction , "Animals" ),
@@ -578,7 +577,6 @@ class BISACClassifier(Classifier):
578577 m (Reference_Study_Aids , nonfiction , "Language Arts" ),
579578 m (Romance , fiction , "Love & Romance" ),
580579 m (Science_Fiction , fiction , "Robots" ),
581- m (Science_Fiction , fiction , "Time Travel" ),
582580 m (Social_Sciences , nonfiction , "Media Studies" ),
583581 m (Suspense_Thriller , fiction , "Superheroes" ),
584582 m (Suspense_Thriller , fiction , "Thrillers & Suspense" ),
@@ -592,13 +590,12 @@ class BISACClassifier(Classifier):
592590 m (Science , nonfiction , "Science & Nature" , "General" ),
593591 # Any other subcategory of 'Science & Nature' goes under Nature
594592 m (Nature , nonfiction , "Science & Nature" , something ),
595- # Life Strategies is juvenile/YA-specific, and contains both
596- # fiction and nonfiction. It's called "Social Issues" for
597- # juvenile fiction/nonfiction, and "Social Topics" for YA
598- # nonfiction. "Social Themes" in YA fiction is _not_
599- # classified as Life Strategies.
600- m (Life_Strategies , fiction , "social issues" ),
601- m (Life_Strategies , nonfiction , "social issues" ),
593+ # Life Strategies is juvenile/YA-specific.
594+ # In the new Bisac, "Social Issues" is "Social Themes" and covers
595+ # both Juvenile and YA fiction. This category was not classified
596+ # with the old Bisac so leaving it unclassified in the new one as
597+ # well for now.
598+ # For nonfiction, "Social Topics" covers both Juvenile and YA.
602599 m (Life_Strategies , nonfiction , social_topics ),
603600 ]
604601
0 commit comments