docs: def valid_words_set(path_to_user_dictionary=None,
                      user_dictionary_words=None):
      """Get a set of valid words.
  
      If :path_to_user_dictionary: is specified, then the newline-separated
      words in that file will be added to the word set.
      """
      def read_file(binary_file):
          """Read a binary file for its text lines."""
          return binary_file.read().decode("ascii").splitlines()
  
      try:
          valid = _valid_words_cache[path_to_user_dictionary]
          return valid
      except KeyError:
          words = set()
          with resource_stream("polysquarelinter", "en_US.txt") as words_file:
              words |= set(["".join(l).lower() for l in read_file(words_file)])
  
          if path_to_user_dictionary:
              # Add both case-sensitive and case-insensitive variants
              # of words in user dictionary as they may be checked as
              # though they are a regular word and a technical word.
              words |= set([w.lower() for w in user_dictionary_words])
              words |= user_dictionary_words
  
          _valid_words_cache[path_to_user_dictionary] = words
          return words