MCPcopy Index your code
hub / github.com/python/cpython / write

Method write

Lib/asyncio/selector_events.py:1058–1096  ·  view source on GitHub ↗
(self, data)

Source from the content-addressed store, hash-verified

1056 self.close()
1057
1058 def write(self, data):
1059 if not isinstance(data, (bytes, bytearray, memoryview)):
1060 raise TypeError(f'data argument must be a bytes, bytearray, or memoryview '
1061 f'object, not {type(data).__name__!r}')
1062 if self._eof:
1063 raise RuntimeError('Cannot call write() after write_eof()')
1064 if self._empty_waiter is not None:
1065 raise RuntimeError('unable to write; sendfile is in progress')
1066 if not data:
1067 return
1068
1069 if self._conn_lost:
1070 if self._conn_lost >= constants.LOG_THRESHOLD_FOR_CONNLOST_WRITES:
1071 logger.warning('socket.send() raised exception.')
1072 self._conn_lost += 1
1073 return
1074
1075 if not self._buffer:
1076 # Optimization: try to send now.
1077 try:
1078 n = self._sock.send(data)
1079 except (BlockingIOError, InterruptedError):
1080 pass
1081 except (SystemExit, KeyboardInterrupt):
1082 raise
1083 except BaseException as exc:
1084 self._fatal_error(exc, 'Fatal write error on socket transport')
1085 return
1086 else:
1087 data = memoryview(data)[n:]
1088 if not data:
1089 return
1090 # Not all was written; register write handler.
1091 self._add_writer(self._sock_fd, self._write_ready)
1092
1093 # Add it to the buffer.
1094 self._buffer.append(data)
1095 self._buffer_size += len(data)
1096 self._maybe_pause_protocol()
1097
1098 def _get_sendmsg_buffer(self):
1099 return itertools.islice(self._buffer, SC_IOV_MAX)

Callers

nothing calls this directly

Calls 6

_maybe_pause_protocolMethod · 0.80
warningMethod · 0.45
sendMethod · 0.45
_fatal_errorMethod · 0.45
_add_writerMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected