Ë
    Ìi5  ã                   ó
   — d „ Z y)c                 óÖ   — g }g }| j                  «       D ]A  \  }}|j                  |«      } ||«      sŒ |j                  |«       |j                  |«       ŒC | j                  ||«      S )aÿ  
    Create a new :class:`.TableSet` with only those tables that pass a test.

    This works by applying a sequence of :class:`Aggregation` instances to
    each table. The resulting dictionary of properties is then passed to
    the :code:`test` function.

    This method does not modify the underlying tables in any way.

    :param aggregations:
        A list of tuples in the format :code:`(name, aggregation)`, where
        each :code:`aggregation` is an instance of :class:`.Aggregation`.
    :param test:
        A function that takes a dictionary of aggregated properties and returns
        :code:`True` if it should be included in the new :class:`.TableSet`.
    :type test:
        :class:`function`
    :returns:
        A new :class:`.TableSet`.
    )ÚitemsÚ	aggregateÚappendÚ_fork)ÚselfÚaggregationsÚtestÚ
new_tablesÚnew_keysÚkeyÚtableÚpropss           úV/var/www/html/strategist-ai/venv/lib/python3.12/site-packages/agate/tableset/having.pyÚhavingr      si   € ð* €JØ€Hà—j‘j“lò !‰
ˆˆUØ—‘ Ó-ˆá��;Ø×Ñ˜eÔ$Ø�O‰O˜CÕ ð!ð �:‰:�j (Ó+Ð+ó    N)r   © r   r   ú<module>r      s
   ðó,r   