import re
from urlparse import urlsplit

from bs4 import BeautifulSoup
import requests
from urlparse import urldefrag, urljoin

class PyPI(object):
    def __init__(self, index="http://pypi.python.org/simple"):
        self._index = index

    def list_packages(self):
        resp = requests.get(self._index)

        soup = BeautifulSoup(package_list)

        for link in soup.find_all("a"):
            yield link.text

    def list_files(self, package):
        package_uri = "%s/%s/" % (self._index, package)
        resp = requests.get(package_uri)

        soup = BeautifulSoup(resp.content)

        for link in soup.find_all("a"):
            # filter out links to home and download pages
            if "rel" in link.attrs:
                continue

            filename = link.text

            # filter out links to other web pages
            if urlsplit(filename).scheme:
                continue

            file_uri, frag = urldefrag(link.attrs['href'])
            file_uri = urljoin(package_uri, file_uri)

            mo = re.match(r"^md5=([a-fA-F0-9]{32})$", frag)
            md5 = mo.group(1) if mo else ""

            yield dict(filename=filename,
                       remote_uri=file_uri,
                       md5=md5)

import re
from urlparse import urlsplit

from bs4 import BeautifulSoup
import requests
from urlparse import urldefrag, urljoin

class PyPI(object):
    def __init__(self, index="http://pypi.python.org/simple"):
        self._index = index

    def list_packages(self):
        resp = requests.get(self._index)

        soup = BeautifulSoup(resp.content)

        for link in soup.find_all("a"):
            yield link.text

    def list_files(self, package):
        package_uri = "%s/%s/" % (self._index, package)
        resp = requests.get(package_uri)

        soup = BeautifulSoup(resp.content)

        for link in soup.find_all("a"):
            # filter out links to home and download pages
            if "rel" in link.attrs:
                continue

            filename = link.text

            # filter out links to other web pages
            if urlsplit(filename).scheme:
                continue

            file_uri, frag = urldefrag(link.attrs['href'])
            file_uri = urljoin(package_uri, file_uri)

            mo = re.match(r"^md5=([a-fA-F0-9]{32})$", frag)
            md5 = mo.group(1) if mo else ""

            yield dict(filename=filename,
                       remote_uri=file_uri,
                       md5=md5)

Replace reference to previously factored out variable
Replace reference to previously factored out variable

  import re
  from urlparse import urlsplit
  
  from bs4 import BeautifulSoup
  import requests
  from urlparse import urldefrag, urljoin
  
  class PyPI(object):
      def __init__(self, index="http://pypi.python.org/simple"):
          self._index = index
  
      def list_packages(self):
          resp = requests.get(self._index)
  
-         soup = BeautifulSoup(package_list)
+         soup = BeautifulSoup(resp.content)
  
          for link in soup.find_all("a"):
              yield link.text
  
      def list_files(self, package):
          package_uri = "%s/%s/" % (self._index, package)
          resp = requests.get(package_uri)
  
          soup = BeautifulSoup(resp.content)
  
          for link in soup.find_all("a"):
              # filter out links to home and download pages
              if "rel" in link.attrs:
                  continue
  
              filename = link.text
  
              # filter out links to other web pages
              if urlsplit(filename).scheme:
                  continue
  
              file_uri, frag = urldefrag(link.attrs['href'])
              file_uri = urljoin(package_uri, file_uri)
  
              mo = re.match(r"^md5=([a-fA-F0-9]{32})$", frag)
              md5 = mo.group(1) if mo else ""
  
              yield dict(filename=filename,
                         remote_uri=file_uri,
                         md5=md5)
  
Replace reference to previously factored out variable
## Code Before:
import re
from urlparse import urlsplit

from bs4 import BeautifulSoup
import requests
from urlparse import urldefrag, urljoin

class PyPI(object):
    def __init__(self, index="http://pypi.python.org/simple"):
        self._index = index

    def list_packages(self):
        resp = requests.get(self._index)

        soup = BeautifulSoup(package_list)

        for link in soup.find_all("a"):
            yield link.text

    def list_files(self, package):
        package_uri = "%s/%s/" % (self._index, package)
        resp = requests.get(package_uri)

        soup = BeautifulSoup(resp.content)

        for link in soup.find_all("a"):
            # filter out links to home and download pages
            if "rel" in link.attrs:
                continue

            filename = link.text

            # filter out links to other web pages
            if urlsplit(filename).scheme:
                continue

            file_uri, frag = urldefrag(link.attrs['href'])
            file_uri = urljoin(package_uri, file_uri)

            mo = re.match(r"^md5=([a-fA-F0-9]{32})$", frag)
            md5 = mo.group(1) if mo else ""

            yield dict(filename=filename,
                       remote_uri=file_uri,
                       md5=md5)

## Instruction:
Replace reference to previously factored out variable
## Code After:
import re
from urlparse import urlsplit

from bs4 import BeautifulSoup
import requests
from urlparse import urldefrag, urljoin

class PyPI(object):
    def __init__(self, index="http://pypi.python.org/simple"):
        self._index = index

    def list_packages(self):
        resp = requests.get(self._index)

        soup = BeautifulSoup(resp.content)

        for link in soup.find_all("a"):
            yield link.text

    def list_files(self, package):
        package_uri = "%s/%s/" % (self._index, package)
        resp = requests.get(package_uri)

        soup = BeautifulSoup(resp.content)

        for link in soup.find_all("a"):
            # filter out links to home and download pages
            if "rel" in link.attrs:
                continue

            filename = link.text

            # filter out links to other web pages
            if urlsplit(filename).scheme:
                continue

            file_uri, frag = urldefrag(link.attrs['href'])
            file_uri = urljoin(package_uri, file_uri)

            mo = re.match(r"^md5=([a-fA-F0-9]{32})$", frag)
            md5 = mo.group(1) if mo else ""

            yield dict(filename=filename,
                       remote_uri=file_uri,
                       md5=md5)
