Ë
    pPêjÒ  ã                  ó„   — d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZmZmZmZmZ dd„Zdd„Zdd	„Zdd
„Zy)é    )Úannotations)ÚClassIR)Ú
Dependency)ÚFuncIR)ÚAssignÚCallCÚPrimitiveOp)ÚRStructÚRTupleÚRTypeÚRUnionÚRVecc                ó¶  — d}t        | |«      }| j                  D ]»  }|j                  D ]ª  }t        |t        «      rJ d«       ‚t        |t
        «      r:|j                  �.|j                  D ]  }|€
t        «       }|j                  |«       Œ! t        |j                  |«      }t        |t        «      sŒ‹t        |j                  j                  |«      }Œ¬ Œ½ |S )a‡  Find implicit dependencies that need to be imported.

    Using primitives or types defined in librt submodules such as "librt.base64"
    requires dependency imports (e.g., capsule imports).

    Note that a module can depend on a librt module even if it doesn't explicitly
    import it, for example via re-exported names or via return types of functions
    defined in other modules.
    NzLowered IR is expected)Úfind_type_dependenciesÚblocksÚopsÚ
isinstancer	   r   ÚdependenciesÚsetÚaddÚcollect_type_depsÚtyper   Údest)ÚfnÚdepsÚblockÚopÚdeps        ú`/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypyc/analysis/capsule_deps.pyÚfind_implicit_op_dependenciesr    
   sÅ   € ð $(€Dä! " dÓ+€Dà—‘ò 
=ˆØ—)‘)ò 		=ˆBÜ! "¤kÔ2ÐLÐ4LÓLÐ2Ü˜"œeÔ$¨¯©Ð)DØŸ?™?ò "�CØ�|Ü"›u˜Ø—H‘H˜S•Mð"ô % R§W¡W¨dÓ3ˆDÜ˜"œfÕ%Ü(¨¯©¯©°tÓ<‘ñ		=ð
=ð €Kó    c                óÐ   — | j                   j                  j                  D ]  }t        |j                  |«      }Œ t        | j                   j                  j
                  |«      }|S )zºFind dependencies from RTypes in function signatures.

    Some RTypes (e.g., those for librt types) have associated dependencies
    that need to be imported when the type is used.
    )ÚdeclÚsigÚargsr   r   Úret_type)r   r   Úargs      r   r   r   &   sR   € ð �w‰w�{‰{×Ñò 1ˆÜ  §¡¨4Ó0‰ð1ô ˜RŸW™WŸ[™[×1Ñ1°4Ó8€DØ€Kr!   c                ó‚   — d}| j                   D ]-  }|j                  j                  «       D ]  }t        ||«      }Œ Œ/ |S )z-Find dependencies from class attribute types.N)ÚmroÚ
attributesÚvaluesr   )Úclr   ÚbaseÚ	attr_types       r   Úfind_class_dependenciesr/   4   sI   € à#'€DØ—‘ò 6ˆØŸ™×/Ñ/Ó1ò 	6ˆIÜ$ Y°Ó5‰Dñ	6ð6ð €Kr!   c                óà  — | j                   �.| j                   D ]  }|€
t        «       }|j                  |«       Œ! t        | t        «      r| j
                  D ]  }t        ||«      }Œ |S t        | t        «      r| j                  D ]  }t        ||«      }Œ |S t        | t        «      r| j                  D ]  }t        ||«      }Œ |S t        | t        «      rt        | j                  |«      }|S )zHCollect dependencies from an RType, recursively checking compound types.)r   r   r   r   r   Úitemsr   r   Útypesr
   r   Ú	item_type)Útypr   r   Úitems       r   r   r   =   sñ   € à
×ÑÐ#Ø×#Ñ#ò 	ˆCØˆ|Ü“u�Ø�H‰H�S�Mð	ô �#”vÔØ—I‘Iò 	1ˆDÜ$ T¨4Ó0‰Dð	1ð €Kô 
�CœÔ	 Ø—I‘Iò 	1ˆDÜ$ T¨4Ó0‰Dð	1ð €Kô 
�CœÔ	!Ø—I‘Iò 	1ˆDÜ$ T¨4Ó0‰Dð	1ð €Kô 
�CœÔ	Ü  §¡°Ó5ˆØ€Kr!   N)r   r   Úreturnúset[Dependency] | None)r   r   r   r7   r6   r7   )r,   r   r6   r7   )r4   r   r   r7   r6   r7   )Ú
__future__r   Úmypyc.ir.class_irr   Úmypyc.ir.depsr   Úmypyc.ir.func_irr   Úmypyc.ir.opsr   r   r	   Úmypyc.ir.rtypesr
   r   r   r   r   r    r   r/   r   © r!   r   ú<module>r?      s1   ðÝ "å %Ý $Ý #ß 3Ñ 3ß @Õ @óó8óôr!   