# AUTOMATICALLY GENERATED by `shtab`

_shtab_pytr_subparsers=('help' 'login' 'portfolio' 'details' 'dl_docs' 'export_transactions' 'get_price_alarms' 'set_price_alarms' 'completion')

_shtab_pytr_option_strings=('-h' '--help' '-V' '--version' '-v' '--verbosity' '--debug-logfile' '--debug-log-filter')
_shtab_pytr_help_option_strings=('')
_shtab_pytr_login_option_strings=('-h' '--help' '-n' '--phone_no' '-p' '--pin' '--waf-token' '--store_credentials')
_shtab_pytr_portfolio_option_strings=('-h' '--help' '-n' '--phone_no' '-p' '--pin' '--waf-token' '--store_credentials' '-l' '--lang' '--decimal-localization' '--no-decimal-localization' '--include-watchlist' '--no-include-watchlist' '-o' '--output' '--sort-by-column' '--sort-ascending' '--no-sort-ascending')
_shtab_pytr_details_option_strings=('-h' '--help' '-n' '--phone_no' '-p' '--pin' '--waf-token' '--store_credentials')
_shtab_pytr_dl_docs_option_strings=('-h' '--help' '-n' '--phone_no' '-p' '--pin' '--waf-token' '--store_credentials' '-l' '--lang' '--date-with-time' '--no-date-with-time' '--decimal-localization' '--no-decimal-localization' '-s' '--sort' '--format' '--last_days' '--days_until' '--workers' '--universal' '--store-event-database' '--no-store-event-database' '--scan-for-duplicates' '--no-scan-for-duplicates' '--dump-raw-data' '--no-dump-raw-data' '--export-transactions' '--no-export-transactions' '--export-format' '--flat')
_shtab_pytr_export_transactions_option_strings=('-h' '--help' '-n' '--phone_no' '-p' '--pin' '--waf-token' '--store_credentials' '-l' '--lang' '--date-with-time' '--no-date-with-time' '--decimal-localization' '--no-decimal-localization' '-s' '--sort' '--last_days' '--days_until' '--store-event-database' '--no-store-event-database' '--scan-for-duplicates' '--no-scan-for-duplicates' '--dump-raw-data' '--no-dump-raw-data' '--export-format' '--format' '--outputdir')
_shtab_pytr_get_price_alarms_option_strings=('-h' '--help' '-n' '--phone_no' '-p' '--pin' '--waf-token' '--store_credentials' '--outputfile')
_shtab_pytr_set_price_alarms_option_strings=('-h' '--help' '-n' '--phone_no' '-p' '--pin' '--waf-token' '--store_credentials' '--remove-current-alarms' '--no-remove-current-alarms' '--inputfile')
_shtab_pytr_completion_option_strings=('-h' '--help')



_shtab_pytr_pos_0_choices=('help' 'login' 'portfolio' 'details' 'dl_docs' 'export_transactions' 'get_price_alarms' 'set_price_alarms' 'completion')
_shtab_pytr__v_choices=('warning' 'info' 'debug')
_shtab_pytr___verbosity_choices=('warning' 'info' 'debug')
_shtab_pytr_portfolio__l_choices=('auto' 'cs' 'da' 'de' 'en' 'es' 'fr' 'it' 'nl' 'pl' 'pt' 'ru' 'zh')
_shtab_pytr_portfolio___lang_choices=('auto' 'cs' 'da' 'de' 'en' 'es' 'fr' 'it' 'nl' 'pl' 'pt' 'ru' 'zh')
_shtab_pytr_portfolio___sort_by_column_choices=('avgcost' 'netvalue' 'price' 'quantity' 'name' 'isin')
_shtab_pytr_dl_docs__l_choices=('auto' 'cs' 'da' 'de' 'en' 'es' 'fr' 'it' 'nl' 'pl' 'pt' 'ru' 'zh')
_shtab_pytr_dl_docs___lang_choices=('auto' 'cs' 'da' 'de' 'en' 'es' 'fr' 'it' 'nl' 'pl' 'pt' 'ru' 'zh')
_shtab_pytr_dl_docs___export_format_choices=('json' 'csv')
_shtab_pytr_export_transactions__l_choices=('auto' 'cs' 'da' 'de' 'en' 'es' 'fr' 'it' 'nl' 'pl' 'pt' 'ru' 'zh')
_shtab_pytr_export_transactions___lang_choices=('auto' 'cs' 'da' 'de' 'en' 'es' 'fr' 'it' 'nl' 'pl' 'pt' 'ru' 'zh')
_shtab_pytr_export_transactions___export_format_choices=('json' 'csv')
_shtab_pytr_export_transactions___format_choices=('json' 'csv')
_shtab_pytr_completion_pos_0_choices=('bash' 'zsh' 'tcsh')

_shtab_pytr_pos_0_nargs=A...
_shtab_pytr__h_nargs=0
_shtab_pytr___help_nargs=0
_shtab_pytr__V_nargs=0
_shtab_pytr___version_nargs=0
_shtab_pytr_help___for_readme_nargs=0
_shtab_pytr_login__h_nargs=0
_shtab_pytr_login___help_nargs=0
_shtab_pytr_login___store_credentials_nargs=0
_shtab_pytr_portfolio__h_nargs=0
_shtab_pytr_portfolio___help_nargs=0
_shtab_pytr_portfolio___store_credentials_nargs=0
_shtab_pytr_portfolio___decimal_localization_nargs=0
_shtab_pytr_portfolio___no_decimal_localization_nargs=0
_shtab_pytr_portfolio___include_watchlist_nargs=0
_shtab_pytr_portfolio___no_include_watchlist_nargs=0
_shtab_pytr_portfolio___sort_ascending_nargs=0
_shtab_pytr_portfolio___no_sort_ascending_nargs=0
_shtab_pytr_details__h_nargs=0
_shtab_pytr_details___help_nargs=0
_shtab_pytr_details___store_credentials_nargs=0
_shtab_pytr_dl_docs__h_nargs=0
_shtab_pytr_dl_docs___help_nargs=0
_shtab_pytr_dl_docs___store_credentials_nargs=0
_shtab_pytr_dl_docs___date_with_time_nargs=0
_shtab_pytr_dl_docs___no_date_with_time_nargs=0
_shtab_pytr_dl_docs___decimal_localization_nargs=0
_shtab_pytr_dl_docs___no_decimal_localization_nargs=0
_shtab_pytr_dl_docs__s_nargs=0
_shtab_pytr_dl_docs___sort_nargs=0
_shtab_pytr_dl_docs___universal_nargs=0
_shtab_pytr_dl_docs___store_event_database_nargs=0
_shtab_pytr_dl_docs___no_store_event_database_nargs=0
_shtab_pytr_dl_docs___scan_for_duplicates_nargs=0
_shtab_pytr_dl_docs___no_scan_for_duplicates_nargs=0
_shtab_pytr_dl_docs___dump_raw_data_nargs=0
_shtab_pytr_dl_docs___no_dump_raw_data_nargs=0
_shtab_pytr_dl_docs___export_transactions_nargs=0
_shtab_pytr_dl_docs___no_export_transactions_nargs=0
_shtab_pytr_dl_docs___flat_nargs=0
_shtab_pytr_export_transactions__h_nargs=0
_shtab_pytr_export_transactions___help_nargs=0
_shtab_pytr_export_transactions___store_credentials_nargs=0
_shtab_pytr_export_transactions___date_with_time_nargs=0
_shtab_pytr_export_transactions___no_date_with_time_nargs=0
_shtab_pytr_export_transactions___decimal_localization_nargs=0
_shtab_pytr_export_transactions___no_decimal_localization_nargs=0
_shtab_pytr_export_transactions__s_nargs=0
_shtab_pytr_export_transactions___sort_nargs=0
_shtab_pytr_export_transactions___store_event_database_nargs=0
_shtab_pytr_export_transactions___no_store_event_database_nargs=0
_shtab_pytr_export_transactions___scan_for_duplicates_nargs=0
_shtab_pytr_export_transactions___no_scan_for_duplicates_nargs=0
_shtab_pytr_export_transactions___dump_raw_data_nargs=0
_shtab_pytr_export_transactions___no_dump_raw_data_nargs=0
_shtab_pytr_get_price_alarms_pos_0_nargs=*
_shtab_pytr_get_price_alarms__h_nargs=0
_shtab_pytr_get_price_alarms___help_nargs=0
_shtab_pytr_get_price_alarms___store_credentials_nargs=0
_shtab_pytr_get_price_alarms___outputfile_nargs=?
_shtab_pytr_set_price_alarms_pos_0_nargs=*
_shtab_pytr_set_price_alarms__h_nargs=0
_shtab_pytr_set_price_alarms___help_nargs=0
_shtab_pytr_set_price_alarms___store_credentials_nargs=0
_shtab_pytr_set_price_alarms___remove_current_alarms_nargs=0
_shtab_pytr_set_price_alarms___no_remove_current_alarms_nargs=0
_shtab_pytr_set_price_alarms___inputfile_nargs=?
_shtab_pytr_completion__h_nargs=0
_shtab_pytr_completion___help_nargs=0


# $1=COMP_WORDS[1]
_shtab_compgen_files() {
  compgen -f -- $1  # files
}

# $1=COMP_WORDS[1]
_shtab_compgen_dirs() {
  compgen -d -- $1  # recurse into subdirs
}

# $1=COMP_WORDS[1]
_shtab_replace_nonword() {
  echo "${1//[^[:word:]]/_}"
}

# set default values (called for the initial parser & any subparsers)
_set_parser_defaults() {
  local subparsers_var="${prefix}_subparsers[@]"
  sub_parsers=${!subparsers_var-}

  local current_option_strings_var="${prefix}_option_strings[@]"
  current_option_strings=${!current_option_strings_var}

  completed_positional_actions=0

  _set_new_action "pos_${completed_positional_actions}" true
}

# $1=action identifier
# $2=positional action (bool)
# set all identifiers for an action's parameters
_set_new_action() {
  current_action="${prefix}_$(_shtab_replace_nonword $1)"

  local current_action_compgen_var=${current_action}_COMPGEN
  current_action_compgen="${!current_action_compgen_var-}"

  local current_action_choices_var="${current_action}_choices[@]"
  current_action_choices="${!current_action_choices_var-}"

  local current_action_nargs_var="${current_action}_nargs"
  if [ -n "${!current_action_nargs_var-}" ]; then
    current_action_nargs="${!current_action_nargs_var}"
  else
    current_action_nargs=1
  fi

  current_action_args_start_index=$(( $word_index + 1 - $pos_only ))

  current_action_is_positional=$2
}

# Notes:
# `COMPREPLY`: what will be rendered after completion is triggered
# `completing_word`: currently typed word to generate completions for
# `${!var}`: evaluates the content of `var` and expand its content as a variable
#     hello="world"
#     x="hello"
#     ${!x} -> ${hello} -> "world"
_shtab_pytr() {
  local completing_word="${COMP_WORDS[COMP_CWORD]}"
  local previous_word="${COMP_WORDS[COMP_CWORD-1]}"
  local completed_positional_actions
  local current_action
  local current_action_args_start_index
  local current_action_choices
  local current_action_compgen
  local current_action_is_positional
  local current_action_nargs
  local current_option_strings
  local sub_parsers
  COMPREPLY=()

  local prefix=_shtab_pytr
  local word_index=0
  local pos_only=0 # "--" delimeter not encountered yet
  _set_parser_defaults
  word_index=1

  # determine what arguments are appropriate for the current state
  # of the arg parser
  while [ $word_index -ne $COMP_CWORD ]; do
    local this_word="${COMP_WORDS[$word_index]}"

    if [[ $pos_only = 1 || " $this_word " != " -- " ]]; then
      if [[ -n $sub_parsers && " ${sub_parsers[@]} " == *" ${this_word} "* ]]; then
        # valid subcommand: add it to the prefix & reset the current action
        prefix="${prefix}_$(_shtab_replace_nonword $this_word)"
        _set_parser_defaults
      fi

      if [[ " ${current_option_strings[@]} " == *" ${this_word} "* ]]; then
        # a new action should be acquired (due to recognised option string or
        # no more input expected from current action);
        # the next positional action can fill in here
        _set_new_action $this_word false
      fi

      if [[ "$current_action_nargs" != "*" ]] && \
         [[ "$current_action_nargs" != "+" ]] && \
         [[ "$current_action_nargs" != "?" ]] && \
         [[ "$current_action_nargs" != *"..." ]] && \
         (( $word_index + 1 - $current_action_args_start_index - $pos_only >= \
            $current_action_nargs )); then
        $current_action_is_positional && let "completed_positional_actions += 1"
        _set_new_action "pos_${completed_positional_actions}" true
      fi
    else
      pos_only=1 # "--" delimeter encountered
    fi

    let "word_index+=1"
  done

  # Generate the completions

  if [[ $pos_only = 0 && "${completing_word}" == -* ]]; then
    # optional argument started: use option strings
    COMPREPLY=( $(compgen -W "${current_option_strings[*]}" -- "${completing_word}") )
  elif [[ "${previous_word}" == ">" || "${previous_word}" == ">>" ||
          "${previous_word}" =~ ^[12]">" || "${previous_word}" =~ ^[12]">>" ]]; then
    # handle redirection operators
    COMPREPLY=( $(compgen -f -- "${completing_word}") )
  else
    # use choices & compgen
    local IFS=$'\n' # items may contain spaces, so delimit using newline
    COMPREPLY=( $([ -n "${current_action_compgen}" ] \
                  && "${current_action_compgen}" "${completing_word}") )
    unset IFS
    COMPREPLY+=( $(compgen -W "${current_action_choices[*]}" -- "${completing_word}") )
  fi

  return 0
}

complete -o filenames -F _shtab_pytr pytr
