File: //opt/cloudlinux/venv/lib64/python3.11/site-packages/flake8/__pycache__/processor.cpython-311.pyc
�
    � h/@  �                   �,  � d Z ddlZddlZddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ddlmZ ddlmZ dd	l
mZ dd
l
mZ ddlmZ  ej        e�  �        Z eej        ej        g�  �        Z eej        ej        ej        ej        g�  �        Ze
eeeeef         f                  Zee
e         e
e         ef         Z G d� d
�  �        Zdej         de!fd�Z"dej         de!fd�Z#dej         de!fd�Z$dededefd�Z%dedefd�Z&dedefd�Z'dS )zFModule containing our file processor that tokenizes a file for checks.�    N)�Any)�Dict)�	Generator)�List)�Optional)�Tuple)�defaults)�utils)�LoadedPluginc            	       �|  � e Zd ZdZdZ	 d(dedej        dee	e                  ddfd�Z
ede	ej
                 fd	��   �         Zej        d
eded         fd��   �         Zd)d
�Zd)d�Zd)d�Zdeddfd�Zdeddfd�Zd)d�Zdefd�Zdej        fd�Z de!eeef         fd�Z"dej
        deeddf         fd�Z#de$ee%f         de$ee&f         de$ee&f         fd�Z'deej
        ddf         fd�Z(dedede$eef         fd �Z)d
edee         fd!�Z*defd"�Z+de	e         fd#�Z,de	e         fd$�Z-de	e         fd%�Z.de%fd&�Z/d)d'�Z0dS )*�
FileProcessora>  Processes a file and holdes state.
    This processes a file by generating tokens, logical and physical lines,
    and AST trees. This also provides a way of passing state about the file
    to checks expecting that state. Any public attribute on this object can
    be requested by a plugin. The known public attributes are:
    - :attr:`blank_before`
    - :attr:`blank_lines`
    - :attr:`checker_state`
    - :attr:`indent_char`
    - :attr:`indent_level`
    - :attr:`line_number`
    - :attr:`logical_line`
    - :attr:`max_line_length`
    - :attr:`max_doc_length`
    - :attr:`multiline`
    - :attr:`noqa`
    - :attr:`previous_indent_level`
    - :attr:`previous_logical`
    - :attr:`previous_unindented_logical_line`
    - :attr:`tokens`
    - :attr:`file_tokens`
    - :attr:`total_lines`
    - :attr:`verbose`
    FN�filename�options�lines�returnc                 �  � || _         || _        |�|n| �                    �   �         | _        | �                    �   �          d| _        d| _        i | _        i | _        |j	        | _	        d| _
        d| _        |j        | _        d| _
        d| _        |j        | _        |j        | _        d| _        d| _        d| _        d| _        g | _        t-          | j        �  �        | _        |j        | _        ddi| _        d| _        d| _        dS )z]Initialice our file processor.
        :param filename: Name of the file to process
        Nr   � F�
logical lines)r   r   �
read_linesr   �
strip_utf_bom�blank_before�blank_lines�_checker_states�
checker_state�hang_closing�indent_char�indent_level�indent_size�line_number�logical_line�max_line_length�max_doc_length�	multiline�previous_indent_level�previous_logical� previous_unindented_logical_line�tokens�len�total_lines�verbose�
statistics�_file_tokens�_noqa_line_mapping)�selfr   r   r   s       �E/opt/cloudlinux/venv/lib/python3.11/site-packages/flake8/processor.py�__init__zFileProcessor.__init__<