h$1      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklNone/>?graphulaGraphula accepts constraints for various uses. Frontends do not always utilize these constraints.  is a universal class that all types inhabit. It has no behavior and no additional constraints.graphulaHandle key generation for  and 8Ths could be a single-parameter class, but carrying the a2 around lets us give a better error message when node is called instead of  nodeKeyed.graphula#Generate keys using the database's DEFAULT strategygraphulaGenerate keys using the m instance for the ngraphula&Always explicitly pass an external key graphulaA constraint provided to log details of the graph to some form of persistence. This is used by runGraphulaLogged to store graph nodes as on p valuesgraphulaExplicit instance for $ to give an actionable error message Rendered: Cannot generate a value of type @X@ using @node@ since instance HasDependencies X where type KeySource X = 'SourceExternal Possible fixes include: @ Use @nodeKeyed@ instead of @node@ @ Change @KeySource X@ to 'SourceDefault or 'SourceArbitrary    NonegraphulaRun a generatorThis is akin to , but utilizing graphula's generation. The size passed to the generator is always 30; if you want another size then you should explicitly use .None$ #$'(-./056789<>?graphula%For entities that only have singular ' graphula)Options for generating an individual node ; can be created and combined with the Monoidal operations q and r.  a1 <- node A () mempty a2 <- node A () $ edit $ a -> a { someField = True } a3 <- node @A () $ ensure $ (== True) . someField #graphula,Could not satisfy constraints defined using 9$graphula0Could not satisfy database constraints on insert%graphula+Abstract over how keys are generated using  or 'graphula5A data type that contains values to be injected into a via )(. The default generic implementation of ) supports tuples as '2. Data types with a single dependency should use  as a 1-tuple.note: The contents of a tuple must be ordered as they appear in the definition of a.(graphula-Specify the method for resolving a node's key This can be 'SourceDefault -- automatically generate keys from the database 'SourceArbitrary -- automatically generate keys using m1 'SourceExternal -- explicitly pass a key using 7 Most types will use  or  . Only use 6 if the key for a value is always defined externally.)graphulaAssign values from the ' collection to a value. )! must be an idempotent operation.Law:3(\x d -> x `dependsOn` d `dependsOn` d) = dependsOn0graphula%A constraint over lists of nodes for 1, and !.7Helpful for defining utility functions over many nodes. mkABC :: (GraphulaContext m '[A, B, C]) => m (Node m C) mkABC = do a <- node A () mempty b <- node B (only a) mempty node @C (a, b) $ edit $ n -> n { cc = "spanish" } 3graphulaA wrapper around a graphula frontend that produces finalizers to remove graph nodes on error or completion. An idempotent graph produces no data outside of its own closure. runGraphIdentity . runGraphulaIdempotentT . runGraphulaT $ do node @PancakeBreakfast () mempty 4graphulaAn extension of 2- that logs all nodes to a temporary file on s and re-throws the s.5graphula A variant of 4 that accepts a file path to logged to instead of utilizing a temp file.6graphula:Generate a value with data dependencies. This leverages & to insert the specified data in the generated value. All dependency data is inserted after any editing operations. node @Dog (ownerId, veterinarianId) mempty node @Dog (ownerId, veterinarianId) $ edit $ \dog -> dog {name = "fido"}4A value that has an externally managed key must use 7 instead.7graphulaGenerate a value with data dependencies given an externally managed key. This leverages & to insert the specified data in the generated value. All dependency data is inserted after any editing operations. someKey <- generateKey node @Cat someKey (ownerId, veterinarianId) mempty anotherKey <- generateKey node @Cat anotherKey (ownerId, veterinarianId) $ edit $ \cat -> cat {name = "milo"}6A value that has an automatically managed key may use 6 instead.8graphula)Modify the node after it's been generated a  -node @A () $ edit $ a - a { someField = True } 9graphula1Require a node to satisfy the specified predicate 1a <- node @A () $ ensure $ (== True) . someField 2graphula Optional seedgraphulaDatabase runner'  !"#$%&'()*+,-./0123456789:'67!0 89&'()%:1 -./2,45*3+"#$None />feggfe Safe-Inferred$tuvwxyz{      !"#$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|z}~zzz&graphula-2.0.0.3-D6l6jV46Rn7yPAzqW9uDjGraphula.InternalGraphula.ArbitraryGraphula Graphula.KeyTest.QuickCheckgenerateresizePaths_graphula NoConstraintGenerateKeyInternal KeyConstraint generateKey KeySourceType SourceDefaultSourceArbitrarySourceExternalGHasDependenciesgenericDependsOnMonadGraphulaBackendLoggingaskGenlogNode$$fGHasDependenciesProxyProxynodeVoid($fGHasDependenciesProxyProxyEitherEither)$fGHasDependenciesProxyProxyEitherEither0)$fGHasDependenciesProxyProxyEitherEither1&$fGHasDependenciesProxyProxyVoidEither'$fGHasDependenciesProxyProxyVoidEither0$$fGHasDependenciesRecursiveProxy()()'$fGHasDependenciesRecursiveProxy(,)deps&$fGHasDependenciesRecursiveProxy(,)(,))$fGHasDependenciesProxyProxyEitherEither2%$fGenerateKeyInternalSourceArbitrarya$fNoConstrainta$$fGenerateKeyInternalSourceExternala#$fGenerateKeyInternalSourceDefaultaOnlyfromOnly NodeOptions GraphulaNodeGenerationFailure'GenerationFailureMaxAttemptsToConstrain$GenerationFailureMaxAttemptsToInsert GenerateKeyHasDependencies Dependencies KeySource dependsOnGraphulaLoggedTGraphulaIdempotentT GraphulaTMonadGraphulaFrontendinsertremoveGraphulaContext MonadGraphula runGraphulaTrunGraphulaIdempotentTrunGraphulaLoggedTrunGraphulaLoggedWithFileTnode nodeKeyededitensureonly $fMonadGraphulaFrontendGraphulaT$fMonadGraphulaBackendGraphulaT$fMonadUnliftIOGraphulaT$fMonadTransGraphulaT*$fMonadGraphulaFrontendGraphulaIdempotentT$fMonadTransGraphulaIdempotentT"$fMonadUnliftIOGraphulaIdempotentT&$fMonadGraphulaFrontendGraphulaLoggedT%$fMonadGraphulaBackendGraphulaLoggedT$fMonadTransGraphulaLoggedT$fGenerateKeya$fExceptionGenerationFailure $fMonoidKendo$fSemigroupKendo$fMonoidNodeOptions$fSemigroupNodeOptions$fEqOnly $fShowOnly $fOrdOnly $fGenericOnly $fFunctorOnly$fFoldableOnly$fTraversableOnly$fGenericNodeOptions$fGenericKendo$fShowGenerationFailure$fEqGenerationFailure$fFunctorGraphulaLoggedT$fApplicativeGraphulaLoggedT$fMonadGraphulaLoggedT$fMonadIOGraphulaLoggedT!$fMonadReaderIORefGraphulaLoggedT$fFunctorGraphulaIdempotentT $fApplicativeGraphulaIdempotentT$fMonadGraphulaIdempotentT$fMonadIOGraphulaIdempotentT%$fMonadReaderIORefGraphulaIdempotentT$fFunctorGraphulaT$fApplicativeGraphulaT$fMonadGraphulaT$fMonadIOGraphulaT$fMonadReaderArgsGraphulaTKeyskeysonlyKey$fEntityKeys(,,,)$fEntityKeys(,,)$fEntityKeys(,)$fEntityKeysOnly$fEntityKeysEntity(QuickCheck-2.14.2-9AhRAvZYUVyKu9RkvnejmbTest.QuickCheck.Arbitrary Arbitrary)persistent-2.11.0.2-9jMEQ1GDXPPOtrSNIro96$Database.Persist.Class.PersistEntityKeybaseGHC.ShowShow GHC.TypeLitsTextGHC.Base<>memptyGHC.Exception.Type Exceptionversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName