Repository: PokemonGoF/PokemonGo-Bot

Issue:
Error: Bot giving errors in the latest commit
### Expected Behavior

Bot should work
### Actual Behavior

Bot gives errors on startup
### Your FULL config.json (remove your username, password, gmapkey and any other private info)

```
{
    "websocket_server": false,
    "heartbeat_threshold": 10,
    "enable_social": false,
    "live_config_update": {
      "enabled": false,
      "tasks_only": false
    },
    "tasks": [
      {
        "type": "TelegramTask",
        "config": {
          "enabled": false,
          "master": null,
          "alert_catch": {
            "all": {"operator": "and", "cp": 1300, "iv": 0.95},
            "Snorlax": {"operator": "or", "cp": 900, "iv": 0.9}
          }
        }
      },
      {
        "//NOTE: This task MUST be placed on the top of task list": {},
        "type": "RandomAlivePause",
        "config": {
          "enabled": true,
          "min_duration": "00:00:10",
          "max_duration": "00:00:30",
          "min_interval": "01:00:00",
          "max_interval": "01:30:00"
        }
      },
      {
        "type": "HandleSoftBan"
      },
      {
        "type": "RandomPause",
        "config": {
          "enabled": true,
          "min_duration": "00:00:10",
          "max_duration": "00:00:30",
          "min_interval": "00:10:00",
          "max_interval": "02:00:00"
        }
      },
      {
        "type": "CompleteTutorial",
        "config": {
          "enabled": false,
          "// set a name": "",
          "nickname": "",
          "team": 0
        }
      },
      {
        "type": "CollectLevelUpReward",
        "config": {
          "collect_reward": true,
          "level_limit": -1
        }
      },
      {
        "type": "IncubateEggs",
        "config": {
          "enabled": true,
          "infinite_longer_eggs_first": false,
          "breakable_longer_eggs_first": true,
          "min_interval": 60,
         "infinite": [2,5,10],
         "breakable": [2,5,10]
        }
      },
      {
        "type": "UpdateLiveStats",
        "config": {
          "enabled": true,
          "min_interval": 60,
          "stats": ["username", "uptime", "stardust_earned", "xp_earned", "xp_per_hour", "stops_visited"],
          "terminal_log": true,
          "terminal_title": true
        }
      },
      {
        "type": "UpdateLiveInventory",
        "config": {
          "enabled": true,
          "min_interval": 120,
          "show_all_multiple_lines": false,
          "items": ["pokemon_bag", "space_info", "pokeballs", "greatballs", "ultraballs", "razzberries"]
        }
      },
      {
        "type": "ShowBestPokemon",
        "config": {
          "enabled": true,
          "min_interval": 120,
          "amount": 15,
          "order_by": "cp",
          "info_to_show": ["cp"]
        }
      },
      {
        "type": "TransferPokemon",
        "config": {
          "enabled": true,
          "min_free_slot": 3,
          "transfer_wait_min": 3,
          "transfer_wait_max": 5
        }
      },
      {
        "type": "NicknamePokemon",
        "config": {
          "enabled": true,
          "nickname_above_iv": 0.9,
          "nickname_template": "{iv_pct}_{iv_ads}",
          "nickname_wait_min": 3,
          "nickname_wait_max": 5
        }
      },
      {
        "type": "EvolvePokemon",
        "config": {
          "enabled": false,
          "evolve_list": "all",
          "donot_evolve_list": "none",
          "first_evolve_by": "cp",
          "evolve_above_cp": 500,
          "evolve_above_iv": 0.8,
          "logic": "or",
          "min_evolve_speed": 25,
          "max_evolve_speed": 30,
          "use_lucky_egg": false
        }
      },
      {
        "type": "UseIncense",
        "config": {
          "use_incense": true,
          "use_order": [
            "ordinary",
            "spicy",
            "cool",
            "floral" 
          ]
        }
      },
      {
        "type": "RecycleItems",
        "config": {
          "enabled": true,
          "min_empty_space": 5,
          "item_filter": {
            "Pokeball":       { "keep" : 60 },
            "Greatball":      { "keep" : 80 },
            "Ultraball":      { "keep" : 100 },
            "Potion":         { "keep" : 0 },
            "Super Potion":   { "keep" : 0 },
            "Hyper Potion":   { "keep" : 0 },
            "Max Potion":     { "keep" : 0 },
            "Revive":         { "keep" : 0 },
            "Max Revive":     { "keep" : 0 },
            "Razz Berry":     { "keep" : 70 }
          },
          "recycle_wait_min": 3,
          "recycle_wait_max": 5
        }
      },
      {
        "type": "CatchPokemon",
        "config": {
          "enabled": true,
          "catch_visible_pokemon": true,
          "catch_lured_pokemon": true,
          "min_ultraball_to_keep": 5,
          "berry_threshold": 0.35,
          "vip_berry_threshold": 0.9,
          "treat_unseen_as_vip": true,
          "daily_catch_limit": 800,
          "catch_throw_parameters": {
            "excellent_rate": 0.1,
            "great_rate": 0.5,
            "nice_rate": 0.3,
            "normal_rate": 0.1,
            "spin_success_rate" : 0.6,
            "hit_rate": 0.75
          },
          "catch_simulation": {
            "flee_count": 3,
            "flee_duration": 2,
            "catch_wait_min": 3,
            "catch_wait_max": 6,
            "berry_wait_min": 3,
            "berry_wait_max": 5,
            "changeball_wait_min": 3,
            "changeball_wait_max": 5,
            "newtodex_wait_min": 20, 
            "newtodex_wait_max": 30
          }
        }
      },
      {
        "type": "SpinFort",
        "config": {
          "enabled": true,
          "spin_wait_min": 3,
          "spin_wait_max": 5,
          "daily_spin_limit": 1900
        }
      },
      { "type": "UpdateWebInventory",
        "config": {
          "enabled": true
        }
      },
      {
        "type": "MoveToFort",
        "config": {
          "enabled": true,
          "lure_attraction": true,
          "lure_max_distance": 2000,
          "walker": "StepWalker",
          "log_interval": 5
        }
      },
      {
        "type": "FollowSpiral",
        "config": {
          "enabled": true,
          "diameter": 4,
          "step_size": 70
        }
      }
    ],
    "map_object_cache_time": 5,
    "forts": {
      "avoid_circles": true,
      "max_circle_size": 50,
      "cache_recent_forts": true
    },
    "pokemon_bag": {
      "// if 'show_at_start' is true, it will log all the pokemons in the bag (not eggs) at bot start": {},
      "show_at_start": true,
      "// if 'show_count' is true, it will show the amount of each pokemon (minimum 1)": {},
      "show_count": true,
      "// if 'show_candies' is true, it will show the amount of candies for each pokemon": {},
      "show_candies": true,
      "// 'pokemon_info' parameter define which info to show for each pokemon": {},
      "// the available options are": {},
      "// ['cp', 'iv_ads', 'iv_pct', 'ivcp', 'ncp', 'level', 'hp', 'moveset', 'dps']": {},
      "pokemon_info": ["cp"]
    },
    "walk_max": 4.16,
    "walk_min": 2.16,
    "alt_min": 500,
    "alt_max": 1000,
    "sleep_schedule": [
      {
        "time": "17:00",
        "duration": "5:30",
        "time_random_offset": "00:30",
        "duration_random_offset": "00:30",
        "wake_up_at_location": ""
      },
      {
        "time": "06:45",
        "duration": "3:00",
        "time_random_offset": "01:00",
        "duration_random_offset": "00:30",
        "wake_up_at_location": ""
      }
    ],
    "gps_default_altitude": 8.0,
    "replicate_gps_xy_noise": false,
    "replicate_gps_z_noise": false,
    "gps_xy_noise_range": 0.000125,
    "gps_z_noise_range": 12.5,
    "debug": false,
    "test": false,
    "walker_limit_output": false,
    "health_record": false,
    "location_cache": false,
    "distance_unit": "km",
    "reconnecting_timeout": 15,
    "logging": {
      "color": true,
      "show_datetime": true,
      "show_process_name": false,
      "show_log_level": false,
      "show_thread_name": false
    },
    "catch": {
      "any": {"candy_threshold" : 2900 ,"catch_above_cp": 0, "catch_above_iv": 0, "logic": "or"},
      "// Example of always catching Rattata:": {},
      "// Rattata": { "always_catch" : true }
    },
    "release": {
      "any": {"release_below_cp": 0, "release_below_iv": 0, "logic": "or"},
      "// Example of always releasing Rattata:": {},
      "// Rattata": {"always_release": true},
      "// Example of keeping 3 stronger (based on CP) Pidgey:": {},
      "// Pidgey": {"keep_best_cp": 3},
      "// Keep no more than 3 best IV pokemon for every pokemon type": {},
      "// any": {"keep_best_iv": 3},
      "// Discard all pokemon in bag except 100 pokemon with best CP": {},
      "// all": {"keep_best_cp": 100},
      "// Example of custom order of static criterion": {},
      "// Zubat": {"keep_best_custom": "iv, cp, hp_max", "amount":2},
      "Bulbasaur": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Ivysaur": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Venusaur": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Charmander": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Charmeleon": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Charizard": {"keep_best_cp": 4, "keep_best_iv": 1},
      "Squirtle": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Wartortle": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Blastoise": {"keep_best_cp": 4, "keep_best_iv": 1},
      "Caterpie": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Metapod": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Butterfree": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Weedle": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Kakuna": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Beedrill": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Pidgey": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Pidgeotto": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Pidgeot": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Rattata": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Raticate": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Spearow": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Fearow": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Ekans": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Arbok": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Pikachu": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Raichu": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Sandshrew": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Sandslash": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Nidoran F": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Nidorina": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Nidoqueen": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Nidoran M": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Nidorino": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Nidokng": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Clefairy": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Clefable": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Vulpix": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Ninetails": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Jigglypuff": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Wigglytuff": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Zubat": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Golbat": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Oddish": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Gloom": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Vileplume": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Paras": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Parasect": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Venonat": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Venomoth": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Diglett": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Dugtrio": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Meowth": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Persan": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Psyduck": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Golduck": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Mankey": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Primeape": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Growlithe": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Arcanine": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Poliwag": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Poliwhirl": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Poliwrath": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Abra": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Kadabra": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Alakazam": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Machop": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Machoke": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Machamp": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Bellsprout": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Weepinbell": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Victreebel": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Tentacool": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Tentacruel": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Geodude": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Graveler": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Golem": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Ponyta": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Rapidash": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Slowpoke": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Slowbro": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Magnemite": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Magneton": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Farfetch'd": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Doduo": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Dodrio": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Seel": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Dewgong": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Grimer": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Muk": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Shellder": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Cloyster": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Gastly": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Haunter": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Gengar": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Onix": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Drowzee": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Hypno": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Krabby": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Kingler": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Voltorb": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Electrode": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Exeggcute": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Exeggutor": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Cubone": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Marowak": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Hitmonlee": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Hitmonchan": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Lickitung": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Koffing": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Weezing": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Rhyhorn": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Rhydon": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Chansey": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Tangela": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Kangaskhan": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Horsea": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Seadra": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Goldeen": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Seaking": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Staryu": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Starmie": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Mr. Mime": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Scyther": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Jynx": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Electabuzz": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Magmar": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Pinsir": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Tauros": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Magikarp": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Gyarados": {"keep_best_cp": 4, "keep_best_iv": 1},
      "Lapras": {"keep_best_cp": 4, "keep_best_iv": 1},
      "Eevee": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Vaporeon": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Jolteon": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Flareon": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Porygon": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Omanyte": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Omastar": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Kabuto": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Kabutops": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Aerodactyl": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Snorlax": {"keep_best_cp": 4, "keep_best_iv": 1},
      "Dratini": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Dragonair": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Dragonite": {"keep_best_cp": 4, "keep_best_iv": 1}
    },
    "vips" : {
        "Any pokemon put here directly force to use Berry & Best Ball to capture, to secure the capture rate": {},
        "any": {"catch_above_cp": 1200, "catch_above_iv": 0.9, "logic": "or" },
        "Lapras": {},
        "Moltres": {},
        "Zapdos": {},
        "Articuno": {},

        "// S-Tier pokemons (if pokemon can be evolved into tier, list the representative)": {},
        "Mewtwo": {},
        "Dragonite": {},
        "Snorlax": {},
        "// Mew evolves to Mewtwo": {},
        "Mew": {},
        "Arcanine": {},
        "Vaporeon": {},
        "Jolteon": {},
        "Gyarados": {},
        "Exeggutor": {},
        "Muk": {},
        "Weezing": {},
        "Flareon": {}
    },
    "websocket": {
      "start_embedded_server": true,
      "server_url": "127.0.0.1:4000"
    }
}

```
### Output when issue occurred

```
Traceback (most recent call last):
  File "pokecli.py", line 795, in <module>
    main()
  File "pokecli.py", line 142, in main
    bot = start_bot(bot, config)
  File "pokecli.py", line 102, in start_bot
    initialize_task(bot, config)
  File "pokecli.py", line 93, in initialize_task
    tree = TreeConfigBuilder(bot, config.raw_tasks).build()
  File "/home/dibyendu/PokemonGo/PokemonGo-Bot-Dev/PokemonGo-Bot/pokemongo_bot/tree_config_builder.py", line 79, in build
    instance = worker(self.bot, task_config)
  File "/home/dibyendu/PokemonGo/PokemonGo-Bot-Dev/PokemonGo-Bot/pokemongo_bot/base_task.py", line 23, in __init__
    self.initialize()
  File "/home/dibyendu/PokemonGo/PokemonGo-Bot-Dev/PokemonGo-Bot/pokemongo_bot/cell_workers/follow_spiral.py", line 23, in initialize
    self.points = cycle(self.spiral+list(reversed(self.spiral)[1:-1]))
TypeError: 'listreverseiterator' object has no attribute '__getitem__'
```
### Steps to Reproduce

Run the bot in the latest commit
### Other Information

OS: 
Ubuntu 15.04
Branch: 
dev
Git Commit: 
27534e0e35a4d6634da082c79952254a0845e3cd
Python Version: 
Python 2.7.9

Error: Bot giving errors in the latest commit
### Expected Behavior

Bot should work
### Actual Behavior

Bot gives errors on startup
### Your FULL config.json (remove your username, password, gmapkey and any other private info)

```
{
    "websocket_server": false,
    "heartbeat_threshold": 10,
    "enable_social": false,
    "live_config_update": {
      "enabled": false,
      "tasks_only": false
    },
    "tasks": [
      {
        "type": "TelegramTask",
        "config": {
          "enabled": false,
          "master": null,
          "alert_catch": {
            "all": {"operator": "and", "cp": 1300, "iv": 0.95},
            "Snorlax": {"operator": "or", "cp": 900, "iv": 0.9}
          }
        }
      },
      {
        "//NOTE: This task MUST be placed on the top of task list": {},
        "type": "RandomAlivePause",
        "config": {
          "enabled": true,
          "min_duration": "00:00:10",
          "max_duration": "00:00:30",
          "min_interval": "01:00:00",
          "max_interval": "01:30:00"
        }
      },
      {
        "type": "HandleSoftBan"
      },
      {
        "type": "RandomPause",
        "config": {
          "enabled": true,
          "min_duration": "00:00:10",
          "max_duration": "00:00:30",
          "min_interval": "00:10:00",
          "max_interval": "02:00:00"
        }
      },
      {
        "type": "CompleteTutorial",
        "config": {
          "enabled": false,
          "// set a name": "",
          "nickname": "",
          "team": 0
        }
      },
      {
        "type": "CollectLevelUpReward",
        "config": {
          "collect_reward": true,
          "level_limit": -1
        }
      },
      {
        "type": "IncubateEggs",
        "config": {
          "enabled": true,
          "infinite_longer_eggs_first": false,
          "breakable_longer_eggs_first": true,
          "min_interval": 60,
         "infinite": [2,5,10],
         "breakable": [2,5,10]
        }
      },
      {
        "type": "UpdateLiveStats",
        "config": {
          "enabled": true,
          "min_interval": 60,
          "stats": ["username", "uptime", "stardust_earned", "xp_earned", "xp_per_hour", "stops_visited"],
          "terminal_log": true,
          "terminal_title": true
        }
      },
      {
        "type": "UpdateLiveInventory",
        "config": {
          "enabled": true,
          "min_interval": 120,
          "show_all_multiple_lines": false,
          "items": ["pokemon_bag", "space_info", "pokeballs", "greatballs", "ultraballs", "razzberries"]
        }
      },
      {
        "type": "ShowBestPokemon",
        "config": {
          "enabled": true,
          "min_interval": 120,
          "amount": 15,
          "order_by": "cp",
          "info_to_show": ["cp"]
        }
      },
      {
        "type": "TransferPokemon",
        "config": {
          "enabled": true,
          "min_free_slot": 3,
          "transfer_wait_min": 3,
          "transfer_wait_max": 5
        }
      },
      {
        "type": "NicknamePokemon",
        "config": {
          "enabled": true,
          "nickname_above_iv": 0.9,
          "nickname_template": "{iv_pct}_{iv_ads}",
          "nickname_wait_min": 3,
          "nickname_wait_max": 5
        }
      },
      {
        "type": "EvolvePokemon",
        "config": {
          "enabled": false,
          "evolve_list": "all",
          "donot_evolve_list": "none",
          "first_evolve_by": "cp",
          "evolve_above_cp": 500,
          "evolve_above_iv": 0.8,
          "logic": "or",
          "min_evolve_speed": 25,
          "max_evolve_speed": 30,
          "use_lucky_egg": false
        }
      },
      {
        "type": "UseIncense",
        "config": {
          "use_incense": true,
          "use_order": [
            "ordinary",
            "spicy",
            "cool",
            "floral" 
          ]
        }
      },
      {
        "type": "RecycleItems",
        "config": {
          "enabled": true,
          "min_empty_space": 5,
          "item_filter": {
            "Pokeball":       { "keep" : 60 },
            "Greatball":      { "keep" : 80 },
            "Ultraball":      { "keep" : 100 },
            "Potion":         { "keep" : 0 },
            "Super Potion":   { "keep" : 0 },
            "Hyper Potion":   { "keep" : 0 },
            "Max Potion":     { "keep" : 0 },
            "Revive":         { "keep" : 0 },
            "Max Revive":     { "keep" : 0 },
            "Razz Berry":     { "keep" : 70 }
          },
          "recycle_wait_min": 3,
          "recycle_wait_max": 5
        }
      },
      {
        "type": "CatchPokemon",
        "config": {
          "enabled": true,
          "catch_visible_pokemon": true,
          "catch_lured_pokemon": true,
          "min_ultraball_to_keep": 5,
          "berry_threshold": 0.35,
          "vip_berry_threshold": 0.9,
          "treat_unseen_as_vip": true,
          "daily_catch_limit": 800,
          "catch_throw_parameters": {
            "excellent_rate": 0.1,
            "great_rate": 0.5,
            "nice_rate": 0.3,
            "normal_rate": 0.1,
            "spin_success_rate" : 0.6,
            "hit_rate": 0.75
          },
          "catch_simulation": {
            "flee_count": 3,
            "flee_duration": 2,
            "catch_wait_min": 3,
            "catch_wait_max": 6,
            "berry_wait_min": 3,
            "berry_wait_max": 5,
            "changeball_wait_min": 3,
            "changeball_wait_max": 5,
            "newtodex_wait_min": 20, 
            "newtodex_wait_max": 30
          }
        }
      },
      {
        "type": "SpinFort",
        "config": {
          "enabled": true,
          "spin_wait_min": 3,
          "spin_wait_max": 5,
          "daily_spin_limit": 1900
        }
      },
      { "type": "UpdateWebInventory",
        "config": {
          "enabled": true
        }
      },
      {
        "type": "MoveToFort",
        "config": {
          "enabled": true,
          "lure_attraction": true,
          "lure_max_distance": 2000,
          "walker": "StepWalker",
          "log_interval": 5
        }
      },
      {
        "type": "FollowSpiral",
        "config": {
          "enabled": true,
          "diameter": 4,
          "step_size": 70
        }
      }
    ],
    "map_object_cache_time": 5,
    "forts": {
      "avoid_circles": true,
      "max_circle_size": 50,
      "cache_recent_forts": true
    },
    "pokemon_bag": {
      "// if 'show_at_start' is true, it will log all the pokemons in the bag (not eggs) at bot start": {},
      "show_at_start": true,
      "// if 'show_count' is true, it will show the amount of each pokemon (minimum 1)": {},
      "show_count": true,
      "// if 'show_candies' is true, it will show the amount of candies for each pokemon": {},
      "show_candies": true,
      "// 'pokemon_info' parameter define which info to show for each pokemon": {},
      "// the available options are": {},
      "// ['cp', 'iv_ads', 'iv_pct', 'ivcp', 'ncp', 'level', 'hp', 'moveset', 'dps']": {},
      "pokemon_info": ["cp"]
    },
    "walk_max": 4.16,
    "walk_min": 2.16,
    "alt_min": 500,
    "alt_max": 1000,
    "sleep_schedule": [
      {
        "time": "17:00",
        "duration": "5:30",
        "time_random_offset": "00:30",
        "duration_random_offset": "00:30",
        "wake_up_at_location": ""
      },
      {
        "time": "06:45",
        "duration": "3:00",
        "time_random_offset": "01:00",
        "duration_random_offset": "00:30",
        "wake_up_at_location": ""
      }
    ],
    "gps_default_altitude": 8.0,
    "replicate_gps_xy_noise": false,
    "replicate_gps_z_noise": false,
    "gps_xy_noise_range": 0.000125,
    "gps_z_noise_range": 12.5,
    "debug": false,
    "test": false,
    "walker_limit_output": false,
    "health_record": false,
    "location_cache": false,
    "distance_unit": "km",
    "reconnecting_timeout": 15,
    "logging": {
      "color": true,
      "show_datetime": true,
      "show_process_name": false,
      "show_log_level": false,
      "show_thread_name": false
    },
    "catch": {
      "any": {"candy_threshold" : 2900 ,"catch_above_cp": 0, "catch_above_iv": 0, "logic": "or"},
      "// Example of always catching Rattata:": {},
      "// Rattata": { "always_catch" : true }
    },
    "release": {
      "any": {"release_below_cp": 0, "release_below_iv": 0, "logic": "or"},
      "// Example of always releasing Rattata:": {},
      "// Rattata": {"always_release": true},
      "// Example of keeping 3 stronger (based on CP) Pidgey:": {},
      "// Pidgey": {"keep_best_cp": 3},
      "// Keep no more than 3 best IV pokemon for every pokemon type": {},
      "// any": {"keep_best_iv": 3},
      "// Discard all pokemon in bag except 100 pokemon with best CP": {},
      "// all": {"keep_best_cp": 100},
      "// Example of custom order of static criterion": {},
      "// Zubat": {"keep_best_custom": "iv, cp, hp_max", "amount":2},
      "Bulbasaur": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Ivysaur": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Venusaur": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Charmander": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Charmeleon": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Charizard": {"keep_best_cp": 4, "keep_best_iv": 1},
      "Squirtle": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Wartortle": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Blastoise": {"keep_best_cp": 4, "keep_best_iv": 1},
      "Caterpie": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Metapod": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Butterfree": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Weedle": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Kakuna": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Beedrill": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Pidgey": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Pidgeotto": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Pidgeot": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Rattata": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Raticate": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Spearow": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Fearow": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Ekans": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Arbok": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Pikachu": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Raichu": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Sandshrew": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Sandslash": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Nidoran F": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Nidorina": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Nidoqueen": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Nidoran M": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Nidorino": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Nidokng": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Clefairy": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Clefable": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Vulpix": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Ninetails": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Jigglypuff": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Wigglytuff": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Zubat": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Golbat": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Oddish": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Gloom": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Vileplume": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Paras": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Parasect": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Venonat": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Venomoth": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Diglett": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Dugtrio": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Meowth": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Persan": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Psyduck": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Golduck": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Mankey": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Primeape": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Growlithe": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Arcanine": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Poliwag": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Poliwhirl": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Poliwrath": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Abra": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Kadabra": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Alakazam": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Machop": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Machoke": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Machamp": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Bellsprout": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Weepinbell": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Victreebel": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Tentacool": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Tentacruel": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Geodude": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Graveler": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Golem": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Ponyta": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Rapidash": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Slowpoke": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Slowbro": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Magnemite": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Magneton": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Farfetch'd": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Doduo": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Dodrio": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Seel": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Dewgong": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Grimer": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Muk": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Shellder": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Cloyster": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Gastly": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Haunter": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Gengar": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Onix": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Drowzee": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Hypno": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Krabby": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Kingler": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Voltorb": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Electrode": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Exeggcute": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Exeggutor": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Cubone": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Marowak": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Hitmonlee": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Hitmonchan": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Lickitung": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Koffing": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Weezing": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Rhyhorn": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Rhydon": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Chansey": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Tangela": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Kangaskhan": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Horsea": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Seadra": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Goldeen": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Seaking": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Staryu": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Starmie": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Mr. Mime": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Scyther": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Jynx": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Electabuzz": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Magmar": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Pinsir": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Tauros": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Magikarp": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Gyarados": {"keep_best_cp": 4, "keep_best_iv": 1},
      "Lapras": {"keep_best_cp": 4, "keep_best_iv": 1},
      "Eevee": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Vaporeon": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Jolteon": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Flareon": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Porygon": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Omanyte": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Omastar": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Kabuto": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Kabutops": {"keep_best_cp": 3, "keep_best_iv": 1},
      "Aerodactyl": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Snorlax": {"keep_best_cp": 4, "keep_best_iv": 1},
      "Dratini": {"keep_best_cp": 1, "keep_best_iv": 1},
      "Dragonair": {"keep_best_cp": 2, "keep_best_iv": 1},
      "Dragonite": {"keep_best_cp": 4, "keep_best_iv": 1}
    },
    "vips" : {
        "Any pokemon put here directly force to use Berry & Best Ball to capture, to secure the capture rate": {},
        "any": {"catch_above_cp": 1200, "catch_above_iv": 0.9, "logic": "or" },
        "Lapras": {},
        "Moltres": {},
        "Zapdos": {},
        "Articuno": {},

        "// S-Tier pokemons (if pokemon can be evolved into tier, list the representative)": {},
        "Mewtwo": {},
        "Dragonite": {},
        "Snorlax": {},
        "// Mew evolves to Mewtwo": {},
        "Mew": {},
        "Arcanine": {},
        "Vaporeon": {},
        "Jolteon": {},
        "Gyarados": {},
        "Exeggutor": {},
        "Muk": {},
        "Weezing": {},
        "Flareon": {}
    },
    "websocket": {
      "start_embedded_server": true,
      "server_url": "127.0.0.1:4000"
    }
}

```
### Output when issue occurred

```
Traceback (most recent call last):
  File "pokecli.py", line 795, in <module>
    main()
  File "pokecli.py", line 142, in main
    bot = start_bot(bot, config)
  File "pokecli.py", line 102, in start_bot
    initialize_task(bot, config)
  File "pokecli.py", line 93, in initialize_task
    tree = TreeConfigBuilder(bot, config.raw_tasks).build()
  File "/home/dibyendu/PokemonGo/PokemonGo-Bot-Dev/PokemonGo-Bot/pokemongo_bot/tree_config_builder.py", line 79, in build
    instance = worker(self.bot, task_config)
  File "/home/dibyendu/PokemonGo/PokemonGo-Bot-Dev/PokemonGo-Bot/pokemongo_bot/base_task.py", line 23, in __init__
    self.initialize()
  File "/home/dibyendu/PokemonGo/PokemonGo-Bot-Dev/PokemonGo-Bot/pokemongo_bot/cell_workers/follow_spiral.py", line 23, in initialize
    self.points = cycle(self.spiral+list(reversed(self.spiral)[1:-1]))
TypeError: 'listreverseiterator' object has no attribute '__getitem__'
```
### Steps to Reproduce

Run the bot in the latest commit
### Other Information

OS: 
Ubuntu 15.04
Branch: 
dev
Git Commit: 
27534e0e35a4d6634da082c79952254a0845e3cd
Python Version: 
Python 2.7.9



Discussion:
Same here, and i use Polylinewalker

Temporary Solution: Remove the task FollowSpiral

You can try to replace the line 23 with 
`self.points = cycle(self.spiral+list(list(reversed(self.spiral))[1:-1]))` 
in follow_spiral.py to resolve this problem temporarily

it works, thanks guys!

Thanks @SteinX... it works...

Same here, and i use Polylinewalker

Temporary Solution: Remove the task FollowSpiral

You can try to replace the line 23 with 
`self.points = cycle(self.spiral+list(list(reversed(self.spiral))[1:-1]))` 
in follow_spiral.py to resolve this problem temporarily

it works, thanks guys!

Thanks @SteinX... it works...


Resolving patch:
diff --git a/pokemongo_bot/cell_workers/follow_spiral.py b/pokemongo_bot/cell_workers/follow_spiral.py
--- a/pokemongo_bot/cell_workers/follow_spiral.py
+++ b/pokemongo_bot/cell_workers/follow_spiral.py
@@ -20,7 +20,7 @@ def initialize(self):
         self.spiral = self._generate_spiral(
             self.origin_lat, self.origin_lon, self.step_size, self.diameter_to_steps
         )
-        self.points = cycle(self.spiral+list(reversed(self.spiral)[1:-1]))
+        self.points = cycle(self.spiral+list(reversed(self.spiral))[1:-1])
         self.next_point = None
 
     @staticmethod


Test patch: