o
    ¯N iK  ã                   @   s
  U d Z ddlmZmZmZmZmZmZmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZV ddlWmXZXmYZYmZZZm[Z[ ddl\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZl ddlmmnZn g d¢ZoeZepeqd	< 	 eZereqd
< 	 eZereqd< dS )z#OpTree: Optimized PyTree Utilities.é    )Ú	accessorsÚdataclassesÚ	functoolsÚintegrationsÚpytreeÚtreespecÚtyping)Ú	AutoEntryÚDataclassEntryÚFlattenedEntryÚGetAttrEntryÚGetItemEntryÚMappingEntryÚNamedTupleEntryÚPyTreeAccessorÚPyTreeEntryÚSequenceEntryÚStructSequenceEntry)AÚMAX_RECURSION_DEPTHÚNONE_IS_LEAFÚNONE_IS_NODEÚ
all_leavesÚbroadcast_commonÚbroadcast_prefixÚprefix_errorsÚtree_accessorsÚtree_allÚtree_anyÚtree_broadcast_commonÚtree_broadcast_mapÚ tree_broadcast_map_with_accessorÚtree_broadcast_map_with_pathÚtree_broadcast_prefixÚtree_flattenÚtree_flatten_one_levelÚtree_flatten_with_accessorÚtree_flatten_with_pathÚtree_is_leafÚ	tree_iterÚtree_leavesÚtree_mapÚ	tree_map_Útree_map_with_accessorÚtree_map_with_accessor_Útree_map_with_pathÚtree_map_with_path_Útree_maxÚtree_minÚtree_partitionÚ
tree_pathsÚtree_reduceÚtree_replace_nonesÚtree_structureÚtree_sumÚtree_transposeÚtree_transpose_mapÚ tree_transpose_map_with_accessorÚtree_transpose_map_with_pathÚtree_unflattenÚtreespec_accessorsÚtreespec_childÚtreespec_childrenÚtreespec_defaultdictÚtreespec_dequeÚtreespec_dictÚtreespec_entriesÚtreespec_entryÚtreespec_from_collectionÚtreespec_is_leafÚtreespec_is_one_levelÚtreespec_is_prefixÚtreespec_is_strict_leafÚtreespec_is_suffixÚtreespec_leafÚtreespec_listÚtreespec_namedtupleÚtreespec_noneÚtreespec_one_levelÚtreespec_ordereddictÚtreespec_pathsÚtreespec_structseqÚtreespec_transformÚtreespec_tuple)Údict_insertion_orderedÚregister_pytree_nodeÚregister_pytree_node_classÚunregister_pytree_node)ÚCustomTreeNodeÚFlattenFuncÚPyTreeÚ	PyTreeDefÚ
PyTreeKindÚ
PyTreeSpecÚPyTreeTypeVarÚUnflattenFuncÚis_namedtupleÚis_namedtuple_classÚis_namedtuple_instanceÚis_structseqÚis_structseq_classÚis_structseq_instanceÚnamedtuple_fieldsÚstructseq_fields)Ú__version__)`r   r   r   r#   r&   r%   r<   r(   r)   r6   r3   r   r'   r   r*   r+   r.   r/   r,   r-   r5   r2   r8   r9   r;   r:   r"   r   r   r   r   r!   r    r4   r7   r0   r1   r   r   r$   r   rQ   r=   rC   rD   r?   r>   rO   rS   rF   rI   rG   rH   rJ   rK   rN   rT   rL   rB   rM   rP   r@   rA   rR   rE   r   r   r   r   r	   r   r   r   r   r
   r   rV   rW   rX   rU   r^   r\   r]   r[   r_   rY   rZ   r`   ra   rb   rc   rg   rd   re   rf   rh   r   r   r   N)sÚ__doc__Úoptreer   r   r   r   r   r   r   Úoptree.accessorsr	   r
   r   r   r   r   r   r   r   r   r   Ú
optree.opsr   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   Úoptree.registryrU   rV   rW   rX   Úoptree.typingrY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   Úoptree.versionri   Ú__all__ÚintÚ__annotations__Úbool© ru   ru   úC/home/ubuntu/.local/lib/python3.10/site-packages/optree/__init__.pyÚ<module>   s   $4þ CHg