<commit_before>package ducttape.hyperdag.meta

import collection._
import ducttape.hyperdag.walker.PackedMetaDagWalker
import ducttape.hyperdag.walker.UnpackedMetaDagWalker
import ducttape.hyperdag.HyperDag
import ducttape.hyperdag.PackedVertex
import ducttape.hyperdag.HyperEdge
import ducttape.hyperdag.walker.ConstraintFilter
import ducttape.hyperdag.walker.MetaVertexFilter
import ducttape.hyperdag.walker.ComboTransformer
import ducttape.hyperdag.walker.HyperEdgeFilter
import ducttape.hyperdag.walker.DefaultConstraintFilter
import ducttape.hyperdag.walker.DefaultMetaVertexFilter
import ducttape.hyperdag.walker.DefaultComboTransformer
import ducttape.hyperdag.walker.DefaultHyperEdgeFilter
import ducttape.hyperdag.walker.DefaultToD
import ducttape.hyperdag.walker.DefaultSelectionFilter
import ducttape.hyperdag.walker.SelectionFilter

/** essentially -- an AND-OR HyperDAG 
 * an implementation of MetaHyperDAGs based on transforming
 * meta-edges into epsilon vertices (but these are hidden from the user)
 *
 * immutable
 *
 * walker will note when epsilon vertices are completed, but not actually
 * return them to the user */
// TODO: Pass filters to dag walker
class MetaHyperDag[V,M,H,E](private[hyperdag] val delegate: HyperDag[V,H,E],
                            private[hyperdag] val metaEdgesByEpsilon: Map[PackedVertex[_],MetaEdge[M,H,E]],
                            private[hyperdag] val epsilonEdges: Set[HyperEdge[H,E]]) {

  // don't include epsilon vertices<commit_msg>Relax visibility to make debugging easier<commit_after>package ducttape.hyperdag.meta

import collection._
import ducttape.hyperdag.walker.PackedMetaDagWalker
import ducttape.hyperdag.walker.UnpackedMetaDagWalker
import ducttape.hyperdag.HyperDag
import ducttape.hyperdag.PackedVertex
import ducttape.hyperdag.HyperEdge
import ducttape.hyperdag.walker.ConstraintFilter
import ducttape.hyperdag.walker.MetaVertexFilter
import ducttape.hyperdag.walker.ComboTransformer
import ducttape.hyperdag.walker.HyperEdgeFilter
import ducttape.hyperdag.walker.DefaultConstraintFilter
import ducttape.hyperdag.walker.DefaultMetaVertexFilter
import ducttape.hyperdag.walker.DefaultComboTransformer
import ducttape.hyperdag.walker.DefaultHyperEdgeFilter
import ducttape.hyperdag.walker.DefaultToD
import ducttape.hyperdag.walker.DefaultSelectionFilter
import ducttape.hyperdag.walker.SelectionFilter

/** essentially -- an AND-OR HyperDAG 
 * an implementation of MetaHyperDAGs based on transforming
 * meta-edges into epsilon vertices (but these are hidden from the user)
 *
 * immutable
 *
 * walker will note when epsilon vertices are completed, but not actually
 * return them to the user */
// TODO: Pass filters to dag walker
class MetaHyperDag[V,M,H,E](val delegate: HyperDag[V,H,E],
                            private[hyperdag] val metaEdgesByEpsilon: Map[PackedVertex[_],MetaEdge[M,H,E]],
                            private[hyperdag] val epsilonEdges: Set[HyperEdge[H,E]]) {

  // don't include epsilon vertices
{'fraction_non_alphanumeric': 0.07461692205196535, 'fraction_numerical': 0.0, 'mean_word_length': 5.2693110647181625, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6537823', 'n_tokens_mistral': 951, 'n_tokens_neox': 865, 'n_words': 199}