import contextlib
import itertools
import os
import pathlib
import re
import subprocess

import attr


@attr.s
class Installation:

    path = attr.ib(convert=pathlib.Path)

    @property
    def python(self):
        return self.path.joinpath('python.exe')

    @property
    def scripts_dir(self):
        return self.path.joinpath('Scripts')

    @property
    def pip(self):
        return self.scripts_dir.joinpath('pip.exe')

    def get_version_info(self):
        output = subprocess.check_output(
            [str(self.python), '--version'], encoding='ascii',
        ).strip()
        match = re.match(r'^Python (\d+)\.(\d+)\.(\d+)$', output)
        return match.groups()

    def find_script(self, name):
        names = itertools.chain([name], (
            '{}{}'.format(name, ext)
            for ext in os.environ['PATHEXT'].split(';')
        ))
        for name in names:
            with contextlib.suppress(FileNotFoundError):
                return self.scripts_dir.joinpath(name).resolve()
        raise FileNotFoundError(name)

import contextlib
import itertools
import os
import pathlib
import re
import subprocess

import attr


@attr.s
class Installation:

    path = attr.ib(convert=pathlib.Path)

    @property
    def python(self):
        return self.path.joinpath('python.exe')

    @property
    def scripts_dir(self):
        return self.path.joinpath('Scripts')

    @property
    def pip(self):
        return self.scripts_dir.joinpath('pip.exe')

    def get_version_info(self):
        output = subprocess.check_output(
            [str(self.python), '--version'], encoding='ascii',
        ).strip()
        match = re.match(r'^Python (\d+)\.(\d+)\.(\d+)$', output)
        return tuple(int(x) for x in match.groups())

    def find_script(self, name):
        names = itertools.chain([name], (
            '{}{}'.format(name, ext)
            for ext in os.environ['PATHEXT'].split(';')
        ))
        for name in names:
            with contextlib.suppress(FileNotFoundError):
                return self.scripts_dir.joinpath(name).resolve()
        raise FileNotFoundError(name)

Fix installation version info type
Fix installation version info type

  import contextlib
  import itertools
  import os
  import pathlib
  import re
  import subprocess
  
  import attr
  
  
  @attr.s
  class Installation:
  
      path = attr.ib(convert=pathlib.Path)
  
      @property
      def python(self):
          return self.path.joinpath('python.exe')
  
      @property
      def scripts_dir(self):
          return self.path.joinpath('Scripts')
  
      @property
      def pip(self):
          return self.scripts_dir.joinpath('pip.exe')
  
      def get_version_info(self):
          output = subprocess.check_output(
              [str(self.python), '--version'], encoding='ascii',
          ).strip()
          match = re.match(r'^Python (\d+)\.(\d+)\.(\d+)$', output)
-         return match.groups()
+         return tuple(int(x) for x in match.groups())
  
      def find_script(self, name):
          names = itertools.chain([name], (
              '{}{}'.format(name, ext)
              for ext in os.environ['PATHEXT'].split(';')
          ))
          for name in names:
              with contextlib.suppress(FileNotFoundError):
                  return self.scripts_dir.joinpath(name).resolve()
          raise FileNotFoundError(name)
  
Fix installation version info type
## Code Before:
import contextlib
import itertools
import os
import pathlib
import re
import subprocess

import attr


@attr.s
class Installation:

    path = attr.ib(convert=pathlib.Path)

    @property
    def python(self):
        return self.path.joinpath('python.exe')

    @property
    def scripts_dir(self):
        return self.path.joinpath('Scripts')

    @property
    def pip(self):
        return self.scripts_dir.joinpath('pip.exe')

    def get_version_info(self):
        output = subprocess.check_output(
            [str(self.python), '--version'], encoding='ascii',
        ).strip()
        match = re.match(r'^Python (\d+)\.(\d+)\.(\d+)$', output)
        return match.groups()

    def find_script(self, name):
        names = itertools.chain([name], (
            '{}{}'.format(name, ext)
            for ext in os.environ['PATHEXT'].split(';')
        ))
        for name in names:
            with contextlib.suppress(FileNotFoundError):
                return self.scripts_dir.joinpath(name).resolve()
        raise FileNotFoundError(name)

## Instruction:
Fix installation version info type
## Code After:
import contextlib
import itertools
import os
import pathlib
import re
import subprocess

import attr


@attr.s
class Installation:

    path = attr.ib(convert=pathlib.Path)

    @property
    def python(self):
        return self.path.joinpath('python.exe')

    @property
    def scripts_dir(self):
        return self.path.joinpath('Scripts')

    @property
    def pip(self):
        return self.scripts_dir.joinpath('pip.exe')

    def get_version_info(self):
        output = subprocess.check_output(
            [str(self.python), '--version'], encoding='ascii',
        ).strip()
        match = re.match(r'^Python (\d+)\.(\d+)\.(\d+)$', output)
        return tuple(int(x) for x in match.groups())

    def find_script(self, name):
        names = itertools.chain([name], (
            '{}{}'.format(name, ext)
            for ext in os.environ['PATHEXT'].split(';')
        ))
        for name in names:
            with contextlib.suppress(FileNotFoundError):
                return self.scripts_dir.joinpath(name).resolve()
        raise FileNotFoundError(name)
