code: def optional_names(self):
          
          for name, var in self.items():
              if var.get('optional', False):
                  yield name
docs: Get a list of the variables that are defined, but not required