prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  'TypeError' object has no attribute 'tb_frame'
  While fetching object details from insight inspect, getting kicked out from the ipython console with the following error. 
    'TypeError' object has no attribute 'tb_frame'
  
  (gss-rules) ⌊gss-rules⌋»$ insights inspect insights.parsers.installed_rpms.InstalledRpms ~/scripts/rhel7_sosreport/
  
  IPython Console Usage Info:
  
  Enter 'InstalledRpms.' and tab to get a list of properties 
  Example:
  In [1]: InstalledRpms.<property_name>
  Out[1]: <property value>
  
  To exit ipython enter 'exit' and hit enter or use 'CTL D'
  
  Starting IPython Interpreter Now 
  
  In [1]: InstalledRpms
  'TypeError' object has no attribute 'tb_frame'
  
  
  </issue>
  <code>
  [start of setup.py]
  1 import os
  2 import sys
  3 from setuptools import setup, find_packages
  4 
  5 __here__ = os.path.dirname(os.path.abspath(__file__))
  6 
  7 package_info = dict.fromkeys(["RELEASE", "COMMIT", "VERSION", "NAME"])
  8 
  9 for name in package_info:
  10     with open(os.path.join(__here__, "insights", name)) as f:
  11         package_info[name] = f.read().strip()
  12 
  13 entry_points = {
  14     'console_scripts': [
  15         'insights-collect = insights.collect:main',
  16         'insights-run = insights:main',
  17         'insights = insights.command_parser:main',
  18         'insights-cat = insights.tools.cat:main',
  19         'insights-dupkeycheck = insights.tools.dupkeycheck:main',
  20         'insights-inspect = insights.tools.insights_inspect:main',
  21         'insights-info = insights.tools.query:main',
  22         'insights-ocpshell= insights.ocpshell:main',
  23         'client = insights.client:run',
  24         'mangle = insights.util.mangle:main'
  25     ]
  26 }
  27 
  28 runtime = set([
  29     'six',
  30     'requests',
  31     'redis',
  32     'cachecontrol',
  33     'cachecontrol[redis]',
  34     'cachecontrol[filecache]',
  35     'defusedxml',
  36     'lockfile',
  37     'jinja2',
  38 ])
  39 
  40 if (sys.version_info < (2, 7)):
  41     runtime.add('pyyaml>=3.10,<=3.13')
  42 else:
  43     runtime.add('pyyaml')
  44 
  45 
  46 def maybe_require(pkg):
  47     try:
  48         __import__(pkg)
  49     except ImportError:
  50         runtime.add(pkg)
  51 
  52 
  53 maybe_require("importlib")
  54 maybe_require("argparse")
  55 
  56 
  57 client = set([
  58     'requests'
  59 ])
  60 
  61 develop = set([
  62     'futures==3.0.5',
  63     'wheel',
  64 ])
  65 
  66 docs = set([
  67     'Sphinx<=3.0.2',
  68     'nbsphinx',
  69     'sphinx_rtd_theme',
  70     'ipython',
  71     'colorama',
  72     'jinja2',
  73     'Pygments'
  74 ])
  75 
  76 testing = set([
  77     'coverage==4.3.4',
  78     'pytest==3.0.6',
  79     'pytest-cov==2.4.0',
  80     'mock==2.0.0',
  81 ])
  82 
  83 cluster = set([
  84     'ansible',
  85     'pandas',
  86     'colorama',
  87 ])
  88 
  89 openshift = set([
  90     'openshift'
  91 ])
  92 
  93 linting = set([
  94     'flake8==2.6.2',
  95 ])
  96 
  97 optional = set([
  98     'python-cjson',
  99     'python-logstash',
  100     'python-statsd',
  101     'watchdog',
  102 ])
  103 
  104 if __name__ == "__main__":
  105     # allows for runtime modification of rpm name
  106     name = os.environ.get("INSIGHTS_CORE_NAME", package_info["NAME"])
  107 
  108     setup(
  109         name=name,
  110         version=package_info["VERSION"],
  111         description="Insights Core is a data collection and analysis framework",
  112         long_description=open("README.rst").read(),
  113         url="https://github.com/redhatinsights/insights-core",
  114         author="Red Hat, Inc.",
  115         author_email="insights@redhat.com",
  116         packages=find_packages(),
  117         install_requires=list(runtime),
  118         package_data={'': ['LICENSE']},
  119         license='Apache 2.0',
  120         extras_require={
  121             'develop': list(runtime | develop | client | docs | linting | testing | cluster),
  122             'develop26': list(runtime | develop | client | linting | testing | cluster),
  123             'client': list(runtime | client),
  124             'client-develop': list(runtime | develop | client | linting | testing),
  125             'cluster': list(runtime | cluster),
  126             'openshift': list(runtime | openshift),
  127             'optional': list(optional),
  128             'docs': list(docs),
  129             'linting': list(linting | client),
  130             'testing': list(testing | client)
  131         },
  132         classifiers=[
  133             'Development Status :: 5 - Production/Stable',
  134             'Intended Audience :: Developers',
  135             'Natural Language :: English',
  136             'License :: OSI Approved :: Apache Software License',
  137             'Programming Language :: Python',
  138             'Programming Language :: Python :: 2.6',
  139             'Programming Language :: Python :: 2.7',
  140             'Programming Language :: Python :: 3.3',
  141             'Programming Language :: Python :: 3.4',
  142             'Programming Language :: Python :: 3.5',
  143             'Programming Language :: Python :: 3.6'
  144         ],
  145         entry_points=entry_points,
  146         include_package_data=True
  147     )
  148
  [end of setup.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/setup.py b/setup.py
  --- a/setup.py
  +++ b/setup.py
  @@ -70,7 +70,9 @@
       'ipython',
       'colorama',
       'jinja2',
  -    'Pygments'
  +    'Pygments',
  +    'jedi<0.18.0'    # Open issue with jedi 0.18.0 and iPython <= 7.19
  +                     # https://github.com/davidhalter/jedi/issues/1714
   ])
   
   testing = set([
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -70,7 +70,9 @@\n     'ipython',\n     'colorama',\n     'jinja2',\n-    'Pygments'\n+    'Pygments',\n+    'jedi<0.18.0'    # Open issue with jedi 0.18.0 and iPython <= 7.19\n+                     # https://github.com/davidhalter/jedi/issues/1714\n ])\n \n testing = set([\n", "issue": "'TypeError' object has no attribute 'tb_frame'\nWhile fetching object details from insight inspect, getting kicked out from the ipython console with the following error. \r\n  'TypeError' object has no attribute 'tb_frame'\r\n\r\n(gss-rules) \u230agss-rules\u230b\u00bb$ insights inspect insights.parsers.installed_rpms.InstalledRpms ~/scripts/rhel7_sosreport/\r\n\r\nIPython Console Usage Info:\r\n\r\nEnter 'InstalledRpms.' and tab to get a list of properties \r\nExample:\r\nIn [1]: InstalledRpms.<property_name>\r\nOut[1]: <property value>\r\n\r\nTo exit ipython enter 'exit' and hit enter or use 'CTL D'\r\n\r\nStarting IPython Interpreter Now \r\n\r\nIn [1]: InstalledRpms\r\n'TypeError' object has no attribute 'tb_frame'\r\n\n", "before_files": [{"content": "import os\nimport sys\nfrom setuptools import setup, find_packages\n\n__here__ = os.path.dirname(os.path.abspath(__file__))\n\npackage_info = dict.fromkeys([\"RELEASE\", \"COMMIT\", \"VERSION\", \"NAME\"])\n\nfor name in package_info:\n    with open(os.path.join(__here__, \"insights\", name)) as f:\n        package_info[name] = f.read().strip()\n\nentry_points = {\n    'console_scripts': [\n        'insights-collect = insights.collect:main',\n        'insights-run = insights:main',\n        'insights = insights.command_parser:main',\n        'insights-cat = insights.tools.cat:main',\n        'insights-dupkeycheck = insights.tools.dupkeycheck:main',\n        'insights-inspect = insights.tools.insights_inspect:main',\n        'insights-info = insights.tools.query:main',\n        'insights-ocpshell= insights.ocpshell:main',\n        'client = insights.client:run',\n        'mangle = insights.util.mangle:main'\n    ]\n}\n\nruntime = set([\n    'six',\n    'requests',\n    'redis',\n    'cachecontrol',\n    'cachecontrol[redis]',\n    'cachecontrol[filecache]',\n    'defusedxml',\n    'lockfile',\n    'jinja2',\n])\n\nif (sys.version_info < (2, 7)):\n    runtime.add('pyyaml>=3.10,<=3.13')\nelse:\n    runtime.add('pyyaml')\n\n\ndef maybe_require(pkg):\n    try:\n        __import__(pkg)\n    except ImportError:\n        runtime.add(pkg)\n\n\nmaybe_require(\"importlib\")\nmaybe_require(\"argparse\")\n\n\nclient = set([\n    'requests'\n])\n\ndevelop = set([\n    'futures==3.0.5',\n    'wheel',\n])\n\ndocs = set([\n    'Sphinx<=3.0.2',\n    'nbsphinx',\n    'sphinx_rtd_theme',\n    'ipython',\n    'colorama',\n    'jinja2',\n    'Pygments'\n])\n\ntesting = set([\n    'coverage==4.3.4',\n    'pytest==3.0.6',\n    'pytest-cov==2.4.0',\n    'mock==2.0.0',\n])\n\ncluster = set([\n    'ansible',\n    'pandas',\n    'colorama',\n])\n\nopenshift = set([\n    'openshift'\n])\n\nlinting = set([\n    'flake8==2.6.2',\n])\n\noptional = set([\n    'python-cjson',\n    'python-logstash',\n    'python-statsd',\n    'watchdog',\n])\n\nif __name__ == \"__main__\":\n    # allows for runtime modification of rpm name\n    name = os.environ.get(\"INSIGHTS_CORE_NAME\", package_info[\"NAME\"])\n\n    setup(\n        name=name,\n        version=package_info[\"VERSION\"],\n        description=\"Insights Core is a data collection and analysis framework\",\n        long_description=open(\"README.rst\").read(),\n        url=\"https://github.com/redhatinsights/insights-core\",\n        author=\"Red Hat, Inc.\",\n        author_email=\"insights@redhat.com\",\n        packages=find_packages(),\n        install_requires=list(runtime),\n        package_data={'': ['LICENSE']},\n        license='Apache 2.0',\n        extras_require={\n            'develop': list(runtime | develop | client | docs | linting | testing | cluster),\n            'develop26': list(runtime | develop | client | linting | testing | cluster),\n            'client': list(runtime | client),\n            'client-develop': list(runtime | develop | client | linting | testing),\n            'cluster': list(runtime | cluster),\n            'openshift': list(runtime | openshift),\n            'optional': list(optional),\n            'docs': list(docs),\n            'linting': list(linting | client),\n            'testing': list(testing | client)\n        },\n        classifiers=[\n            'Development Status :: 5 - Production/Stable',\n            'Intended Audience :: Developers',\n            'Natural Language :: English',\n            'License :: OSI Approved :: Apache Software License',\n            'Programming Language :: Python',\n            'Programming Language :: Python :: 2.6',\n            'Programming Language :: Python :: 2.7',\n            'Programming Language :: Python :: 3.3',\n            'Programming Language :: Python :: 3.4',\n            'Programming Language :: Python :: 3.5',\n            'Programming Language :: Python :: 3.6'\n        ],\n        entry_points=entry_points,\n        include_package_data=True\n    )\n", "path": "setup.py"}]}