prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Game Creator RC initialised with wrong game API URL
  The `REPLACE_ME` change in one of the latest PR's has broken the game on minikube level in `minikube.py`.  The URL is incorrect so minikube does not work and prohibits testing. 
  
  
  
  </issue>
  <code>
  [start of setup.py]
  1 # -*- coding: utf-8 -*-
  2 from setuptools import find_packages, setup
  3 
  4 import versioneer
  5 
  6 setup(
  7     name='aimmo',
  8     cmdclass=versioneer.get_cmdclass(),
  9     packages=find_packages(),
  10     include_package_data=True,
  11     install_requires=[
  12         'django >= 1.8.3, < 1.9.0',
  13         'django-autoconfig >= 0.3.6, < 1.0.0',
  14         'django-forms-bootstrap',
  15         'django-js-reverse',
  16         'eventlet',
  17         'flask',
  18         'flask-socketio',
  19         'requests',
  20         'six',
  21         'pykube',
  22         'hypothesis',
  23         'flask-cors >= 3.0, < 3.1',
  24         'psutil >= 5.4, < 5.5',
  25     ],
  26     tests_require=[
  27         'django-setuptest',
  28         'httmock',
  29     ],
  30     test_suite='setuptest.setuptest.SetupTestSuite',
  31     version=versioneer.get_version(),
  32     zip_safe=False,
  33 )
  34
  [end of setup.py]
  [start of aimmo_runner/shell_api.py]
  1 import subprocess
  2 import sys
  3 import os
  4 import stat
  5 import errno
  6 import platform
  7 from subprocess import CalledProcessError
  8 from urllib import urlretrieve, urlopen
  9 
  10 BASE_DIR = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
  11 TEST_BIN = os.path.join(BASE_DIR, 'test-bin')
  12 OS = platform.system().lower()
  13 FILE_SUFFIX = '.exe' if OS == 'windows' else ''
  14 KUBECTL = os.path.join(TEST_BIN, 'kubectl%s' % FILE_SUFFIX)
  15 MINIKUBE = os.path.join(TEST_BIN, 'minikube%s' % FILE_SUFFIX)
  16 FNULL = open(os.devnull, 'w')
  17 
  18 def log(message):
  19     sys.stderr.write(message + "\n")
  20 
  21 
  22 def run_command(args, capture_output=False):
  23     try:
  24         if capture_output:
  25             return subprocess.check_output(args)
  26         else:
  27             subprocess.check_call(args)
  28     except CalledProcessError as e:
  29         log('Command failed with exit status %d: %s' % (e.returncode, ' '.join(args)))
  30         raise
  31 
  32 
  33 def run_command_async(args, capture_output=False):
  34     if capture_output is True:
  35         p = subprocess.Popen(args, stdout=FNULL, stderr=subprocess.STDOUT)
  36     else:
  37         p = subprocess.Popen(args)
  38     return p
  39 
  40 
  41 def create_test_bin():
  42     try:
  43         os.makedirs(TEST_BIN)
  44     except OSError as err:
  45         if err.errno != errno.EEXIST:
  46             raise
  47 
  48 
  49 def binary_exists(filename):
  50     # Check if binary is callable on our path
  51     try:
  52         run_command([filename], True)
  53         return True
  54     except OSError:
  55         return False
  56 
  57 
  58 def download_exec(url, dest):
  59     dest = urlretrieve(url, dest)[0]
  60     make_exec(dest)
  61 
  62 
  63 def make_exec(file):
  64     current_stat = os.stat(file)
  65     os.chmod(file, current_stat.st_mode | stat.S_IEXEC)
  66 
  67 
  68 def get_latest_github_version(repo):
  69     result = urlopen('https://github.com/%s/releases/latest' % repo)
  70     return result.geturl().split('/')[-1]
  71 
  72
  [end of aimmo_runner/shell_api.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/aimmo_runner/shell_api.py b/aimmo_runner/shell_api.py
  --- a/aimmo_runner/shell_api.py
  +++ b/aimmo_runner/shell_api.py
  @@ -15,6 +15,7 @@
   MINIKUBE = os.path.join(TEST_BIN, 'minikube%s' % FILE_SUFFIX)
   FNULL = open(os.devnull, 'w')
   
  +
   def log(message):
       sys.stderr.write(message + "\n")
   
  diff --git a/setup.py b/setup.py
  --- a/setup.py
  +++ b/setup.py
  @@ -26,6 +26,10 @@
       tests_require=[
           'django-setuptest',
           'httmock',
  +        'mock == 2.0.0',
  +        'docker == 2.7.0',
  +        'kubernetes == 4.0.0',
  +        'PyYAML == 3.12',
       ],
       test_suite='setuptest.setuptest.SetupTestSuite',
       version=versioneer.get_version(),
  
verification_info: {"golden_diff": "diff --git a/aimmo_runner/shell_api.py b/aimmo_runner/shell_api.py\n--- a/aimmo_runner/shell_api.py\n+++ b/aimmo_runner/shell_api.py\n@@ -15,6 +15,7 @@\n MINIKUBE = os.path.join(TEST_BIN, 'minikube%s' % FILE_SUFFIX)\n FNULL = open(os.devnull, 'w')\n \n+\n def log(message):\n     sys.stderr.write(message + \"\\n\")\n \ndiff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -26,6 +26,10 @@\n     tests_require=[\n         'django-setuptest',\n         'httmock',\n+        'mock == 2.0.0',\n+        'docker == 2.7.0',\n+        'kubernetes == 4.0.0',\n+        'PyYAML == 3.12',\n     ],\n     test_suite='setuptest.setuptest.SetupTestSuite',\n     version=versioneer.get_version(),\n", "issue": "Game Creator RC initialised with wrong game API URL\nThe `REPLACE_ME` change in one of the latest PR's has broken the game on minikube level in `minikube.py`.  The URL is incorrect so minikube does not work and prohibits testing. \r\n\r\n\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\nfrom setuptools import find_packages, setup\n\nimport versioneer\n\nsetup(\n    name='aimmo',\n    cmdclass=versioneer.get_cmdclass(),\n    packages=find_packages(),\n    include_package_data=True,\n    install_requires=[\n        'django >= 1.8.3, < 1.9.0',\n        'django-autoconfig >= 0.3.6, < 1.0.0',\n        'django-forms-bootstrap',\n        'django-js-reverse',\n        'eventlet',\n        'flask',\n        'flask-socketio',\n        'requests',\n        'six',\n        'pykube',\n        'hypothesis',\n        'flask-cors >= 3.0, < 3.1',\n        'psutil >= 5.4, < 5.5',\n    ],\n    tests_require=[\n        'django-setuptest',\n        'httmock',\n    ],\n    test_suite='setuptest.setuptest.SetupTestSuite',\n    version=versioneer.get_version(),\n    zip_safe=False,\n)\n", "path": "setup.py"}, {"content": "import subprocess\nimport sys\nimport os\nimport stat\nimport errno\nimport platform\nfrom subprocess import CalledProcessError\nfrom urllib import urlretrieve, urlopen\n\nBASE_DIR = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))\nTEST_BIN = os.path.join(BASE_DIR, 'test-bin')\nOS = platform.system().lower()\nFILE_SUFFIX = '.exe' if OS == 'windows' else ''\nKUBECTL = os.path.join(TEST_BIN, 'kubectl%s' % FILE_SUFFIX)\nMINIKUBE = os.path.join(TEST_BIN, 'minikube%s' % FILE_SUFFIX)\nFNULL = open(os.devnull, 'w')\n\ndef log(message):\n    sys.stderr.write(message + \"\\n\")\n\n\ndef run_command(args, capture_output=False):\n    try:\n        if capture_output:\n            return subprocess.check_output(args)\n        else:\n            subprocess.check_call(args)\n    except CalledProcessError as e:\n        log('Command failed with exit status %d: %s' % (e.returncode, ' '.join(args)))\n        raise\n\n\ndef run_command_async(args, capture_output=False):\n    if capture_output is True:\n        p = subprocess.Popen(args, stdout=FNULL, stderr=subprocess.STDOUT)\n    else:\n        p = subprocess.Popen(args)\n    return p\n\n\ndef create_test_bin():\n    try:\n        os.makedirs(TEST_BIN)\n    except OSError as err:\n        if err.errno != errno.EEXIST:\n            raise\n\n\ndef binary_exists(filename):\n    # Check if binary is callable on our path\n    try:\n        run_command([filename], True)\n        return True\n    except OSError:\n        return False\n\n\ndef download_exec(url, dest):\n    dest = urlretrieve(url, dest)[0]\n    make_exec(dest)\n\n\ndef make_exec(file):\n    current_stat = os.stat(file)\n    os.chmod(file, current_stat.st_mode | stat.S_IEXEC)\n\n\ndef get_latest_github_version(repo):\n    result = urlopen('https://github.com/%s/releases/latest' % repo)\n    return result.geturl().split('/')[-1]\n\n", "path": "aimmo_runner/shell_api.py"}]}