File: //usr/lib/python3/dist-packages/django/db/migrations/__pycache__/state.cpython-310.pyc
o
3�akb � @ s d dl Z d dlmZ d dlmZ d dlmZmZ d dl m
Z
d dlmZ d dl
mZ d dlmZmZ d d lmZ d d
lmZ d dlmZ d dlmZ d
dlmZ d dd�Zdd� Zdd� Zdd� ZG dd� d�Z G dd� de�Z!G dd� de�Z"G dd� d�Z#dS )!� N)�contextmanager)� AppConfig)�Apps�apps)�settings)�models)�RECURSIVE_RELATIONSHIP_CONSTANT)�
DEFAULT_NAMES�normalize_together)�make_model_tuple)�cached_property)�
import_string)�get_docs_version� )�InvalidBasesError� c C sF t | t�r| �dd�}t|�dkrt|�S ||d fS | jj| jjfS )N�.r � r )�
isinstance�str�split�len�tuple�_meta� app_label�
model_name)�modelr r � r �</usr/lib/python3/dist-packages/django/db/migrations/state.py�_get_app_label_and_model_name s
r c C s� dd� | � � D �}t� }| jjddd�D ]}|jr0|jdur0t|jt�s0|�|j � |�
|j� q| j}|jrA| |v rA|�
|j� |S )zEReturn all models that have a direct relationship to the given model.c S s g | ]
}t |tj�r|�qS r )�
issubclassr �Model)�.0�subclassr r r �
<listcomp> s
��z'_get_related_models.<locals>.<listcomp>T)�include_parents�include_hiddenN)
�__subclasses__�setr �
get_fields�is_relation�
related_modelr r �addr �append�proxy�concrete_model)�m�related_models�related_fields_models�f�optsr r r �_get_related_models s ��r5 c C s dd� t | �D �S )zq
Return a list of typical (app_label, model_name) tuples for all related
models for the given model.
c S s h | ]
}|j j|j jf�qS r )r r r )r"