class_docstr: Abstract ``Pipeline`` class to be inherited.
  
  # TODO: Consider adding a Unicode normalization as a default first Process
  
  >>> from cltk.core.data_types import Process, Pipeline
  >>> from cltk.languages.utils import get_lang
  >>> from cltk.tokenizers import LatinTokenizationProcess
  >>> a_pipeline = Pipeline(description="A custom Latin pipeline", processes=[LatinTokenizationProcess], language=get_lang("lat"))
  >>> a_pipeline.description
  'A custom Latin pipeline'
  >>> issubclass(a_pipeline.processes[0], Process)
  True
class_docstr_tok: ["Abstract","``","Pipeline","``","class","to","be","inherited",".","#","TODO",":","Consider","adding","a","Unicode","normalization","as","a","default","first","Process",">",">",">","from","cltk.core.data_types","import","Process",",","Pipeline",">",">",">","from","cltk.languages.utils","import","get_lang",">",">",">","from","cltk.tokenizers","import","LatinTokenizationProcess",">",">",">","a_pipeline","=","Pipeline","(","description=","''","A","custom","Latin","pipeline","''",",","processes=","[","LatinTokenizationProcess","]",",","language=get_lang","(","``","lat","''",")",")",">",">",">","a_pipeline.description","'","A","custom","Latin","pipeline'",">",">",">","issubclass","(","a_pipeline.processes","[","0","]",",","Process",")","True"]
code: def add_process(self, process: Type[Process]):
      self.processes.append(process)
  
imports: import importlib
  from abc import ABC, abstractmethod
  from collections import defaultdict
  from dataclasses import dataclass, field
  from typing import Dict, List, Optional, Type, Union
  import numpy
  import stringcase
  from cltk.morphology.morphosyntax import MorphosyntacticFeatureBundle
  from cltk.morphology.universal_dependencies_features import MorphosyntacticFeature
label_desc: Use image node_id 1 for calling the Pipeline obj's underlying member method code with example usage: obj.add_process(process) without return types