lib/pulp_python_client/api/remotes_python_api.rb



=begin
#Pulp 3 API

#Fetch, Upload, Organize, and Distribute Software Packages

The version of the OpenAPI document: v3
Contact: pulp-list@redhat.com
Generated by: https://openapi-generator.tech
Generator version: 7.10.0

=end

require 'cgi'

module PulpPythonClient
  class RemotesPythonApi
    attr_accessor :api_client

    def initialize(api_client = ApiClient.default)
      @api_client = api_client
    end
    # Add a role
    # Add a role for this object to users/groups.
    # @param python_python_remote_href [String] 
    # @param nested_role [NestedRole] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [NestedRoleResponse]
    def add_role(python_python_remote_href, nested_role, opts = {})
      data, _status_code, _headers = add_role_with_http_info(python_python_remote_href, nested_role, opts)
      data
    end

    # Add a role
    # Add a role for this object to users/groups.
    # @param python_python_remote_href [String] 
    # @param nested_role [NestedRole] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [Array<(NestedRoleResponse, Integer, Hash)>] NestedRoleResponse data, response status code and response headers
    def add_role_with_http_info(python_python_remote_href, nested_role, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: RemotesPythonApi.add_role ...'
      end
      # verify the required parameter 'python_python_remote_href' is set
      if @api_client.config.client_side_validation && python_python_remote_href.nil?
        fail ArgumentError, "Missing the required parameter 'python_python_remote_href' when calling RemotesPythonApi.add_role"
      end
      # verify the required parameter 'nested_role' is set
      if @api_client.config.client_side_validation && nested_role.nil?
        fail ArgumentError, "Missing the required parameter 'nested_role' when calling RemotesPythonApi.add_role"
      end
      # resource path
      local_var_path = '{python_python_remote_href}add_role/'.sub('{' + 'python_python_remote_href' + '}', CGI.escape(python_python_remote_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
      # HTTP header 'Content-Type'
      content_type = @api_client.select_header_content_type(['application/json', 'application/x-www-form-urlencoded', 'multipart/form-data'])
      if !content_type.nil?
          header_params['Content-Type'] = content_type
      end
      header_params[:'X-Task-Diagnostics'] = @api_client.build_collection_param(opts[:'x_task_diagnostics'], :csv) if !opts[:'x_task_diagnostics'].nil?

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:debug_body] || @api_client.object_to_http_body(nested_role)

      # return_type
      return_type = opts[:debug_return_type] || 'NestedRoleResponse'

      # auth_names
      auth_names = opts[:debug_auth_names] || ['basicAuth']

      new_options = opts.merge(
        :operation => :"RemotesPythonApi.add_role",
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: RemotesPythonApi#add_role\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create a python remote
    #  Python Remotes are representations of an external repository of Python content, eg. PyPI.  Fields include upstream repository config. Python Remotes are also used to `sync` from upstream repositories, and contains sync settings.
    # @param python_python_remote [PythonPythonRemote] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [PythonPythonRemoteResponse]
    def create(python_python_remote, opts = {})
      data, _status_code, _headers = create_with_http_info(python_python_remote, opts)
      data
    end

    # Create a python remote
    #  Python Remotes are representations of an external repository of Python content, eg. PyPI.  Fields include upstream repository config. Python Remotes are also used to &#x60;sync&#x60; from upstream repositories, and contains sync settings.
    # @param python_python_remote [PythonPythonRemote] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [Array<(PythonPythonRemoteResponse, Integer, Hash)>] PythonPythonRemoteResponse data, response status code and response headers
    def create_with_http_info(python_python_remote, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: RemotesPythonApi.create ...'
      end
      # verify the required parameter 'python_python_remote' is set
      if @api_client.config.client_side_validation && python_python_remote.nil?
        fail ArgumentError, "Missing the required parameter 'python_python_remote' when calling RemotesPythonApi.create"
      end
      # resource path
      local_var_path = '/pulp/api/v3/remotes/python/python/'

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
      # HTTP header 'Content-Type'
      content_type = @api_client.select_header_content_type(['application/json', 'application/x-www-form-urlencoded', 'multipart/form-data'])
      if !content_type.nil?
          header_params['Content-Type'] = content_type
      end
      header_params[:'X-Task-Diagnostics'] = @api_client.build_collection_param(opts[:'x_task_diagnostics'], :csv) if !opts[:'x_task_diagnostics'].nil?

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:debug_body] || @api_client.object_to_http_body(python_python_remote)

      # return_type
      return_type = opts[:debug_return_type] || 'PythonPythonRemoteResponse'

      # auth_names
      auth_names = opts[:debug_auth_names] || ['basicAuth']

      new_options = opts.merge(
        :operation => :"RemotesPythonApi.create",
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: RemotesPythonApi#create\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete a python remote
    # Trigger an asynchronous delete task
    # @param python_python_remote_href [String] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [AsyncOperationResponse]
    def delete(python_python_remote_href, opts = {})
      data, _status_code, _headers = delete_with_http_info(python_python_remote_href, opts)
      data
    end

    # Delete a python remote
    # Trigger an asynchronous delete task
    # @param python_python_remote_href [String] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [Array<(AsyncOperationResponse, Integer, Hash)>] AsyncOperationResponse data, response status code and response headers
    def delete_with_http_info(python_python_remote_href, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: RemotesPythonApi.delete ...'
      end
      # verify the required parameter 'python_python_remote_href' is set
      if @api_client.config.client_side_validation && python_python_remote_href.nil?
        fail ArgumentError, "Missing the required parameter 'python_python_remote_href' when calling RemotesPythonApi.delete"
      end
      # resource path
      local_var_path = '{python_python_remote_href}'.sub('{' + 'python_python_remote_href' + '}', CGI.escape(python_python_remote_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
      header_params[:'X-Task-Diagnostics'] = @api_client.build_collection_param(opts[:'x_task_diagnostics'], :csv) if !opts[:'x_task_diagnostics'].nil?

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:debug_body]

      # return_type
      return_type = opts[:debug_return_type] || 'AsyncOperationResponse'

      # auth_names
      auth_names = opts[:debug_auth_names] || ['basicAuth']

      new_options = opts.merge(
        :operation => :"RemotesPythonApi.delete",
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: RemotesPythonApi#delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create from Bandersnatch
    #  Takes the fields specified in the Bandersnatch config and creates a Python Remote from it.
    # @param config [File] A Bandersnatch config that may be used to construct a Python Remote.
    # @param name [String] A unique name for this remote
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @option opts [PolicyEnum] :policy The policy to use when downloading content. The possible values include: &#39;immediate&#39;, &#39;on_demand&#39;, and &#39;streamed&#39;. &#39;on_demand&#39; is the default.  * &#x60;immediate&#x60; - When syncing, download all metadata and content now. * &#x60;on_demand&#x60; - When syncing, download metadata, but do not download content now. Instead, download content as clients request it, and save it in Pulp to be served for future client requests. * &#x60;streamed&#x60; - When syncing, download metadata, but do not download content now. Instead,download content as clients request it, but never save it in Pulp. This causes future requests for that same content to have to be downloaded again.
    # @return [PythonPythonRemoteResponse]
    def from_bandersnatch(config, name, opts = {})
      data, _status_code, _headers = from_bandersnatch_with_http_info(config, name, opts)
      data
    end

    # Create from Bandersnatch
    #  Takes the fields specified in the Bandersnatch config and creates a Python Remote from it.
    # @param config [File] A Bandersnatch config that may be used to construct a Python Remote.
    # @param name [String] A unique name for this remote
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @option opts [PolicyEnum] :policy The policy to use when downloading content. The possible values include: &#39;immediate&#39;, &#39;on_demand&#39;, and &#39;streamed&#39;. &#39;on_demand&#39; is the default.  * &#x60;immediate&#x60; - When syncing, download all metadata and content now. * &#x60;on_demand&#x60; - When syncing, download metadata, but do not download content now. Instead, download content as clients request it, and save it in Pulp to be served for future client requests. * &#x60;streamed&#x60; - When syncing, download metadata, but do not download content now. Instead,download content as clients request it, but never save it in Pulp. This causes future requests for that same content to have to be downloaded again.
    # @return [Array<(PythonPythonRemoteResponse, Integer, Hash)>] PythonPythonRemoteResponse data, response status code and response headers
    def from_bandersnatch_with_http_info(config, name, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: RemotesPythonApi.from_bandersnatch ...'
      end
      # verify the required parameter 'config' is set
      if @api_client.config.client_side_validation && config.nil?
        fail ArgumentError, "Missing the required parameter 'config' when calling RemotesPythonApi.from_bandersnatch"
      end
      # verify the required parameter 'name' is set
      if @api_client.config.client_side_validation && name.nil?
        fail ArgumentError, "Missing the required parameter 'name' when calling RemotesPythonApi.from_bandersnatch"
      end
      if @api_client.config.client_side_validation && name.to_s.length < 1
        fail ArgumentError, 'invalid value for "name" when calling RemotesPythonApi.from_bandersnatch, the character length must be great than or equal to 1.'
      end

      # resource path
      local_var_path = '/pulp/api/v3/remotes/python/python/from_bandersnatch/'

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
      # HTTP header 'Content-Type'
      content_type = @api_client.select_header_content_type(['multipart/form-data', 'application/x-www-form-urlencoded'])
      if !content_type.nil?
          header_params['Content-Type'] = content_type
      end
      header_params[:'X-Task-Diagnostics'] = @api_client.build_collection_param(opts[:'x_task_diagnostics'], :csv) if !opts[:'x_task_diagnostics'].nil?

      # form parameters
      form_params = opts[:form_params] || {}
      form_params['config'] = config
      form_params['name'] = name
      form_params['policy'] = opts[:'policy'] if !opts[:'policy'].nil?

      # http body (model)
      post_body = opts[:debug_body]

      # return_type
      return_type = opts[:debug_return_type] || 'PythonPythonRemoteResponse'

      # auth_names
      auth_names = opts[:debug_auth_names] || ['basicAuth']

      new_options = opts.merge(
        :operation => :"RemotesPythonApi.from_bandersnatch",
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: RemotesPythonApi#from_bandersnatch\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # List python remotes
    #  Python Remotes are representations of an external repository of Python content, eg. PyPI.  Fields include upstream repository config. Python Remotes are also used to `sync` from upstream repositories, and contains sync settings.
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @option opts [Integer] :limit Number of results to return per page.
    # @option opts [String] :name Filter results where name matches value
    # @option opts [String] :name__contains Filter results where name contains value
    # @option opts [String] :name__icontains Filter results where name contains value
    # @option opts [String] :name__iexact Filter results where name matches value
    # @option opts [Array<String>] :name__in Filter results where name is in a comma-separated list of values
    # @option opts [String] :name__iregex Filter results where name matches regex value
    # @option opts [String] :name__istartswith Filter results where name starts with value
    # @option opts [String] :name__regex Filter results where name matches regex value
    # @option opts [String] :name__startswith Filter results where name starts with value
    # @option opts [Integer] :offset The initial index from which to return the results.
    # @option opts [Array<String>] :ordering Ordering  * &#x60;pulp_id&#x60; - Pulp id * &#x60;-pulp_id&#x60; - Pulp id (descending) * &#x60;pulp_created&#x60; - Pulp created * &#x60;-pulp_created&#x60; - Pulp created (descending) * &#x60;pulp_last_updated&#x60; - Pulp last updated * &#x60;-pulp_last_updated&#x60; - Pulp last updated (descending) * &#x60;pulp_type&#x60; - Pulp type * &#x60;-pulp_type&#x60; - Pulp type (descending) * &#x60;name&#x60; - Name * &#x60;-name&#x60; - Name (descending) * &#x60;pulp_labels&#x60; - Pulp labels * &#x60;-pulp_labels&#x60; - Pulp labels (descending) * &#x60;url&#x60; - Url * &#x60;-url&#x60; - Url (descending) * &#x60;ca_cert&#x60; - Ca cert * &#x60;-ca_cert&#x60; - Ca cert (descending) * &#x60;client_cert&#x60; - Client cert * &#x60;-client_cert&#x60; - Client cert (descending) * &#x60;client_key&#x60; - Client key * &#x60;-client_key&#x60; - Client key (descending) * &#x60;tls_validation&#x60; - Tls validation * &#x60;-tls_validation&#x60; - Tls validation (descending) * &#x60;username&#x60; - Username * &#x60;-username&#x60; - Username (descending) * &#x60;password&#x60; - Password * &#x60;-password&#x60; - Password (descending) * &#x60;proxy_url&#x60; - Proxy url * &#x60;-proxy_url&#x60; - Proxy url (descending) * &#x60;proxy_username&#x60; - Proxy username * &#x60;-proxy_username&#x60; - Proxy username (descending) * &#x60;proxy_password&#x60; - Proxy password * &#x60;-proxy_password&#x60; - Proxy password (descending) * &#x60;download_concurrency&#x60; - Download concurrency * &#x60;-download_concurrency&#x60; - Download concurrency (descending) * &#x60;max_retries&#x60; - Max retries * &#x60;-max_retries&#x60; - Max retries (descending) * &#x60;policy&#x60; - Policy * &#x60;-policy&#x60; - Policy (descending) * &#x60;total_timeout&#x60; - Total timeout * &#x60;-total_timeout&#x60; - Total timeout (descending) * &#x60;connect_timeout&#x60; - Connect timeout * &#x60;-connect_timeout&#x60; - Connect timeout (descending) * &#x60;sock_connect_timeout&#x60; - Sock connect timeout * &#x60;-sock_connect_timeout&#x60; - Sock connect timeout (descending) * &#x60;sock_read_timeout&#x60; - Sock read timeout * &#x60;-sock_read_timeout&#x60; - Sock read timeout (descending) * &#x60;headers&#x60; - Headers * &#x60;-headers&#x60; - Headers (descending) * &#x60;rate_limit&#x60; - Rate limit * &#x60;-rate_limit&#x60; - Rate limit (descending) * &#x60;pk&#x60; - Pk * &#x60;-pk&#x60; - Pk (descending)
    # @option opts [Array<String>] :prn__in Multiple values may be separated by commas.
    # @option opts [Array<String>] :pulp_href__in Multiple values may be separated by commas.
    # @option opts [Array<String>] :pulp_id__in Multiple values may be separated by commas.
    # @option opts [String] :pulp_label_select Filter labels by search string
    # @option opts [Time] :pulp_last_updated Filter results where pulp_last_updated matches value
    # @option opts [Time] :pulp_last_updated__gt Filter results where pulp_last_updated is greater than value
    # @option opts [Time] :pulp_last_updated__gte Filter results where pulp_last_updated is greater than or equal to value
    # @option opts [Boolean] :pulp_last_updated__isnull Filter results where pulp_last_updated has a null value
    # @option opts [Time] :pulp_last_updated__lt Filter results where pulp_last_updated is less than value
    # @option opts [Time] :pulp_last_updated__lte Filter results where pulp_last_updated is less than or equal to value
    # @option opts [Array<Time>] :pulp_last_updated__range Filter results where pulp_last_updated is between two comma separated values
    # @option opts [String] :q Filter results by using NOT, AND and OR operations on other filters
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [PaginatedpythonPythonRemoteResponseList]
    def list(opts = {})
      data, _status_code, _headers = list_with_http_info(opts)
      data
    end

    # List python remotes
    #  Python Remotes are representations of an external repository of Python content, eg. PyPI.  Fields include upstream repository config. Python Remotes are also used to &#x60;sync&#x60; from upstream repositories, and contains sync settings.
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @option opts [Integer] :limit Number of results to return per page.
    # @option opts [String] :name Filter results where name matches value
    # @option opts [String] :name__contains Filter results where name contains value
    # @option opts [String] :name__icontains Filter results where name contains value
    # @option opts [String] :name__iexact Filter results where name matches value
    # @option opts [Array<String>] :name__in Filter results where name is in a comma-separated list of values
    # @option opts [String] :name__iregex Filter results where name matches regex value
    # @option opts [String] :name__istartswith Filter results where name starts with value
    # @option opts [String] :name__regex Filter results where name matches regex value
    # @option opts [String] :name__startswith Filter results where name starts with value
    # @option opts [Integer] :offset The initial index from which to return the results.
    # @option opts [Array<String>] :ordering Ordering  * &#x60;pulp_id&#x60; - Pulp id * &#x60;-pulp_id&#x60; - Pulp id (descending) * &#x60;pulp_created&#x60; - Pulp created * &#x60;-pulp_created&#x60; - Pulp created (descending) * &#x60;pulp_last_updated&#x60; - Pulp last updated * &#x60;-pulp_last_updated&#x60; - Pulp last updated (descending) * &#x60;pulp_type&#x60; - Pulp type * &#x60;-pulp_type&#x60; - Pulp type (descending) * &#x60;name&#x60; - Name * &#x60;-name&#x60; - Name (descending) * &#x60;pulp_labels&#x60; - Pulp labels * &#x60;-pulp_labels&#x60; - Pulp labels (descending) * &#x60;url&#x60; - Url * &#x60;-url&#x60; - Url (descending) * &#x60;ca_cert&#x60; - Ca cert * &#x60;-ca_cert&#x60; - Ca cert (descending) * &#x60;client_cert&#x60; - Client cert * &#x60;-client_cert&#x60; - Client cert (descending) * &#x60;client_key&#x60; - Client key * &#x60;-client_key&#x60; - Client key (descending) * &#x60;tls_validation&#x60; - Tls validation * &#x60;-tls_validation&#x60; - Tls validation (descending) * &#x60;username&#x60; - Username * &#x60;-username&#x60; - Username (descending) * &#x60;password&#x60; - Password * &#x60;-password&#x60; - Password (descending) * &#x60;proxy_url&#x60; - Proxy url * &#x60;-proxy_url&#x60; - Proxy url (descending) * &#x60;proxy_username&#x60; - Proxy username * &#x60;-proxy_username&#x60; - Proxy username (descending) * &#x60;proxy_password&#x60; - Proxy password * &#x60;-proxy_password&#x60; - Proxy password (descending) * &#x60;download_concurrency&#x60; - Download concurrency * &#x60;-download_concurrency&#x60; - Download concurrency (descending) * &#x60;max_retries&#x60; - Max retries * &#x60;-max_retries&#x60; - Max retries (descending) * &#x60;policy&#x60; - Policy * &#x60;-policy&#x60; - Policy (descending) * &#x60;total_timeout&#x60; - Total timeout * &#x60;-total_timeout&#x60; - Total timeout (descending) * &#x60;connect_timeout&#x60; - Connect timeout * &#x60;-connect_timeout&#x60; - Connect timeout (descending) * &#x60;sock_connect_timeout&#x60; - Sock connect timeout * &#x60;-sock_connect_timeout&#x60; - Sock connect timeout (descending) * &#x60;sock_read_timeout&#x60; - Sock read timeout * &#x60;-sock_read_timeout&#x60; - Sock read timeout (descending) * &#x60;headers&#x60; - Headers * &#x60;-headers&#x60; - Headers (descending) * &#x60;rate_limit&#x60; - Rate limit * &#x60;-rate_limit&#x60; - Rate limit (descending) * &#x60;pk&#x60; - Pk * &#x60;-pk&#x60; - Pk (descending)
    # @option opts [Array<String>] :prn__in Multiple values may be separated by commas.
    # @option opts [Array<String>] :pulp_href__in Multiple values may be separated by commas.
    # @option opts [Array<String>] :pulp_id__in Multiple values may be separated by commas.
    # @option opts [String] :pulp_label_select Filter labels by search string
    # @option opts [Time] :pulp_last_updated Filter results where pulp_last_updated matches value
    # @option opts [Time] :pulp_last_updated__gt Filter results where pulp_last_updated is greater than value
    # @option opts [Time] :pulp_last_updated__gte Filter results where pulp_last_updated is greater than or equal to value
    # @option opts [Boolean] :pulp_last_updated__isnull Filter results where pulp_last_updated has a null value
    # @option opts [Time] :pulp_last_updated__lt Filter results where pulp_last_updated is less than value
    # @option opts [Time] :pulp_last_updated__lte Filter results where pulp_last_updated is less than or equal to value
    # @option opts [Array<Time>] :pulp_last_updated__range Filter results where pulp_last_updated is between two comma separated values
    # @option opts [String] :q Filter results by using NOT, AND and OR operations on other filters
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [Array<(PaginatedpythonPythonRemoteResponseList, Integer, Hash)>] PaginatedpythonPythonRemoteResponseList data, response status code and response headers
    def list_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: RemotesPythonApi.list ...'
      end
      allowable_values = ["-ca_cert", "-client_cert", "-client_key", "-connect_timeout", "-download_concurrency", "-headers", "-max_retries", "-name", "-password", "-pk", "-policy", "-proxy_password", "-proxy_url", "-proxy_username", "-pulp_created", "-pulp_id", "-pulp_labels", "-pulp_last_updated", "-pulp_type", "-rate_limit", "-sock_connect_timeout", "-sock_read_timeout", "-tls_validation", "-total_timeout", "-url", "-username", "ca_cert", "client_cert", "client_key", "connect_timeout", "download_concurrency", "headers", "max_retries", "name", "password", "pk", "policy", "proxy_password", "proxy_url", "proxy_username", "pulp_created", "pulp_id", "pulp_labels", "pulp_last_updated", "pulp_type", "rate_limit", "sock_connect_timeout", "sock_read_timeout", "tls_validation", "total_timeout", "url", "username"]
      if @api_client.config.client_side_validation && opts[:'ordering'] && !opts[:'ordering'].all? { |item| allowable_values.include?(item) }
        fail ArgumentError, "invalid value for \"ordering\", must include one of #{allowable_values}"
      end
      # resource path
      local_var_path = '/pulp/api/v3/remotes/python/python/'

      # query parameters
      query_params = opts[:query_params] || {}
      query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
      query_params[:'name'] = opts[:'name'] if !opts[:'name'].nil?
      query_params[:'name__contains'] = opts[:'name__contains'] if !opts[:'name__contains'].nil?
      query_params[:'name__icontains'] = opts[:'name__icontains'] if !opts[:'name__icontains'].nil?
      query_params[:'name__iexact'] = opts[:'name__iexact'] if !opts[:'name__iexact'].nil?
      query_params[:'name__in'] = @api_client.build_collection_param(opts[:'name__in'], :csv) if !opts[:'name__in'].nil?
      query_params[:'name__iregex'] = opts[:'name__iregex'] if !opts[:'name__iregex'].nil?
      query_params[:'name__istartswith'] = opts[:'name__istartswith'] if !opts[:'name__istartswith'].nil?
      query_params[:'name__regex'] = opts[:'name__regex'] if !opts[:'name__regex'].nil?
      query_params[:'name__startswith'] = opts[:'name__startswith'] if !opts[:'name__startswith'].nil?
      query_params[:'offset'] = opts[:'offset'] if !opts[:'offset'].nil?
      query_params[:'ordering'] = @api_client.build_collection_param(opts[:'ordering'], :csv) if !opts[:'ordering'].nil?
      query_params[:'prn__in'] = @api_client.build_collection_param(opts[:'prn__in'], :csv) if !opts[:'prn__in'].nil?
      query_params[:'pulp_href__in'] = @api_client.build_collection_param(opts[:'pulp_href__in'], :csv) if !opts[:'pulp_href__in'].nil?
      query_params[:'pulp_id__in'] = @api_client.build_collection_param(opts[:'pulp_id__in'], :csv) if !opts[:'pulp_id__in'].nil?
      query_params[:'pulp_label_select'] = opts[:'pulp_label_select'] if !opts[:'pulp_label_select'].nil?
      query_params[:'pulp_last_updated'] = opts[:'pulp_last_updated'] if !opts[:'pulp_last_updated'].nil?
      query_params[:'pulp_last_updated__gt'] = opts[:'pulp_last_updated__gt'] if !opts[:'pulp_last_updated__gt'].nil?
      query_params[:'pulp_last_updated__gte'] = opts[:'pulp_last_updated__gte'] if !opts[:'pulp_last_updated__gte'].nil?
      query_params[:'pulp_last_updated__isnull'] = opts[:'pulp_last_updated__isnull'] if !opts[:'pulp_last_updated__isnull'].nil?
      query_params[:'pulp_last_updated__lt'] = opts[:'pulp_last_updated__lt'] if !opts[:'pulp_last_updated__lt'].nil?
      query_params[:'pulp_last_updated__lte'] = opts[:'pulp_last_updated__lte'] if !opts[:'pulp_last_updated__lte'].nil?
      query_params[:'pulp_last_updated__range'] = @api_client.build_collection_param(opts[:'pulp_last_updated__range'], :csv) if !opts[:'pulp_last_updated__range'].nil?
      query_params[:'q'] = opts[:'q'] if !opts[:'q'].nil?
      query_params[:'fields'] = @api_client.build_collection_param(opts[:'fields'], :multi) if !opts[:'fields'].nil?
      query_params[:'exclude_fields'] = @api_client.build_collection_param(opts[:'exclude_fields'], :multi) if !opts[:'exclude_fields'].nil?

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
      header_params[:'X-Task-Diagnostics'] = @api_client.build_collection_param(opts[:'x_task_diagnostics'], :csv) if !opts[:'x_task_diagnostics'].nil?

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:debug_body]

      # return_type
      return_type = opts[:debug_return_type] || 'PaginatedpythonPythonRemoteResponseList'

      # auth_names
      auth_names = opts[:debug_auth_names] || ['basicAuth']

      new_options = opts.merge(
        :operation => :"RemotesPythonApi.list",
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: RemotesPythonApi#list\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # List roles
    # List roles assigned to this object.
    # @param python_python_remote_href [String] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [ObjectRolesResponse]
    def list_roles(python_python_remote_href, opts = {})
      data, _status_code, _headers = list_roles_with_http_info(python_python_remote_href, opts)
      data
    end

    # List roles
    # List roles assigned to this object.
    # @param python_python_remote_href [String] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [Array<(ObjectRolesResponse, Integer, Hash)>] ObjectRolesResponse data, response status code and response headers
    def list_roles_with_http_info(python_python_remote_href, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: RemotesPythonApi.list_roles ...'
      end
      # verify the required parameter 'python_python_remote_href' is set
      if @api_client.config.client_side_validation && python_python_remote_href.nil?
        fail ArgumentError, "Missing the required parameter 'python_python_remote_href' when calling RemotesPythonApi.list_roles"
      end
      # resource path
      local_var_path = '{python_python_remote_href}list_roles/'.sub('{' + 'python_python_remote_href' + '}', CGI.escape(python_python_remote_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}
      query_params[:'fields'] = @api_client.build_collection_param(opts[:'fields'], :multi) if !opts[:'fields'].nil?
      query_params[:'exclude_fields'] = @api_client.build_collection_param(opts[:'exclude_fields'], :multi) if !opts[:'exclude_fields'].nil?

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
      header_params[:'X-Task-Diagnostics'] = @api_client.build_collection_param(opts[:'x_task_diagnostics'], :csv) if !opts[:'x_task_diagnostics'].nil?

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:debug_body]

      # return_type
      return_type = opts[:debug_return_type] || 'ObjectRolesResponse'

      # auth_names
      auth_names = opts[:debug_auth_names] || ['basicAuth']

      new_options = opts.merge(
        :operation => :"RemotesPythonApi.list_roles",
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: RemotesPythonApi#list_roles\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # List user permissions
    # List permissions available to the current user on this object.
    # @param python_python_remote_href [String] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [MyPermissionsResponse]
    def my_permissions(python_python_remote_href, opts = {})
      data, _status_code, _headers = my_permissions_with_http_info(python_python_remote_href, opts)
      data
    end

    # List user permissions
    # List permissions available to the current user on this object.
    # @param python_python_remote_href [String] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [Array<(MyPermissionsResponse, Integer, Hash)>] MyPermissionsResponse data, response status code and response headers
    def my_permissions_with_http_info(python_python_remote_href, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: RemotesPythonApi.my_permissions ...'
      end
      # verify the required parameter 'python_python_remote_href' is set
      if @api_client.config.client_side_validation && python_python_remote_href.nil?
        fail ArgumentError, "Missing the required parameter 'python_python_remote_href' when calling RemotesPythonApi.my_permissions"
      end
      # resource path
      local_var_path = '{python_python_remote_href}my_permissions/'.sub('{' + 'python_python_remote_href' + '}', CGI.escape(python_python_remote_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}
      query_params[:'fields'] = @api_client.build_collection_param(opts[:'fields'], :multi) if !opts[:'fields'].nil?
      query_params[:'exclude_fields'] = @api_client.build_collection_param(opts[:'exclude_fields'], :multi) if !opts[:'exclude_fields'].nil?

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
      header_params[:'X-Task-Diagnostics'] = @api_client.build_collection_param(opts[:'x_task_diagnostics'], :csv) if !opts[:'x_task_diagnostics'].nil?

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:debug_body]

      # return_type
      return_type = opts[:debug_return_type] || 'MyPermissionsResponse'

      # auth_names
      auth_names = opts[:debug_auth_names] || ['basicAuth']

      new_options = opts.merge(
        :operation => :"RemotesPythonApi.my_permissions",
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: RemotesPythonApi#my_permissions\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update a python remote
    # Update the entity partially and trigger an asynchronous task if necessary
    # @param python_python_remote_href [String] 
    # @param patchedpython_python_remote [PatchedpythonPythonRemote] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [PythonPythonRemoteResponse]
    def partial_update(python_python_remote_href, patchedpython_python_remote, opts = {})
      data, _status_code, _headers = partial_update_with_http_info(python_python_remote_href, patchedpython_python_remote, opts)
      data
    end

    # Update a python remote
    # Update the entity partially and trigger an asynchronous task if necessary
    # @param python_python_remote_href [String] 
    # @param patchedpython_python_remote [PatchedpythonPythonRemote] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [Array<(PythonPythonRemoteResponse, Integer, Hash)>] PythonPythonRemoteResponse data, response status code and response headers
    def partial_update_with_http_info(python_python_remote_href, patchedpython_python_remote, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: RemotesPythonApi.partial_update ...'
      end
      # verify the required parameter 'python_python_remote_href' is set
      if @api_client.config.client_side_validation && python_python_remote_href.nil?
        fail ArgumentError, "Missing the required parameter 'python_python_remote_href' when calling RemotesPythonApi.partial_update"
      end
      # verify the required parameter 'patchedpython_python_remote' is set
      if @api_client.config.client_side_validation && patchedpython_python_remote.nil?
        fail ArgumentError, "Missing the required parameter 'patchedpython_python_remote' when calling RemotesPythonApi.partial_update"
      end
      # resource path
      local_var_path = '{python_python_remote_href}'.sub('{' + 'python_python_remote_href' + '}', CGI.escape(python_python_remote_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
      # HTTP header 'Content-Type'
      content_type = @api_client.select_header_content_type(['application/json', 'application/x-www-form-urlencoded', 'multipart/form-data'])
      if !content_type.nil?
          header_params['Content-Type'] = content_type
      end
      header_params[:'X-Task-Diagnostics'] = @api_client.build_collection_param(opts[:'x_task_diagnostics'], :csv) if !opts[:'x_task_diagnostics'].nil?

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:debug_body] || @api_client.object_to_http_body(patchedpython_python_remote)

      # return_type
      return_type = opts[:debug_return_type] || 'PythonPythonRemoteResponse'

      # auth_names
      auth_names = opts[:debug_auth_names] || ['basicAuth']

      new_options = opts.merge(
        :operation => :"RemotesPythonApi.partial_update",
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:PATCH, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: RemotesPythonApi#partial_update\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Inspect a python remote
    #  Python Remotes are representations of an external repository of Python content, eg. PyPI.  Fields include upstream repository config. Python Remotes are also used to `sync` from upstream repositories, and contains sync settings.
    # @param python_python_remote_href [String] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [PythonPythonRemoteResponse]
    def read(python_python_remote_href, opts = {})
      data, _status_code, _headers = read_with_http_info(python_python_remote_href, opts)
      data
    end

    # Inspect a python remote
    #  Python Remotes are representations of an external repository of Python content, eg. PyPI.  Fields include upstream repository config. Python Remotes are also used to &#x60;sync&#x60; from upstream repositories, and contains sync settings.
    # @param python_python_remote_href [String] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [Array<(PythonPythonRemoteResponse, Integer, Hash)>] PythonPythonRemoteResponse data, response status code and response headers
    def read_with_http_info(python_python_remote_href, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: RemotesPythonApi.read ...'
      end
      # verify the required parameter 'python_python_remote_href' is set
      if @api_client.config.client_side_validation && python_python_remote_href.nil?
        fail ArgumentError, "Missing the required parameter 'python_python_remote_href' when calling RemotesPythonApi.read"
      end
      # resource path
      local_var_path = '{python_python_remote_href}'.sub('{' + 'python_python_remote_href' + '}', CGI.escape(python_python_remote_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}
      query_params[:'fields'] = @api_client.build_collection_param(opts[:'fields'], :multi) if !opts[:'fields'].nil?
      query_params[:'exclude_fields'] = @api_client.build_collection_param(opts[:'exclude_fields'], :multi) if !opts[:'exclude_fields'].nil?

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
      header_params[:'X-Task-Diagnostics'] = @api_client.build_collection_param(opts[:'x_task_diagnostics'], :csv) if !opts[:'x_task_diagnostics'].nil?

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:debug_body]

      # return_type
      return_type = opts[:debug_return_type] || 'PythonPythonRemoteResponse'

      # auth_names
      auth_names = opts[:debug_auth_names] || ['basicAuth']

      new_options = opts.merge(
        :operation => :"RemotesPythonApi.read",
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: RemotesPythonApi#read\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Remove a role
    # Remove a role for this object from users/groups.
    # @param python_python_remote_href [String] 
    # @param nested_role [NestedRole] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [NestedRoleResponse]
    def remove_role(python_python_remote_href, nested_role, opts = {})
      data, _status_code, _headers = remove_role_with_http_info(python_python_remote_href, nested_role, opts)
      data
    end

    # Remove a role
    # Remove a role for this object from users/groups.
    # @param python_python_remote_href [String] 
    # @param nested_role [NestedRole] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [Array<(NestedRoleResponse, Integer, Hash)>] NestedRoleResponse data, response status code and response headers
    def remove_role_with_http_info(python_python_remote_href, nested_role, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: RemotesPythonApi.remove_role ...'
      end
      # verify the required parameter 'python_python_remote_href' is set
      if @api_client.config.client_side_validation && python_python_remote_href.nil?
        fail ArgumentError, "Missing the required parameter 'python_python_remote_href' when calling RemotesPythonApi.remove_role"
      end
      # verify the required parameter 'nested_role' is set
      if @api_client.config.client_side_validation && nested_role.nil?
        fail ArgumentError, "Missing the required parameter 'nested_role' when calling RemotesPythonApi.remove_role"
      end
      # resource path
      local_var_path = '{python_python_remote_href}remove_role/'.sub('{' + 'python_python_remote_href' + '}', CGI.escape(python_python_remote_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
      # HTTP header 'Content-Type'
      content_type = @api_client.select_header_content_type(['application/json', 'application/x-www-form-urlencoded', 'multipart/form-data'])
      if !content_type.nil?
          header_params['Content-Type'] = content_type
      end
      header_params[:'X-Task-Diagnostics'] = @api_client.build_collection_param(opts[:'x_task_diagnostics'], :csv) if !opts[:'x_task_diagnostics'].nil?

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:debug_body] || @api_client.object_to_http_body(nested_role)

      # return_type
      return_type = opts[:debug_return_type] || 'NestedRoleResponse'

      # auth_names
      auth_names = opts[:debug_auth_names] || ['basicAuth']

      new_options = opts.merge(
        :operation => :"RemotesPythonApi.remove_role",
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: RemotesPythonApi#remove_role\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Set a label
    # Set a single pulp_label on the object to a specific value or null.
    # @param python_python_remote_href [String] 
    # @param set_label [SetLabel] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [SetLabelResponse]
    def set_label(python_python_remote_href, set_label, opts = {})
      data, _status_code, _headers = set_label_with_http_info(python_python_remote_href, set_label, opts)
      data
    end

    # Set a label
    # Set a single pulp_label on the object to a specific value or null.
    # @param python_python_remote_href [String] 
    # @param set_label [SetLabel] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [Array<(SetLabelResponse, Integer, Hash)>] SetLabelResponse data, response status code and response headers
    def set_label_with_http_info(python_python_remote_href, set_label, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: RemotesPythonApi.set_label ...'
      end
      # verify the required parameter 'python_python_remote_href' is set
      if @api_client.config.client_side_validation && python_python_remote_href.nil?
        fail ArgumentError, "Missing the required parameter 'python_python_remote_href' when calling RemotesPythonApi.set_label"
      end
      # verify the required parameter 'set_label' is set
      if @api_client.config.client_side_validation && set_label.nil?
        fail ArgumentError, "Missing the required parameter 'set_label' when calling RemotesPythonApi.set_label"
      end
      # resource path
      local_var_path = '{python_python_remote_href}set_label/'.sub('{' + 'python_python_remote_href' + '}', CGI.escape(python_python_remote_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
      # HTTP header 'Content-Type'
      content_type = @api_client.select_header_content_type(['application/json', 'application/x-www-form-urlencoded', 'multipart/form-data'])
      if !content_type.nil?
          header_params['Content-Type'] = content_type
      end
      header_params[:'X-Task-Diagnostics'] = @api_client.build_collection_param(opts[:'x_task_diagnostics'], :csv) if !opts[:'x_task_diagnostics'].nil?

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:debug_body] || @api_client.object_to_http_body(set_label)

      # return_type
      return_type = opts[:debug_return_type] || 'SetLabelResponse'

      # auth_names
      auth_names = opts[:debug_auth_names] || ['basicAuth']

      new_options = opts.merge(
        :operation => :"RemotesPythonApi.set_label",
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: RemotesPythonApi#set_label\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Unset a label
    # Unset a single pulp_label on the object.
    # @param python_python_remote_href [String] 
    # @param unset_label [UnsetLabel] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [UnsetLabelResponse]
    def unset_label(python_python_remote_href, unset_label, opts = {})
      data, _status_code, _headers = unset_label_with_http_info(python_python_remote_href, unset_label, opts)
      data
    end

    # Unset a label
    # Unset a single pulp_label on the object.
    # @param python_python_remote_href [String] 
    # @param unset_label [UnsetLabel] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [Array<(UnsetLabelResponse, Integer, Hash)>] UnsetLabelResponse data, response status code and response headers
    def unset_label_with_http_info(python_python_remote_href, unset_label, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: RemotesPythonApi.unset_label ...'
      end
      # verify the required parameter 'python_python_remote_href' is set
      if @api_client.config.client_side_validation && python_python_remote_href.nil?
        fail ArgumentError, "Missing the required parameter 'python_python_remote_href' when calling RemotesPythonApi.unset_label"
      end
      # verify the required parameter 'unset_label' is set
      if @api_client.config.client_side_validation && unset_label.nil?
        fail ArgumentError, "Missing the required parameter 'unset_label' when calling RemotesPythonApi.unset_label"
      end
      # resource path
      local_var_path = '{python_python_remote_href}unset_label/'.sub('{' + 'python_python_remote_href' + '}', CGI.escape(python_python_remote_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
      # HTTP header 'Content-Type'
      content_type = @api_client.select_header_content_type(['application/json', 'application/x-www-form-urlencoded', 'multipart/form-data'])
      if !content_type.nil?
          header_params['Content-Type'] = content_type
      end
      header_params[:'X-Task-Diagnostics'] = @api_client.build_collection_param(opts[:'x_task_diagnostics'], :csv) if !opts[:'x_task_diagnostics'].nil?

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:debug_body] || @api_client.object_to_http_body(unset_label)

      # return_type
      return_type = opts[:debug_return_type] || 'UnsetLabelResponse'

      # auth_names
      auth_names = opts[:debug_auth_names] || ['basicAuth']

      new_options = opts.merge(
        :operation => :"RemotesPythonApi.unset_label",
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: RemotesPythonApi#unset_label\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update a python remote
    # Update the entity and trigger an asynchronous task if necessary
    # @param python_python_remote_href [String] 
    # @param python_python_remote [PythonPythonRemote] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [PythonPythonRemoteResponse]
    def update(python_python_remote_href, python_python_remote, opts = {})
      data, _status_code, _headers = update_with_http_info(python_python_remote_href, python_python_remote, opts)
      data
    end

    # Update a python remote
    # Update the entity and trigger an asynchronous task if necessary
    # @param python_python_remote_href [String] 
    # @param python_python_remote [PythonPythonRemote] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :x_task_diagnostics List of profilers to use on tasks.
    # @return [Array<(PythonPythonRemoteResponse, Integer, Hash)>] PythonPythonRemoteResponse data, response status code and response headers
    def update_with_http_info(python_python_remote_href, python_python_remote, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: RemotesPythonApi.update ...'
      end
      # verify the required parameter 'python_python_remote_href' is set
      if @api_client.config.client_side_validation && python_python_remote_href.nil?
        fail ArgumentError, "Missing the required parameter 'python_python_remote_href' when calling RemotesPythonApi.update"
      end
      # verify the required parameter 'python_python_remote' is set
      if @api_client.config.client_side_validation && python_python_remote.nil?
        fail ArgumentError, "Missing the required parameter 'python_python_remote' when calling RemotesPythonApi.update"
      end
      # resource path
      local_var_path = '{python_python_remote_href}'.sub('{' + 'python_python_remote_href' + '}', CGI.escape(python_python_remote_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
      # HTTP header 'Content-Type'
      content_type = @api_client.select_header_content_type(['application/json', 'application/x-www-form-urlencoded', 'multipart/form-data'])
      if !content_type.nil?
          header_params['Content-Type'] = content_type
      end
      header_params[:'X-Task-Diagnostics'] = @api_client.build_collection_param(opts[:'x_task_diagnostics'], :csv) if !opts[:'x_task_diagnostics'].nil?

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:debug_body] || @api_client.object_to_http_body(python_python_remote)

      # return_type
      return_type = opts[:debug_return_type] || 'PythonPythonRemoteResponse'

      # auth_names
      auth_names = opts[:debug_auth_names] || ['basicAuth']

      new_options = opts.merge(
        :operation => :"RemotesPythonApi.update",
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:PUT, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: RemotesPythonApi#update\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
  end
end