| Server IP : 217.160.0.135 / Your IP : 216.73.217.85 Web Server : Apache System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64 User : sws1074145052 ( 1074145052) PHP Version : 8.3.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /lib/python3/dist-packages/psutil/tests/__pycache__/ |
Upload File : |
�
�bic�0 � �� � d Z ddlZddlZddlZddlZddlZddlmZ ddlZddlm Z ddlm
Z
ddlmZ ddlmZ ddl
mZ dd l
mZ dd
lmZ ddlmZ ddlmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z ddlm!Z! ddlm"Z" ddlm#Z# ddlm$Z$ ddlm%Z% ddlm&Z& erd � Z"d!� Z' G d"� d#e� � Z(e# ej) ed$� � ej) eoe d%� � G d&� d'e(� � � � � � � � Z* ej) ed(� � G d)� d*e*� � � � Z+ G d+� d,e(� � Z,e-d-k rdd.l.m/Z/ e/e0� � dS dS )/a:
Notes about unicode handling in psutil
======================================
Starting from version 5.3.0 psutil adds unicode support, see:
https://github.com/giampaolo/psutil/issues/1040
The notes below apply to *any* API returning a string such as
process exe(), cwd() or username():
* all strings are encoded by using the OS filesystem encoding
(sys.getfilesystemencoding()) which varies depending on the platform
(e.g. "UTF-8" on macOS, "mbcs" on Win)
* no API call is supposed to crash with UnicodeDecodeError
* instead, in case of badly encoded data returned by the OS, the
following error handlers are used to replace the corrupted characters in
the string:
* Python 3: sys.getfilesystemencodeerrors() (PY 3.6+) or
"surrogatescape" on POSIX and "replace" on Windows
* Python 2: "replace"
* on Python 2 all APIs return bytes (str type), never unicode
* on Python 2, you can go back to unicode by doing:
>>> unicode(p.exe(), sys.getdefaultencoding(), errors="replace")
For a detailed explanation of how psutil handles unicode see #1040.
Tests
=====
List of APIs returning or dealing with a string:
('not tested' means they are not tested to deal with non-ASCII strings):
* Process.cmdline()
* Process.connections('unix')
* Process.cwd()
* Process.environ()
* Process.exe()
* Process.memory_maps()
* Process.name()
* Process.open_files()
* Process.username() (not tested)
* disk_io_counters() (not tested)
* disk_partitions() (not tested)
* disk_usage(str)
* net_connections('unix')
* net_if_addrs() (not tested)
* net_if_stats() (not tested)
* net_io_counters() (not tested)
* sensors_fans() (not tested)
* sensors_temperatures() (not tested)
* users() (not tested)
* WindowsService.binpath() (not tested)
* WindowsService.description() (not tested)
* WindowsService.display_name() (not tested)
* WindowsService.name() (not tested)
* WindowsService.status() (not tested)
* WindowsService.username() (not tested)
In here we create a unicode path with a funky non-ASCII name and (where
possible) make psutil return it back (e.g. on name(), exe(), open_files(),
etc.) and make sure that:
* psutil never crashes with UnicodeDecodeError
* the returned path matches
� N)�closing)�BSD)�OPENBSD)�POSIX)�WINDOWS)�PY3)�u)�APPVEYOR)�ASCII_FS)�
CI_TESTING)�HAS_CONNECTIONS_UNIX)�HAS_ENVIRON)�HAS_MEMORY_MAPS)�INVALID_UNICODE_SUFFIX)�PYPY��
TESTFN_PREFIX)�UNICODE_SUFFIX)�PsutilTestCase)�bind_unix_socket)�chdir)�copyload_shared_lib)�
create_exe)�
get_testfn)�
safe_mkdir��safe_rmpath)� serialrun)�skip_on_access_denied)�spawn_testproc)� terminatec �n � ddl m} || � � S # t $ r t j � � Y d S w xY w)Nr r )�psutil.testsr �WindowsError� traceback� print_exc)�path�rms �;/usr/lib/python3/dist-packages/psutil/tests/test_unicode.pyr r s s[ � � 3�2�2�2�2�2� "��2�d�8�8�O��� "� "� "���!�!�!�!�!�!� "���s �
�4�4c �� � d}t | �� � } t |� � t |� � t |g�� � }t j ||dz � � t |dz � � |�t
|� � t |� � dS # t t f$ r$ Y |�t
|� � t |� � dS w xY w# |�t
|� � t |� � w xY w)z`Return True if both the fs and the subprocess module can
deal with a unicode file name.
N��suffix��cmdz-2TF) r r r r �shutil�copyfiler! �UnicodeEncodeError�IOError)r, �sproc�testfns r) �try_unicoder5 � s � �
�E�
�v�
&�
&�
&�F�
��F�����6�����F�8�,�,�,�������
�.�.�.��F�T�M�"�"�"� ����e�����F�������
��(� � � �� ���e�����F�����������
���e�����F�������s$ �AB �C�!C �C�C �"C*c � � e Zd ZdZd� ZdS )�BaseUnicodeTestNc �j � | j �)t | j � � s| � d� � �d S d S )Nzcan't handle unicode str)�funky_suffixr5 �skipTest)�selfs r) �setUpzBaseUnicodeTest.setUp� sF � ���(��t�0�1�1�
@��m�m�$>�?�?�?� )�(�
@�
@� )�__name__�
__module__�__qualname__r9 r<