parameters: (self, tr, *futures)
docstring: This Future will be set when all of the given futures have been set.
          If this is called more than once on a Future, it is cumulative - the
          Future will be set when all of the Futures passed to any .join() are set.
docstring_summary: This Future will be set when all of the given futures have been set.
          If this is called more than once on a Future, it is cumulative - the
          Future will be set when all of the Futures passed to any .join() are set.
docstring_tokens: This Future will be set when all of the given futures have been set . If this is called more than once on a Future it is cumulative - the Future will be set when all of the Futures passed to any . join () are set .
function: def join(self, tr, *futures):
          """This Future will be set when all of the given futures have been set.
          If this is called more than once on a Future, it is cumulative - the
          Future will be set when all of the Futures passed to any .join() are set."""
          if self.system_access:
              tr.options.set_access_system_keys()
          assert futures
          if self.is_set(tr):
              return
          del tr[self.prefix["bl"][""].key()]
          self._join(tr, futures)
function_tokens: def join ( self , tr , * futures ) : if self . system_access : tr . options . set_access_system_keys ( ) assert futures if self . is_set ( tr ) : return del tr [ self . prefix [ "bl" ] [ "" ] . key ( ) ] self . _join ( tr , futures )