code: def dict_to_schema(schema_dict, required, allow_custom_keys=True, modifier=None):
      
      if modifier:
          modifier = Use(modifier)
  
      def _to(value):
          if isinstance(value, dict):
              d = {}
              for k, v in value.iteritems():
                  if isinstance(k, basestring):
                      k = Required(k) if required else Optional(k)
                  d[k] = _to(v)
              if allow_custom_keys:
                  d[Optional(basestring)] = modifier or object
              schema = Schema(d)
          elif modifier:
              schema = And(value, modifier)
          else:
              schema = value
          return schema
  
      return _to(schema_dict)
docs: Convert a dict of Schemas into a Schema.
  
      Args:
          required (bool): Whether to make schema keys optional or required.
          allow_custom_keys (bool, optional): If True, creates a schema that
              allows custom items in dicts.
          modifier (callable): Functor to apply to dict values - it is applied
              via `Schema.Use`.
  
      Returns:
          A `Schema` object.