def get_composition_smart_repository_session(self, repository_id, proxy):
if repository_id is None:<EOL><INDENT>raise NullArgument()<EOL><DEDENT>if not self.supports_composition_smart_repository():<EOL><INDENT>raise Unimplemented()<EOL><DEDENT>try:<EOL><INDENT>from . import sessions<EOL><DEDENT>except ImportError:<EOL><INDENT>raise  <EOL><DEDENT>proxy = self._convert_proxy(proxy)<EOL>try:<EOL><INDENT>session = sessions.CompositionSmartRepositorySession(repository_id, proxy, runtime=self._runtime)<EOL><DEDENT>except AttributeError:<EOL><INDENT>raise  <EOL><DEDENT>return session<EOL>
Gets a composition smart repository session for the given
        repository.

        arg:    repository_id (osid.id.Id): the Id of the repository
        arg     proxy (osid.proxy.Proxy): a proxy
        return: (osid.repository.CompositionSmartRepositorySession) - a
                CompositionSmartRepositorySession
        raise:  NotFound - repository_id not found
        raise:  NullArgument - repository_id is null
        raise:  OperationFailed - unable to complete request
        raise:  Unimplemented - supports_composition_smart_repository()
                false
        compliance: optional - This method must be implemented if
                    supports_composition_smart_repository() is true.