code: def get_composition_notification_session_for_repository(self, composition_receiver, repository_id, proxy):
          
          if composition_receiver is None or repository_id is None:
              raise NullArgument()
          if not self.supports_composition_notification():
              raise Unimplemented()
          try:
              from . import sessions
          except ImportError:
              raise  # OperationFailed()
          proxy = self._convert_proxy(proxy)
          try:
              session = sessions.CompositionNotificationSession(composition_receiver,
                                                                repository_id,
                                                                proxy,
                                                                runtime=self._runtime)
          except AttributeError:
              raise  # OperationFailed()
          return session
docs: Gets the composition notification session for the given
          repository.
  
          arg:    composition_receiver
                  (osid.repository.CompositionReceiver): the notification
                  callback
          arg:    repository_id (osid.id.Id): the Id of the repository
          arg     proxy (osid.proxy.Proxy): a proxy
          return: (osid.repository.CompositionNotificationSession) - a
                  CompositionNotificationSession
          raise:  NotFound - repository_id not found
          raise:  NullArgument - composition_receiver or repository_id is
                  null
          raise:  OperationFailed - unable to complete request
          raise:  Unimplemented - supports_composition_notification() or
                  supports_visible_federation() is false
          compliance: optional - This method must be implemented if
                      supports_composition_notfication() and
                      supports_visible_federation() are true.