text: # coding: utf-8
  from __future__ import unicode_literals, division, absolute_import, print_function
  
  import os
  import shutil
  import subprocess
  import sys
  from urllib.parse import urlparse
  from urllib.request import urlopen
  
  
  run_args = [
      {
          'name': 'version',
          'kwarg': 'version',
      },
      {
          'name': 'arch',
          'kwarg': 'arch',
      },
  ]
  
  
  def run(version=None, arch=None):
      """
      Installs a version of Python on Windows
  
      :return:
          A bool - if Python was installed successfully
      """
  
      if sys.platform != 'win32':
          raise ValueError('python-install is only designed for Windows')
  
      if version not in set(['2.6', '3.3']):
          raise ValueError('Invalid version: %r' % version)
  
      if arch not in set(['x86', 'x64']):
          raise ValueError('Invalid arch: %r' % arch)
  
      if version == '2.6':
          if arch == 'x64':
              url = 'https://www.python.org/ftp/python/2.6.6/python-2.6.6.amd64.msi'
          else:
              url = 'https://www.python.org/ftp/python/2.6.6/python-2.6.6.msi'
      else:
          if arch == 'x64':
              url = 'https://www.python.org/ftp/python/3.3.5/python-3.3.5.amd64.msi'
          else:
              url = 'https://www.python.org/ftp/python/3.3.5/python-3.3.5.msi'
  
      home = os.environ.get('USERPROFILE')
      msi_filename = os.path.basename(urlparse(url).path)
      msi_path = os.path.join(home, msi_filename)
      install_path = os.path.join(os.environ.get('LOCALAPPDATA'), 'Python%s-%s' % (version, arch))
  
      if os.path.exists(os.path.join(install_path, 'python.exe')):
          print(install_path)
          return True
  
      try:
          with urlopen(url) as r, open(msi_path, 'wb') as f:
              shutil.copyfileobj(r, f)
  
          proc = subprocess.Popen(
              'msiexec /passive /a %s TARGETDIR=%s' % (msi_filename, install_path),
              shell=True,
              cwd=home
          )
          proc.communicate()
  
      finally:
          if os.path.exists(msi_path):
              os.unlink(msi_path)
  
      print(install_path)
      return True
  