prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  fix(sec): upgrade lxml to 4.9.1
  ### What happened？
  There are 1 security vulnerabilities found in lxml 4.5.1
  - [CVE-2022-2309](https://www.oscs1024.com/hd/CVE-2022-2309)
  
  
  ### What did I do？
  Upgrade lxml from 4.5.1 to 4.9.1 for vulnerability fix
  
  ### What did you expect to happen？
  Ideally, no insecure libs should be used.
  
  ### The specification of the pull request
  [PR Specification](https://www.oscs1024.com/docs/pr-specification/) from OSCS
  
  </issue>
  <code>
  [start of setup.py]
  1 #!/usr/bin/env python
  2 # -*- coding: UTF-8 -*-
  3 #
  4 # yfinance - market data downloader
  5 # https://github.com/ranaroussi/yfinance
  6 
  7 """yfinance - market data downloader"""
  8 
  9 from setuptools import setup, find_packages
  10 # from codecs import open
  11 import io
  12 from os import path
  13 
  14 # --- get version ---
  15 version = "unknown"
  16 with open("yfinance/version.py") as f:
  17     line = f.read().strip()
  18     version = line.replace("version = ", "").replace('"', '')
  19 # --- /get version ---
  20 
  21 
  22 here = path.abspath(path.dirname(__file__))
  23 
  24 # Get the long description from the README file
  25 with io.open(path.join(here, 'README.md'), encoding='utf-8') as f:
  26     long_description = f.read()
  27 
  28 setup(
  29     name='yfinance',
  30     version=version,
  31     description='Download market data from Yahoo! Finance API',
  32     long_description=long_description,
  33     long_description_content_type='text/markdown',
  34     url='https://github.com/ranaroussi/yfinance',
  35     author='Ran Aroussi',
  36     author_email='ran@aroussi.com',
  37     license='Apache',
  38     classifiers=[
  39         'License :: OSI Approved :: Apache Software License',
  40         # 'Development Status :: 3 - Alpha',
  41         # 'Development Status :: 4 - Beta',
  42         'Development Status :: 5 - Production/Stable',
  43 
  44 
  45         'Operating System :: OS Independent',
  46         'Intended Audience :: Developers',
  47         'Topic :: Office/Business :: Financial',
  48         'Topic :: Office/Business :: Financial :: Investment',
  49         'Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator',
  50         'Topic :: Software Development :: Libraries',
  51         'Topic :: Software Development :: Libraries :: Python Modules',
  52 
  53         'Programming Language :: Python :: 2.7',
  54         'Programming Language :: Python :: 3.4',
  55         'Programming Language :: Python :: 3.5',
  56         # 'Programming Language :: Python :: 3.6',
  57         'Programming Language :: Python :: 3.7',
  58         'Programming Language :: Python :: 3.8',
  59         'Programming Language :: Python :: 3.9',
  60     ],
  61     platforms=['any'],
  62     keywords='pandas, yahoo finance, pandas datareader',
  63     packages=find_packages(exclude=['contrib', 'docs', 'tests', 'examples']),
  64     install_requires=['pandas>=1.3.0', 'numpy>=1.16.5',
  65                       'requests>=2.26', 'multitasking>=0.0.7',
  66                       'appdirs>=1.4.4'],
  67     entry_points={
  68         'console_scripts': [
  69             'sample=sample:main',
  70         ],
  71     },
  72 )
  73 
  74 print("""
  75 NOTE: yfinance is not affiliated, endorsed, or vetted by Yahoo, Inc.
  76 
  77 You should refer to Yahoo!'s terms of use for details on your rights
  78 to use the actual data downloaded.""")
  79
  [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
  @@ -63,7 +63,7 @@
       packages=find_packages(exclude=['contrib', 'docs', 'tests', 'examples']),
       install_requires=['pandas>=1.3.0', 'numpy>=1.16.5',
                         'requests>=2.26', 'multitasking>=0.0.7',
  -                      'appdirs>=1.4.4'],
  +                      'lxml>=4.9.1', 'appdirs>=1.4.4'],
       entry_points={
           'console_scripts': [
               'sample=sample:main',
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -63,7 +63,7 @@\n     packages=find_packages(exclude=['contrib', 'docs', 'tests', 'examples']),\n     install_requires=['pandas>=1.3.0', 'numpy>=1.16.5',\n                       'requests>=2.26', 'multitasking>=0.0.7',\n-                      'appdirs>=1.4.4'],\n+                      'lxml>=4.9.1', 'appdirs>=1.4.4'],\n     entry_points={\n         'console_scripts': [\n             'sample=sample:main',\n", "issue": "fix(sec): upgrade lxml to 4.9.1\n### What happened\uff1f\nThere are 1 security vulnerabilities found in lxml 4.5.1\n- [CVE-2022-2309](https://www.oscs1024.com/hd/CVE-2022-2309)\n\n\n### What did I do\uff1f\nUpgrade lxml from 4.5.1 to 4.9.1 for vulnerability fix\n\n### What did you expect to happen\uff1f\nIdeally, no insecure libs should be used.\n\n### The specification of the pull request\n[PR Specification](https://www.oscs1024.com/docs/pr-specification/) from OSCS\n", "before_files": [{"content": "#!/usr/bin/env python\n# -*- coding: UTF-8 -*-\n#\n# yfinance - market data downloader\n# https://github.com/ranaroussi/yfinance\n\n\"\"\"yfinance - market data downloader\"\"\"\n\nfrom setuptools import setup, find_packages\n# from codecs import open\nimport io\nfrom os import path\n\n# --- get version ---\nversion = \"unknown\"\nwith open(\"yfinance/version.py\") as f:\n    line = f.read().strip()\n    version = line.replace(\"version = \", \"\").replace('\"', '')\n# --- /get version ---\n\n\nhere = path.abspath(path.dirname(__file__))\n\n# Get the long description from the README file\nwith io.open(path.join(here, 'README.md'), encoding='utf-8') as f:\n    long_description = f.read()\n\nsetup(\n    name='yfinance',\n    version=version,\n    description='Download market data from Yahoo! Finance API',\n    long_description=long_description,\n    long_description_content_type='text/markdown',\n    url='https://github.com/ranaroussi/yfinance',\n    author='Ran Aroussi',\n    author_email='ran@aroussi.com',\n    license='Apache',\n    classifiers=[\n        'License :: OSI Approved :: Apache Software License',\n        # 'Development Status :: 3 - Alpha',\n        # 'Development Status :: 4 - Beta',\n        'Development Status :: 5 - Production/Stable',\n\n\n        'Operating System :: OS Independent',\n        'Intended Audience :: Developers',\n        'Topic :: Office/Business :: Financial',\n        'Topic :: Office/Business :: Financial :: Investment',\n        'Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator',\n        'Topic :: Software Development :: Libraries',\n        'Topic :: Software Development :: Libraries :: Python Modules',\n\n        'Programming Language :: Python :: 2.7',\n        'Programming Language :: Python :: 3.4',\n        'Programming Language :: Python :: 3.5',\n        # 'Programming Language :: Python :: 3.6',\n        'Programming Language :: Python :: 3.7',\n        'Programming Language :: Python :: 3.8',\n        'Programming Language :: Python :: 3.9',\n    ],\n    platforms=['any'],\n    keywords='pandas, yahoo finance, pandas datareader',\n    packages=find_packages(exclude=['contrib', 'docs', 'tests', 'examples']),\n    install_requires=['pandas>=1.3.0', 'numpy>=1.16.5',\n                      'requests>=2.26', 'multitasking>=0.0.7',\n                      'appdirs>=1.4.4'],\n    entry_points={\n        'console_scripts': [\n            'sample=sample:main',\n        ],\n    },\n)\n\nprint(\"\"\"\nNOTE: yfinance is not affiliated, endorsed, or vetted by Yahoo, Inc.\n\nYou should refer to Yahoo!'s terms of use for details on your rights\nto use the actual data downloaded.\"\"\")\n", "path": "setup.py"}]}