관리-도구
편집 파일: objectmodel.cpython-311.pyc
� �܋f�y � �� � d Z ddlmZ ddlZddlZddlZddlZddlZddlm Z ddl mZmZ ddl Z ddl mZmZmZ ddlmZmZ ddlmZmZmZ dd lmZ dd lmZ ej d� � Z ej d� � Zej d k rddl m Z nddl!m Z erddl mZ ddl"m#Z# dZ$ e%e$� � Z&d� Z'dMd�Z( G d� d� � Z) G d� de)� � Z* G d� de)� � Z+ G d� de)� � Z, G d� d e)� � Z- G d!� d"e)� � Z. G d#� d$e)� � Z/ G d%� d&e+� � Z0 G d'� d(e+e/� � Z1 G d)� d*e1� � Z2 G d+� d,e)� � Z3 G d-� d.e3� � Z4 G d/� d0e4� � Z5 G d1� d2e4� � Z6 G d3� d4e4� � Z7 G d5� d6e4� � Z8i d7e5�d8e7�d9e8�d:e6�d;e6�d<e6�d=e6�d>e6�d?e6�d@e6�dAe6�dBe6�dCe6�dDe6�dEe6�dFe6�dGe6�e6e6dH��Z9 G dI� dJe)� � Z: G dK� dLe)� � Z;dS )Na� Data object model, as per https://docs.python.org/3/reference/datamodel.html. This module describes, at least partially, a data object model for some of astroid's nodes. The model contains special attributes that nodes such as functions, classes, modules etc have, such as __doc__, __class__, __module__ etc, being used when doing attribute lookups over nodes. For instance, inferring `obj.__class__` will first trigger an inference of the `obj` variable. If it was successfully inferred, then an attribute `__class__ will be looked for in the inferred object. This is the part where the data model occurs. The model is attached to those nodes and the lookup mechanism will try to see if attributes such as `__class__` are defined by the model or not. If they are defined, the model will be requested to return the corresponding value of that attribute. Thus the model can be viewed as a special part of the lookup mechanism. � )�annotationsN)� lru_cache)� TYPE_CHECKING�Any)�bases�nodes�util)�InferenceContext�copy_context)�AttributeInferenceError�InferenceError� NoDefault)�AstroidManager)�node_classes�objects�builder)� � )�Literal)r )�Property�attr_c �( �� t j | �� � ��fd�t |� � � � � D � � }d� |� � � D � � }�� t t ||� � � � � � �S )N��parentc �<