pw_presubmit: Rename banned words check

Rename banned words check to inclusive language.

Bug: 386
Change-Id: I0ca7c3591c1a6fca9f1dfbc6a9e373c3f1e36f07
Requires: pigweed-internal:12620
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/46501
Commit-Queue: Joe Ethier <jethier@google.com>
Reviewed-by: Joe Ethier <jethier@google.com>
diff --git a/pw_presubmit/docs.rst b/pw_presubmit/docs.rst
index 0458254..dce3315 100644
--- a/pw_presubmit/docs.rst
+++ b/pw_presubmit/docs.rst
@@ -114,23 +114,23 @@
 C/C++ headers is ``#pragma once``. This is enabled by adding
 ``pw_presubmit.pragma_once`` to a presubmit program.
 
-Banned Words
-============
-.. banned-words: disable
+Inclusive Language
+==================
+.. inclusive-language: disable
 
-The banned words check looks for words that are typical of non-inclusive code,
-like using "master" and "slave" in place of "primary" and "secondary" or
+The inclusive language check looks for words that are typical of non-inclusive
+code, like using "master" and "slave" in place of "primary" and "secondary" or
 "sanity check" in place of "consistency check".
 
-.. banned-words: enable
+.. inclusive-language: enable
 
-These checks can be disabled for individual lines with "banned-words: ignore"
-on the line in question or the line above it, or for entire blocks by using
-"banned-words: disable" before the block and "banned-words: enable" after the
-block.
+These checks can be disabled for individual lines with
+"inclusive-language: ignore" on the line in question or the line above it, or
+for entire blocks by using "inclusive-language: disable" before the block and
+"inclusive-language: enable" after the block.
 
 .. In case things get moved around in the previous paragraphs the enable line
-.. is repeated here: banned-words: enable.
+.. is repeated here: inclusive-language: enable.
 
 pw_presubmit
 ~~~~~~~~~~~~
@@ -166,8 +166,8 @@
       sys.exit(2)
 
   import pw_presubmit
-  from pw_presubmit import banned_words, build, cli, environment, format_code
-  from pw_presubmit import git_repo, python_checks, filter_paths
+  from pw_presubmit import build, cli, environment, format_code, git_repo
+  from pw_presubmit import inclusive_language, python_checks, filter_paths
   from pw_presubmit import PresubmitContext
   from pw_presubmit.install_hook import install_hook
 
@@ -230,7 +230,7 @@
       # Use the upstream formatting checks, with custom path filters applied.
       format_code.presubmit_checks(exclude=PATH_EXCLUSIONS),
       # Include the upstream inclusive language check.
-      banned_words.banned_words,
+      inclusive_language.inclusive_language,
   )
 
   FULL = (
diff --git a/pw_presubmit/py/BUILD.gn b/pw_presubmit/py/BUILD.gn
index 444ab0f..f49fbeb 100644
--- a/pw_presubmit/py/BUILD.gn
+++ b/pw_presubmit/py/BUILD.gn
@@ -20,12 +20,12 @@
   setup = [ "setup.py" ]
   sources = [
     "pw_presubmit/__init__.py",
-    "pw_presubmit/banned_words.py",
     "pw_presubmit/build.py",
     "pw_presubmit/cli.py",
     "pw_presubmit/environment.py",
     "pw_presubmit/format_code.py",
     "pw_presubmit/git_repo.py",
+    "pw_presubmit/inclusive_language.py",
     "pw_presubmit/install_hook.py",
     "pw_presubmit/pigweed_presubmit.py",
     "pw_presubmit/presubmit.py",
diff --git a/pw_presubmit/py/pw_presubmit/banned_words.py b/pw_presubmit/py/pw_presubmit/inclusive_language.py
similarity index 75%
rename from pw_presubmit/py/pw_presubmit/banned_words.py
rename to pw_presubmit/py/pw_presubmit/inclusive_language.py
index 8c789e6..915027a 100644
--- a/pw_presubmit/py/pw_presubmit/banned_words.py
+++ b/pw_presubmit/py/pw_presubmit/inclusive_language.py
@@ -11,7 +11,7 @@
 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 # License for the specific language governing permissions and limitations under
 # the License.
-"""Banned words presubmit check."""
+"""Inclusive language presubmit check."""
 
 import collections
 from pathlib import Path
@@ -22,8 +22,8 @@
 
 # List borrowed from Android:
 # https://source.android.com/setup/contribute/respectful-code
-# banned-words: disable
-BANNED_WORDS = [
+# inclusive-language: disable
+NON_INCLUSIVE_WORDS = [
     r'master',
     r'slave',
     r'(white|gr[ae]y|black)\s*(list|hat)',
@@ -40,17 +40,17 @@
     r'm[ae]n[-\s]*in[-\s]*the[-\s]*middle',
     r'mitm',
 ]
-# banned-words: enable
+# inclusive-language: enable
 
-# Test: master  # banned-words: ignore
+# Test: master  # inclusive-language: ignore
 # Test: master
 
 
-def _process_banned_words(*words):
-    """Turn banned-words list into one big regex with common inflections."""
+def _process_inclusive_language(*words):
+    """Turn word list into one big regex with common inflections."""
 
     if not words:
-        words = tuple(BANNED_WORDS)
+        words = tuple(NON_INCLUSIVE_WORDS)
 
     all_words = []
     for entry in words:
@@ -71,7 +71,7 @@
     )
 
 
-BANNED_WORDS_REGEX = _process_banned_words()
+NON_INCLUSIVE_WORDS_REGEX = _process_inclusive_language()
 
 # If seen, ignore this line and the next.
 _IGNORE = 'banned-words: ignore'
@@ -81,9 +81,9 @@
 _ENABLE = 'banned-words: enable'
 
 
-def banned_words(
+def inclusive_language(
     ctx: presubmit.PresubmitContext,
-    words_regex=BANNED_WORDS_REGEX,
+    words_regex=NON_INCLUSIVE_WORDS_REGEX,
 ):
     """Presubmit check that ensures files do not contain banned words."""
 
@@ -123,19 +123,29 @@
         print('=' * 40)
         print(path)
         for match in matches:
-            print(f'Found banned word "{match.word}" on line {match.line}')
+            print(
+                f'Found non-inclusive word "{match.word}" on line {match.line}'
+            )
 
     if found_words:
+        print()
+        print("""
+Individual lines can be ignored with "inclusive-language: ignore". Blocks can be
+ignored with "inclusive-language: disable" and reenabled with
+"inclusive-language: enable".
+""".strip())
+        # Re-enable just in case: banned-words: enable.
+
         raise presubmit.PresubmitFailure
 
 
-def banned_words_checker(*words):
+def inclusive_language_checker(*words):
     """Create banned words checker for the given list of banned words."""
 
-    regex = _process_banned_words(*words)
+    regex = _process_inclusive_language(*words)
 
-    def banned_words(  # pylint: disable=redefined-outer-name
+    def inclusive_language(  # pylint: disable=redefined-outer-name
         ctx: presubmit.PresubmitContext):
-        globals()['banned_words'](ctx, regex)
+        globals()['inclusive_language'](ctx, regex)
 
-    return banned_words
+    return inclusive_language
diff --git a/pw_presubmit/py/pw_presubmit/pigweed_presubmit.py b/pw_presubmit/py/pw_presubmit/pigweed_presubmit.py
index d2e0040..5e0e747 100755
--- a/pw_presubmit/py/pw_presubmit/pigweed_presubmit.py
+++ b/pw_presubmit/py/pw_presubmit/pigweed_presubmit.py
@@ -35,8 +35,8 @@
 
 import pw_package.pigweed_packages
 
-from pw_presubmit import banned_words, build, cli, format_code, git_repo
-from pw_presubmit import call, filter_paths, plural, PresubmitContext
+from pw_presubmit import build, cli, format_code, git_repo, call, filter_paths
+from pw_presubmit import inclusive_language, plural, PresubmitContext
 from pw_presubmit import PresubmitFailure, Programs
 from pw_presubmit.install_hook import install_hook
 
@@ -621,7 +621,7 @@
 #
 
 OTHER_CHECKS = (
-    banned_words.banned_words,
+    inclusive_language.inclusive_language,
     # TODO(pwbug/45): Remove clang-tidy from OTHER_CHECKS when it passes.
     clang_tidy,
     # Build that attempts to duplicate the build OSS-Fuzz does. Currently