bpo-33892: Doc: Use gender neutral words (GH-7770)

(cherry picked from commit 5092439c2cb32112a5869b138011d38491db90a9)

Co-authored-by: Andrés Delfino <adelfino@gmail.com>
diff --git a/Doc/library/hashlib.rst b/Doc/library/hashlib.rst
index 0ed0482..da941e5 100644
--- a/Doc/library/hashlib.rst
+++ b/Doc/library/hashlib.rst
@@ -546,7 +546,7 @@
     preparer, generates all or part of a message to be signed by a second
     party, the message signer. If the message preparer is able to find
     cryptographic hash function collisions (i.e., two messages producing the
-    same hash value), then she might prepare meaningful versions of the message
+    same hash value), then they might prepare meaningful versions of the message
     that would produce the same hash value and digital signature, but with
     different results (e.g., transferring $1,000,000 to an account, rather than
     $10). Cryptographic hash functions have been designed with collision
diff --git a/Doc/library/optparse.rst b/Doc/library/optparse.rst
index 337c7c2..e9b82ee 100644
--- a/Doc/library/optparse.rst
+++ b/Doc/library/optparse.rst
@@ -1677,7 +1677,7 @@
 problems with the option or its argument(s).  :mod:`optparse` catches this and
 terminates the program, printing the error message you supply to stderr.  Your
 message should be clear, concise, accurate, and mention the option at fault.
-Otherwise, the user will have a hard time figuring out what he did wrong.
+Otherwise, the user will have a hard time figuring out what they did wrong.
 
 
 .. _optparse-callback-example-1:
diff --git a/Doc/library/re.rst b/Doc/library/re.rst
index 3a051dd..8228d91 100644
--- a/Doc/library/re.rst
+++ b/Doc/library/re.rst
@@ -1447,8 +1447,8 @@
 ^^^^^^^^^^^^^^^^^^^
 
 :func:`findall` matches *all* occurrences of a pattern, not just the first
-one as :func:`search` does.  For example, if one was a writer and wanted to
-find all of the adverbs in some text, he or she might use :func:`findall` in
+one as :func:`search` does.  For example, if a writer wanted to
+find all of the adverbs in some text, they might use :func:`findall` in
 the following manner::
 
    >>> text = "He was carefully disguised but captured quickly by police."
@@ -1462,8 +1462,8 @@
 If one wants more information about all matches of a pattern than the matched
 text, :func:`finditer` is useful as it provides :ref:`match objects
 <match-objects>` instead of strings.  Continuing with the previous example, if
-one was a writer who wanted to find all of the adverbs *and their positions* in
-some text, he or she would use :func:`finditer` in the following manner::
+a writer wanted to find all of the adverbs *and their positions* in
+some text, they would use :func:`finditer` in the following manner::
 
    >>> text = "He was carefully disguised but captured quickly by police."
    >>> for m in re.finditer(r"\w+ly", text):
diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst
index 9b16a8b..3964d02 100644
--- a/Doc/library/ssl.rst
+++ b/Doc/library/ssl.rst
@@ -1991,7 +1991,7 @@
 
 A certificate contains information about two principals.  It contains the name
 of a *subject*, and the subject's public key.  It also contains a statement by a
-second principal, the *issuer*, that the subject is who he claims to be, and
+second principal, the *issuer*, that the subject is who they claim to be, and
 that this is indeed the subject's public key.  The issuer's statement is signed
 with the issuer's private key, which only the issuer knows.  However, anyone can
 verify the issuer's statement by finding the issuer's public key, decrypting the