def push_stream(self, stream_id, promised_stream_id, request_headers):
        if not self.remote_settings.enable_push:
            raise ProtocolError("Remote peer has disabled stream push")

        self.state_machine.process_input(ConnectionInputs.SEND_PUSH_PROMISE)
        stream = self._get_stream_by_id(stream_id)

        # We need to prevent users pushing streams in response to streams that
        # they themselves have already pushed: see #163 and RFC 7540 § 6.6. The
        # easiest way to do that is to assert that the stream_id is not even:
        # this shortcut works because only servers can push and the state
        # machine will enforce this.
        if (stream_id % 2) == 0:
            raise ProtocolError("Cannot recursively push streams.")

        new_stream = self._begin_new_stream(
            promised_stream_id, AllowedStreamIDs.EVEN
        )
        self.streams[promised_stream_id] = new_stream

        frames = stream.push_stream_in_band(
            promised_stream_id, request_headers, self.encoder
        )
        new_frames = new_stream.locally_pushed()
        self._prepare_for_sending(frames + new_frames)
Widget should not restore a value from a url other than the one specified.
dataset/ETHPy150Open python-hyper/hyper-h2/h2/connection.py/H2Connection.push_stream--crossover with--dataset/ETHPy150Open caktus/django-sticky-uploads/stickyuploads/tests/test_widgets.py/StickyUploadWidgetTestCase.test_value_from_wrong_urls