// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.machinelearningservices.models;

import com.azure.core.annotation.Fluent;
import com.azure.core.util.logging.ClientLogger;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;

/** The ModelPythonSection model. */
@Fluent
public class ModelPythonSection {
    @JsonIgnore private final ClientLogger logger = new ClientLogger(ModelPythonSection.class);

    /*
     * The python interpreter path to use if an environment build is not
     * required. The path specified gets used to call the user script.
     */
    @JsonProperty(value = "interpreterPath")
    private String interpreterPath;

    /*
     * True means that AzureML reuses an existing python environment; False
     * means that AzureML will create a python environment based on the Conda
     * dependencies specification.
     */
    @JsonProperty(value = "userManagedDependencies")
    private Boolean userManagedDependencies;

    /*
     * A JObject containing Conda dependencies.
     */
    @JsonProperty(value = "condaDependencies")
    private Object condaDependencies;

    /*
     * The baseCondaEnvironment property.
     */
    @JsonProperty(value = "baseCondaEnvironment")
    private String baseCondaEnvironment;

    /**
     * Get the interpreterPath property: The python interpreter path to use if an environment build is not required. The
     * path specified gets used to call the user script.
     *
     * @return the interpreterPath value.
     */
    public String interpreterPath() {
        return this.interpreterPath;
    }

    /**
     * Set the interpreterPath property: The python interpreter path to use if an environment build is not required. The
     * path specified gets used to call the user script.
     *
     * @param interpreterPath the interpreterPath value to set.
     * @return the ModelPythonSection object itself.
     */
    public ModelPythonSection withInterpreterPath(String interpreterPath) {
        this.interpreterPath = interpreterPath;
        return this;
    }

    /**
     * Get the userManagedDependencies property: True means that AzureML reuses an existing python environment; False
     * means that AzureML will create a python environment based on the Conda dependencies specification.
     *
     * @return the userManagedDependencies value.
     */
    public Boolean userManagedDependencies() {
        return this.userManagedDependencies;
    }

    /**
     * Set the userManagedDependencies property: True means that AzureML reuses an existing python environment; False
     * means that AzureML will create a python environment based on the Conda dependencies specification.
     *
     * @param userManagedDependencies the userManagedDependencies value to set.
     * @return the ModelPythonSection object itself.
     */
    public ModelPythonSection withUserManagedDependencies(Boolean userManagedDependencies) {
        this.userManagedDependencies = userManagedDependencies;
        return this;
    }

    /**
     * Get the condaDependencies property: A JObject containing Conda dependencies.
     *
     * @return the condaDependencies value.
     */
    public Object condaDependencies() {
        return this.condaDependencies;
    }

    /**
     * Set the condaDependencies property: A JObject containing Conda dependencies.
     *
     * @param condaDependencies the condaDependencies value to set.
     * @return the ModelPythonSection object itself.
     */
    public ModelPythonSection withCondaDependencies(Object condaDependencies) {
        this.condaDependencies = condaDependencies;
        return this;
    }

    /**
     * Get the baseCondaEnvironment property: The baseCondaEnvironment property.
     *
     * @return the baseCondaEnvironment value.
     */
    public String baseCondaEnvironment() {
        return this.baseCondaEnvironment;
    }

    /**
     * Set the baseCondaEnvironment property: The baseCondaEnvironment property.
     *
     * @param baseCondaEnvironment the baseCondaEnvironment value to set.
     * @return the ModelPythonSection object itself.
     */
    public ModelPythonSection withBaseCondaEnvironment(String baseCondaEnvironment) {
        this.baseCondaEnvironment = baseCondaEnvironment;
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
    }
}
