def describe_configuration_settings(ApplicationName=None, TemplateName=None,
    EnvironmentName=None):
    """
    Returns a description of the settings for the specified configuration set, that is, either a configuration template or the configuration set associated with a running environment.
    When describing the settings for the configuration set associated with a running environment, it is possible to receive two sets of setting descriptions. One is the deployed configuration set, and the other is a draft configuration of an environment that is either in the process of deployment or that failed to deploy.
    Related Topics
    See also: AWS API Documentation
    
    Examples
    The following operation retrieves configuration settings for an environment named my-env:
    Expected Output:
    
    :example: response = client.describe_configuration_settings(
        ApplicationName='string',
        TemplateName='string',
        EnvironmentName='string'
    )
    
    
    :type ApplicationName: string
    :param ApplicationName: [REQUIRED]
            The application for the environment or configuration template.
            

    :type TemplateName: string
    :param TemplateName: The name of the configuration template to describe.
            Conditional: You must specify either this parameter or an EnvironmentName, but not both. If you specify both, AWS Elastic Beanstalk returns an InvalidParameterCombination error. If you do not specify either, AWS Elastic Beanstalk returns a MissingRequiredParameter error.
            

    :type EnvironmentName: string
    :param EnvironmentName: The name of the environment to describe.
            Condition: You must specify either this or a TemplateName, but not both. If you specify both, AWS Elastic Beanstalk returns an InvalidParameterCombination error. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.
            

    :rtype: dict
    :return: {
        'ConfigurationSettings': [
            {
                'SolutionStackName': 'string',
                'PlatformArn': 'string',
                'ApplicationName': 'string',
                'TemplateName': 'string',
                'Description': 'string',
                'EnvironmentName': 'string',
                'DeploymentStatus': 'deployed'|'pending'|'failed',
                'DateCreated': datetime(2015, 1, 1),
                'DateUpdated': datetime(2015, 1, 1),
                'OptionSettings': [
                    {
                        'ResourceName': 'string',
                        'Namespace': 'string',
                        'OptionName': 'string',
                        'Value': 'string'
                    },
                ]
            },
        ]
    }
    
    
    :returns: 
    ApplicationName (string) -- [REQUIRED]
    The application for the environment or configuration template.
    
    TemplateName (string) -- The name of the configuration template to describe.
    Conditional: You must specify either this parameter or an EnvironmentName, but not both. If you specify both, AWS Elastic Beanstalk returns an InvalidParameterCombination error. If you do not specify either, AWS Elastic Beanstalk returns a MissingRequiredParameter error.
    
    EnvironmentName (string) -- The name of the environment to describe.
    Condition: You must specify either this or a TemplateName, but not both. If you specify both, AWS Elastic Beanstalk returns an InvalidParameterCombination error. If you do not specify either, AWS Elastic Beanstalk returns MissingRequiredParameter error.
    
    
    """
    pass
