Plan

izumi.distage.model.plan.Plan
See thePlan companion object
final case class Plan(plan: DG[DIKey, ExecutableOp], input: PlannerInput) extends CachedHashcode

Attributes

Companion
object
Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Members list

Value members

Concrete methods

def allImports: Iterable[ImportDependency]
Implicitly added by DIPlanAssertionSyntax

Get all imports (unresolved dependencies).

Get all imports (unresolved dependencies).

Note, presence of imports does not always mean that a plan is invalid, imports may be fulfilled by a parent Locator, by BootstrapContext, or they may be materialized by a custom izumi.distage.model.provisioning.strategies.ImportStrategy

Attributes

See also

distage.Injector#assert for a check you can use in tests

Implicitly added by DIPlanSyntax

Effective bindings of this plan

Effective bindings of this plan

Attributes

Implicitly added by DIPlanSyntax

Original bindings of this plan

Original bindings of this plan

Attributes

override def equals(obj: Any): Boolean

Checks whether this instance is equal to that. This universal equality method is defined in AnyRef.

Checks whether this instance is equal to that. This universal equality method is defined in AnyRef.

Attributes

Definition Classes
Equals -> Any
def importedKeys: Set[DIKey]
Implicitly added by DIPlanResolveImportsSyntax
def incompatibleEffectType[F[_] : TagK]: Option[NEList[MonadicOp]]
Implicitly added by DIPlanAssertionSyntax

Check for any make[_].fromEffect or make[_].fromResource bindings that are incompatible with the passed F.

Check for any make[_].fromEffect or make[_].fromResource bindings that are incompatible with the passed F.

An effect is compatible if it's a subtype of F or is a type equivalent to izumi.fundamentals.platform.functional.Identity (e.g. cats.Id)

Type parameters

F

effect type to check against

Attributes

Returns

a non-empty list of operations incompatible with F if present

def keys: Set[DIKey]
Implicitly added by DIPlanSyntax
def locateImports(locator: Locator): Plan
Implicitly added by DIPlanResolveImportsSyntax
def render()(implicit ev: Renderable[Plan]): String
Implicitly added by DIPlanSyntax
def renderAllDeps(): String
Implicitly added by DIPlanSyntax
def renderDependees(key: DIKey): String
Implicitly added by DIPlanSyntax
def renderDeps(key: DIKey): String
Implicitly added by DIPlanSyntax
def replaceWithImports(keys: Set[DIKey]): Plan
Implicitly added by DIPlanSyntax

Be careful, don't use this method blindly, it can disrupt graph connectivity when used improperly.

Be careful, don't use this method blindly, it can disrupt graph connectivity when used improperly.

Proper usage assume that keys contains complete subgraph reachable from graph roots.

Attributes

Note

this processes a completed plan, you can achieve a similar transformation before planning by removing the keys from ModuleBase: module -- keys

def resolveImport[T : Tag](instance: T): Plan
Implicitly added by DIPlanResolveImportsSyntax
def resolveImport[T : Tag](id: Identifier)(instance: T): Plan
Implicitly added by DIPlanResolveImportsSyntax
def resolveImports(f: PartialFunction[ImportDependency, Any]): Plan
Implicitly added by DIPlanResolveImportsSyntax
def stepsUnordered: Iterable[ExecutableOp]
Implicitly added by DIPlanSyntax
override def toString: String

Returns a string representation of the object.

Returns a string representation of the object.

The default representation is platform dependent.

Attributes

Returns

a string representation of the object.

Definition Classes
Any
def toposort: Seq[DIKey]
Implicitly added by DIPlanSyntax

This is only used by plan formatter

This is only used by plan formatter

Attributes

def unresolvedImports(ignoredImports: DIKey => Boolean = ...): Option[NEList[ImportDependency]]
Implicitly added by DIPlanAssertionSyntax

Check for any unresolved dependencies.

Check for any unresolved dependencies.

If this returns None then the wiring is generally correct, modulo runtime exceptions in user code, and Injector.produce should succeed.

However, presence of imports does not always mean that a plan is invalid, imports may be fulfilled by a parent Locator, by BootstrapContext, or they may be materialized by a custom izumi.distage.model.provisioning.strategies.ImportStrategy

Attributes

Returns

a non-empty list of unresolved imports if present

See also

distage.Injector#assert for a check you can use in tests

Inherited methods

def productElementNames: Iterator[String]

An iterator over the names of all the elements of this product.

An iterator over the names of all the elements of this product.

Attributes

Inherited from:
Product
def productIterator: Iterator[Any]

An iterator over all the elements of this product.

An iterator over all the elements of this product.

Attributes

Returns

in the default implementation, an Iterator[Any]

Inherited from:
Product

Inherited fields

final lazy override val hashCode: Int

Calculates a hash code value for the object.

Calculates a hash code value for the object.

The default hashing algorithm is platform dependent.

Note that it is allowed for two objects to have identical hash codes (o1.hashCode.equals(o2.hashCode)) yet not be equal (o1.equals(o2) returns false). A degenerate implementation could always return 0. However, it is required that if two objects are equal (o1.equals(o2) returns true) that they have identical hash codes (o1.hashCode.equals(o2.hashCode)). Therefore, when overriding this method, be sure to verify that the behavior is consistent with the equals method.

Attributes

Returns

the hash code value for this object.

Inherited from:
CachedHashcode