code: def tuple_of(*generators):
      
  
      class TupleOfGenerators(ArbitraryInterface):
          """
          A closure class around the generators specified above, which
          generates a tuple of the generators.
          """
  
          @classmethod
          def arbitrary(cls):
              """
              Generate a tuple of the enclosed generators.
              """
              return tuple([
                  arbitrary(generator) for generator in generators
                  if generator is not tuple
              ])
  
      TupleOfGenerators.__name__ = ''.join([
          'tuple_of(', ', '.join(generator.__name__ for generator in generators),
          ')'
      ])
      return TupleOfGenerators
docs: Generates a tuple by generating values for each of the specified
      generators.
      This is a class factory, it makes a class which is a closure around the
      specified generators.