def remove_entry_from_installed_repository_dependencies_of_installed_repositories( self, repository ):
     """
     Remove an entry from self.installed_repository_dependencies_of_installed_repositories.  A side-effect of this method
     is removal of appropriate value items from self.installed_dependent_repositories_of_installed_repositories.
     """
     # Remove tuples defining this repository from value lists in self.installed_dependent_repositories_of_installed_repositories.
     repository_tup = repository_dependency_util.get_repository_tuple_for_installed_repository_manager( repository )
     tool_shed, name, owner, installed_changeset_revision = repository_tup
     altered_installed_dependent_repositories_of_installed_repositories = {}
     for r_tup, v_tups in self.installed_dependent_repositories_of_installed_repositories.items():
         if repository_tup in v_tups:
             debug_msg = "Removing entry for revision %s of repository %s owned by %s " % \
                 ( installed_changeset_revision, name, owner )
             r_tool_shed, r_name, r_owner, r_installed_changeset_revision = r_tup
             debug_msg += "from the dependent list for revision %s of repository %s owned by %s " % \
                 ( r_installed_changeset_revision, r_name, r_owner )
             debug_msg += "in installed_repository_dependencies_of_installed_repositories."
             log.debug( debug_msg )                
             v_tups.remove( repository_tup )
         altered_installed_dependent_repositories_of_installed_repositories[ r_tup ] = v_tups
     self.installed_dependent_repositories_of_installed_repositories = \
         altered_installed_dependent_repositories_of_installed_repositories
     # Remove this repository's entry from self.installed_repository_dependencies_of_installed_repositories.
     if repository_tup in self.installed_repository_dependencies_of_installed_repositories:
         debug_msg = "Removing entry for revision %s of repository %s owned by %s " % ( installed_changeset_revision, name, owner )
         debug_msg += "from installed_repository_dependencies_of_installed_repositories."
         log.debug( debug_msg )
         del self.installed_repository_dependencies_of_installed_repositories[ repository_tup ]
 def add_entry_to_installed_repository_dependencies_of_installed_repositories( self, repository ):
     """
     Add an entry to self.installed_repository_dependencies_of_installed_repositories.  A side-effect of this method
     is the population of self.installed_dependent_repositories_of_installed_repositories.  Since this method discovers
     all repositories required by the received repository, it can use the list to add entries to the reverse dictionary.
     """
     repository_tup = repository_dependency_util.get_repository_tuple_for_installed_repository_manager( repository )
     tool_shed, name, owner, installed_changeset_revision = repository_tup
     # Get the list of repository dependencies for this repository.
     status = self.install_model.ToolShedRepository.installation_status.INSTALLED
     repository_dependency_tups = \
         repository_dependency_util.get_repository_dependency_tups_for_installed_repository( self.app, repository, status=status )
     # Add an entry to self.installed_repository_dependencies_of_installed_repositories.
     if repository_tup not in self.installed_repository_dependencies_of_installed_repositories:
         debug_msg = "Adding an entry for revision %s of repository %s owned by %s " % ( installed_changeset_revision, name, owner )
         debug_msg += "to installed_repository_dependencies_of_installed_repositories."
         log.debug( debug_msg )
         self.installed_repository_dependencies_of_installed_repositories[ repository_tup ] = repository_dependency_tups
     # Use the repository_dependency_tups to add entries to the reverse dictionary
     # self.installed_dependent_repositories_of_installed_repositories.
     for required_repository_tup in repository_dependency_tups:
         debug_msg = "Appending revision %s of repository %s owned by %s " % ( installed_changeset_revision, name, owner )
         debug_msg += "to all dependent repositories in installed_dependent_repositories_of_installed_repositories."
         log.debug( debug_msg )
         if required_repository_tup in self.installed_dependent_repositories_of_installed_repositories:
             self.installed_dependent_repositories_of_installed_repositories[ required_repository_tup ].append( repository_tup )
         else:
             self.installed_dependent_repositories_of_installed_repositories[ required_repository_tup ] = [ repository_tup ]
 def remove_entry_from_tool_dependencies_of_installed_repositories( self, repository ):
     """Remove an entry from self.tool_dependencies_of_installed_repositories."""
     repository_tup = repository_dependency_util.get_repository_tuple_for_installed_repository_manager( repository )
     if repository_tup in self.tool_dependencies_of_installed_repositories:
         tool_shed, name, owner, installed_changeset_revision = repository_tup
         debug_msg = "Removing entry for revision %s of repository %s owned by %s from tool_dependencies_of_installed_repositories." % \
             ( installed_changeset_revision, name, owner )
         log.debug( debug_msg )
         del self.tool_dependencies_of_installed_repositories[ repository_tup ]
 def add_entry_to_repository_dependencies_of_installed_repositories( self, repository ):
     """Add an entry to self.repository_dependencies_of_installed_repositories."""
     repository_tup = repository_dependency_util.get_repository_tuple_for_installed_repository_manager( repository )
     if repository_tup not in self.repository_dependencies_of_installed_repositories:
         tool_shed, name, owner, installed_changeset_revision = repository_tup
         debug_msg = "Adding an entry for revision %s of repository %s owned by %s " % ( installed_changeset_revision, name, owner )
         debug_msg += "to repository_dependencies_of_installed_repositories."
         log.debug( debug_msg )
         repository_dependency_tups = \
             repository_dependency_util.get_repository_dependency_tups_for_installed_repository( self.app, repository, status=None )
         self.repository_dependencies_of_installed_repositories[ repository_tup ] = repository_dependency_tups
 def add_entry_to_tool_dependencies_of_installed_repositories( self, repository ):
     """Add an entry to self.tool_dependencies_of_installed_repositories."""
     repository_tup = repository_dependency_util.get_repository_tuple_for_installed_repository_manager( repository )
     if repository_tup not in self.tool_dependencies_of_installed_repositories:
         tool_shed, name, owner, installed_changeset_revision = repository_tup
         debug_msg = "Adding an entry for revision %s of repository %s owned by %s " % ( installed_changeset_revision, name, owner )
         debug_msg += "to tool_dependencies_of_installed_repositories."
         log.debug( debug_msg )
         tool_dependency_tups = []
         for tool_dependency in repository.tool_dependencies:
             tool_dependency_tup = tool_dependency_util.get_tool_dependency_tuple_for_installed_repository_manager( tool_dependency )
             tool_dependency_tups.append( tool_dependency_tup )
         self.tool_dependencies_of_installed_repositories[ repository_tup ] = tool_dependency_tups
 def handle_tool_dependency_install( self, repository, tool_dependency ):
     """Load the dependency relationships for a tool dependency that was just installed independently of its containing repository."""
     # The received repository must have a status of 'Installed'.  The value of tool_dependency.status will either be
     # 'Installed' or 'Error', but we only need to change the in-memory dictionaries if it is 'Installed'.
     if tool_dependency.is_installed:
         # Populate self.installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies.
         self.add_entry_to_installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies( tool_dependency )
         # Populate self.installed_tool_dependencies_of_installed_repositories.
         repository_tup = repository_dependency_util.get_repository_tuple_for_installed_repository_manager( repository )
         tool_dependency_tup = tool_dependency_util.get_tool_dependency_tuple_for_installed_repository_manager( tool_dependency )
         if repository_tup in self.installed_tool_dependencies_of_installed_repositories:
             self.installed_tool_dependencies_of_installed_repositories[ repository_tup ].append( tool_dependency_tup )
         else:
             self.installed_tool_dependencies_of_installed_repositories[ repository_tup ] = [ tool_dependency_tup ]
 def add_entry_to_installed_tool_dependencies_of_installed_repositories( self, repository ):
     """Add an entry to self.installed_tool_dependencies_of_installed_repositories."""
     repository_tup = repository_dependency_util.get_repository_tuple_for_installed_repository_manager( repository )
     if repository_tup not in self.installed_tool_dependencies_of_installed_repositories:
         tool_shed, name, owner, installed_changeset_revision = repository_tup
         debug_msg = "Adding an entry for revision %s of repository %s owned by %s " % ( installed_changeset_revision, name, owner )
         debug_msg += "to installed_tool_dependencies_of_installed_repositories."
         log.debug( debug_msg )
         installed_tool_dependency_tups = []
         for tool_dependency in repository.tool_dependencies:
             if tool_dependency.status == self.app.install_model.ToolDependency.installation_status.INSTALLED:
                 tool_dependency_tup = tool_dependency_util.get_tool_dependency_tuple_for_installed_repository_manager( tool_dependency )
                 installed_tool_dependency_tups.append( tool_dependency_tup )
         self.installed_tool_dependencies_of_installed_repositories[ repository_tup ] = installed_tool_dependency_tups