Repository: pytoolz/toolz (language: python)

Issue:
replace blacklist/whitelist with exclude/include or denylist/allowlist
The old terminology is being dropped [across tools and languages](https://www.zdnet.com/article/mysql-drops-master-slave-and-blacklist-whitelist-terminology/) so it would be nice to update this library as well. 


Discussion / hints:
I strongly agree with this.

Since this would be a breaking change (`pick(whitelist=...)` wouldn't work anymore), it should be implemented before v1.0.0 comes out.

@domoritz have you seen other instances (aside from blacklist/whitelist) that should be replaced?
@eriknw what do you think?
In the meantime, you could support both and update the docs to use the new terminology. I have not looked through the whole codebase. Google has a list of words to avoid at https://developers.google.com/style/word-list and guidelines for writing inclusive docs at  https://developers.google.com/style/inclusive-documentation.

Fix patch:
diff --git a/doc/source/tips-and-tricks.rst b/doc/source/tips-and-tricks.rst
index 3c33608d..0a5b88d9 100644
--- a/doc/source/tips-and-tricks.rst
+++ b/doc/source/tips-and-tricks.rst
@@ -6,17 +6,17 @@ a part of toolz's standard offerings. This section presents
 a few of these recipes.
 
 
-* .. function:: pick(whitelist, dictionary)
+* .. function:: pick(allowlist, dictionary)
 
   Return a subset of the provided dictionary with keys contained in the
-  whitelist.
+  allowlist.
 
   ::
 
     from toolz import keyfilter
 
-    def pick(whitelist, d):
-        return keyfilter(lambda k: k in whitelist, d)
+    def pick(allowlist, d):
+        return keyfilter(lambda k: k in allowlist, d)
 
 
   Example:
@@ -26,17 +26,17 @@ a few of these recipes.
     {'a': 1, 'b': 2}
 
 
-* .. function:: omit(blacklist, dictionary)
+* .. function:: omit(denylist, dictionary)
 
   Return a subset of the provided dictionary with keys *not* contained in the
-  blacklist.
+  denylist.
 
   ::
 
     from toolz import keyfilter
 
-    def omit(blacklist, d):
-        return keyfilter(lambda k: k not in blacklist, d)
+    def omit(denylist, d):
+        return keyfilter(lambda k: k not in denylist, d)
 
 
   Example:


Test patch:
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index a1f52b3d..6c1303e7 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -30,7 +30,24 @@ jobs:
           coverage run -m pytest --doctest-modules toolz/
           pytest bench/
           pep8 --ignore="E731,W503,E402" --exclude=conf.py,tests,examples,bench -r --show-source .
-      - name: Coverate
+      - name: Coverage
+        env:
+          GITHUB_TOKEN: ${{ secrets.github_token }}
+          COVERALLS_FLAG_NAME: ${{ matrix.python-version}}
+          COVERALLS_PARALLEL: true
         if: (! contains(matrix.python-version, 'pypy'))
         run: |
           coverage report --show-missing --fail-under=100
+          pip install coveralls
+          coverage report --show-missing
+          coveralls --service=github
+
+  finish:
+    needs: test
+    runs-on: ubuntu-latest
+    steps:
+      - name: Coveralls Finished
+        uses: coverallsapp/github-action@master
+        with:
+          github-token: ${{ secrets.github_token }}
+          parallel-finished: true
diff --git a/toolz/tests/test_inspect_args.py b/toolz/tests/test_inspect_args.py
index da985044..93408eb5 100644
--- a/toolz/tests/test_inspect_args.py
+++ b/toolz/tests/test_inspect_args.py
@@ -386,16 +386,16 @@ def test_introspect_builtin_modules():
     mods = [builtins, functools, itertools, operator, toolz,
             toolz.functoolz, toolz.itertoolz, toolz.dicttoolz, toolz.recipes]
 
-    blacklist = set()
+    denylist = set()
 
-    def add_blacklist(mod, attr):
+    def add_denylist(mod, attr):
         if hasattr(mod, attr):
-            blacklist.add(getattr(mod, attr))
+            denylist.add(getattr(mod, attr))
 
-    add_blacklist(builtins, 'basestring')
-    add_blacklist(builtins, 'NoneType')
-    add_blacklist(builtins, '__metaclass__')
-    add_blacklist(builtins, 'sequenceiterator')
+    add_denylist(builtins, 'basestring')
+    add_denylist(builtins, 'NoneType')
+    add_denylist(builtins, '__metaclass__')
+    add_denylist(builtins, 'sequenceiterator')
 
     def is_missing(modname, name, func):
         if name.startswith('_') and not name.startswith('__'):
@@ -412,7 +412,7 @@ def is_missing(modname, name, func):
                     and func.__module__ is not None
                     and modname in func.__module__
                     and is_partial_args(func, (), {}) is not True
-                    and func not in blacklist)
+                    and func not in denylist)
         except AttributeError:
             return False