prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Ticker.history: history's index is not of type DateTimeIndex when dividend and split tables are empty
  **Issue**:
  
  Ticker.history (line 295):
  >       df.index = df.index.tz_localize("UTC").tz_convert(data["chart"]["result"][0]["meta"]["exchangeTimezoneName"])
  E       AttributeError: 'Index' object has no attribute 'tz_localize'
  
  **Reason**: 
  
  During the concatenation of a proper price table with empty dividend and split tables, the price table's index has changed from _pandas.DatetimeIndex_ to _pandas.Index_ because the empty tables had this index type.
  
  **Proposed solution**: 
  
  Modify _parse_actions_ (in utils.py) to initialise the dividend and split tables with : 
  `dividends = _pd.DataFrame(columns=["Dividends"], index=_pd.DatetimeIndex([]))`
   `splits = _pd.DataFrame(columns=["Stock Splits"], index=_pd.DatetimeIndex([]))`
  
  
  Local modules' versions:
  
  finance : 0.1.69
  pandas : 1.4.0
  python : 3.10
  
  
  </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>=0.24', 'numpy>=1.15',
  65                       'requests>=2.26', 'multitasking>=0.0.7',
  66                       'lxml>=4.5.1'],
  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
  @@ -61,7 +61,7 @@
       platforms=['any'],
       keywords='pandas, yahoo finance, pandas datareader',
       packages=find_packages(exclude=['contrib', 'docs', 'tests', 'examples']),
  -    install_requires=['pandas>=0.24', 'numpy>=1.15',
  +    install_requires=['pandas>=0.24.0,<=1.3.5', 'numpy>=1.15',
                         'requests>=2.26', 'multitasking>=0.0.7',
                         'lxml>=4.5.1'],
       entry_points={
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -61,7 +61,7 @@\n     platforms=['any'],\n     keywords='pandas, yahoo finance, pandas datareader',\n     packages=find_packages(exclude=['contrib', 'docs', 'tests', 'examples']),\n-    install_requires=['pandas>=0.24', 'numpy>=1.15',\n+    install_requires=['pandas>=0.24.0,<=1.3.5', 'numpy>=1.15',\n                       'requests>=2.26', 'multitasking>=0.0.7',\n                       'lxml>=4.5.1'],\n     entry_points={\n", "issue": "Ticker.history: history's index is not of type DateTimeIndex when dividend and split tables are empty\n**Issue**:\r\n\r\nTicker.history (line 295):\r\n>       df.index = df.index.tz_localize(\"UTC\").tz_convert(data[\"chart\"][\"result\"][0][\"meta\"][\"exchangeTimezoneName\"])\r\nE       AttributeError: 'Index' object has no attribute 'tz_localize'\r\n\r\n**Reason**: \r\n\r\nDuring the concatenation of a proper price table with empty dividend and split tables, the price table's index has changed from _pandas.DatetimeIndex_ to _pandas.Index_ because the empty tables had this index type.\r\n\r\n**Proposed solution**: \r\n\r\nModify _parse_actions_ (in utils.py) to initialise the dividend and split tables with : \r\n`dividends = _pd.DataFrame(columns=[\"Dividends\"], index=_pd.DatetimeIndex([]))`\r\n `splits = _pd.DataFrame(columns=[\"Stock Splits\"], index=_pd.DatetimeIndex([]))`\r\n\r\n\r\nLocal modules' versions:\r\n\r\nfinance : 0.1.69\r\npandas : 1.4.0\r\npython : 3.10\r\n\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>=0.24', 'numpy>=1.15',\n                      'requests>=2.26', 'multitasking>=0.0.7',\n                      'lxml>=4.5.1'],\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"}]}