class_docstr: Base class for classes that can be initialized with a :class:`Config`
  instance that configures their behavior.
  
  :class:`Configurable` subclasses must obey the following rules:
  
      (a) Configurable class ``Foo`` has an associated Config class
          ``FooConfig`` that is importable from the same namespace as ``Foo``
  
      (b) Configurable class ``Foo`` must be initializable via the syntax
          ``Foo(config)``, where config is a ``FooConfig`` instance
  
  Args:
      config: a :class:`Config`
class_docstr_tok: ["Base","class","for","classes","that","can","be","initialized","with","a",":","class",":","`","Config","`","instance","that","configures","their","behavior",".",":","class",":","`","Configurable","`","subclasses","must","obey","the","following","rules",":","(","a",")","Configurable","class","``","Foo","``","has","an","associated","Config","class","``","FooConfig","``","that","is","importable","from","the","same","namespace","as","``","Foo","``","(","b",")","Configurable","class","``","Foo","``","must","be","initializable","via","the","syntax","``","Foo","(","config",")","``",",","where","config","is","a","``","FooConfig","``","instance","Args",":","config",":","a",":","class",":","`","Config","`"]
code: def __init__(self, config):
      self.validate(config)
      self.config = config
  
imports: import logging
  import os
  import pytz
  import eta
  import eta.core.config
  import fiftyone.constants
  import fiftyone.core.utils
label_desc: Use image node_id 1 to create a new Configurable object from inherited base classes: etac with example: obj = Configurable(config)