We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
ExcelDataSet not working after pandas 1.4.0 release (python 3.8)
## Description

On a fresh new project, after installing the extra dependency `kedro[pandas.ExcelDataSet]`, the user receives a runtime error when trying to load a xslx file dataset via the data catalog. The cause of the issue seems to be an incompatibility with the new pandas `v1.4.0` and `xlrd~=1.0`, the latter being enforced by kedro `17.6.0`.

## Context

The error occurred while I was following the exact steps of the spaceflights tutorial. In order to load the `shuttles` dataset (stored as a xslx file), I was instructed to install the extra dependency `kedro[pandas.ExcelDataSet]`. After installing the dependency and trying to load the dataset via the catalog, I received the following error: `Pandas requires version '2.0.1' or newer of 'xlrd' (version '1.2.0' currently installed).`

After some debugging, I discovered that pandas released version `1.4.0` two days ago, and it bumped the mininum version of optional dependency xlrd to `2.0.1` ([source](https://pandas.pydata.org/docs/whatsnew/v1.4.0.html#increased-minimum-versions-for-dependencies), [source2](https://github.com/pandas-dev/pandas/blob/v1.4.0/pandas/compat/_optional.py#L40)). As kedro enforces `xlrd~=1.0` via extra dependency `kedro[pandas.ExcelDataSet]` ([source](https://github.com/kedro-org/kedro/blob/0.17.6/setup.py#L75)), pandas checks that the currently installed version of xlrd is `1.2.0` and raises the error before importing the package ([source](https://github.com/pandas-dev/pandas/blob/v1.4.0/pandas/compat/_optional.py#L133-L152)).

I repeated the same steps using python 3.7, but because pandas 1.4.0 only supports python 3.8+ ([source](https://github.com/pandas-dev/pandas/blob/v1.4.0/setup.cfg#L40)), the installed version of pandas was 1.3.5. When I tried to load the dataset, I received no errors (although I got a future warning saying xlrd will not support xlsx files in version >= 2.0)

## Steps to Reproduce
1. Create a virtualenv with python 3.8 and activate it
2. Run `pip install kedro==0.17.6`
3. Run `kedro new`
4. `cd` to project dir
5. Run `kedro install`
6. Replace the line `kedro==0.17.6` with `kedro[pandas.ExcelDataSet]==0.17.6`  in src/requirements.in
7. Run `kedro build-reqs && kedro install`
8. Add file `shuttles.xlsx` (from spaceflights tutorial) to folder `data/01_raw/`
9. Add the dataset information to `catalog.yml`:
    ```yml
    shuttles:
      type: pandas.ExcelDataSet
      filepath: data/01_raw/shuttles.xlsx
    ```
10. Run `kedro ipython`
11. Run python code: `shuttles = catalog.load("shuttles")`

## Expected Result
The xlsx file should've been loaded into memory as a pandas Dataframe

## Actual Result
I received the following error:

```
DataSetError: Failed while loading data from data set ExcelDataSet(filepath=/.../data/01_raw/shuttles.xlsx, load_args={'engine': xlrd}, protocol=file, save_args={'index': False}, writer_args={'engine': xlsxwriter}).
Pandas requires version '2.0.1' or newer of 'xlrd' (version '1.2.0' currently installed).
```

## Your Environment

* Kedro version used (`pip show kedro` or `kedro -V`): 0.17.6
* Python version used (`python -V`): 3.8.12
* Operating system and version: WSL: Ubuntu 20.04
* Pandas version: 1.4.0
* xlrd version: 1.2.0


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `setup.py`
Content:
```
1 import re
2 from codecs import open
3 from glob import glob
4 from itertools import chain
5 from os import path
6 
7 from setuptools import find_packages, setup
8 
9 name = "kedro"
10 here = path.abspath(path.dirname(__file__))
11 
12 
13 PANDAS = "pandas>=0.24"
14 SPARK = "pyspark>=2.2, <4.0"
15 HDFS = "hdfs>=2.5.8, <3.0"
16 S3FS = "s3fs>=0.3.0, <0.5"
17 
18 # get package version
19 with open(path.join(here, name, "__init__.py"), encoding="utf-8") as f:
20     result = re.search(r'__version__ = ["\']([^"\']+)', f.read())
21 
22     if not result:
23         raise ValueError("Can't find the version in kedro/__init__.py")
24 
25     version = result.group(1)
26 
27 # get the dependencies and installs
28 with open("requirements.txt", encoding="utf-8") as f:
29     requires = [x.strip() for x in f if x.strip()]
30 
31 # get test dependencies and installs
32 with open("test_requirements.txt", encoding="utf-8") as f:
33     test_requires = [x.strip() for x in f if x.strip() and not x.startswith("-r")]
34 
35 
36 # Get the long description from the README file
37 with open(path.join(here, "README.md"), encoding="utf-8") as f:
38     readme = f.read()
39 
40 doc_html_files = [
41     name.replace("kedro/", "", 1)
42     for name in glob("kedro/framework/html/**/*", recursive=True)
43 ]
44 
45 template_files = []
46 for pattern in ["**/*", "**/.*", "**/.*/**", "**/.*/.**"]:
47     template_files.extend(
48         [
49             name.replace("kedro/", "", 1)
50             for name in glob("kedro/templates/" + pattern, recursive=True)
51         ]
52     )
53 
54 
55 def _collect_requirements(requires):
56     return sorted(set(chain.from_iterable(requires.values())))
57 
58 
59 api_require = {"api.APIDataSet": ["requests~=2.20"]}
60 biosequence_require = {"biosequence.BioSequenceDataSet": ["biopython~=1.73"]}
61 dask_require = {
62     "dask.ParquetDataSet": [
63         "dask>=2021.10.0, <2022.01; python_version > '3.6'",
64         "dask[complete]~=2.6; python_version == '3.6'",
65     ]
66 }
67 geopandas_require = {
68     "geopandas.GeoJSONDataSet": ["geopandas>=0.6.0, <1.0", "pyproj>=2.2.0, <3.0"]
69 }
70 matplotlib_require = {"matplotlib.MatplotlibWriter": ["matplotlib>=3.0.3, <4.0"]}
71 holoviews_require = {"holoviews.HoloviewsWriter": ["holoviews~=1.13.0"]}
72 networkx_require = {"networkx.NetworkXDataSet": ["networkx~=2.4"]}
73 pandas_require = {
74     "pandas.CSVDataSet": [PANDAS],
75     "pandas.ExcelDataSet": [PANDAS, "xlrd~=1.0", "xlsxwriter~=1.0"],
76     "pandas.AppendableExcelDataSet": [PANDAS, "openpyxl>=3.0.3, <4.0"],
77     "pandas.FeatherDataSet": [PANDAS],
78     "pandas.GBQTableDataSet": [PANDAS, "pandas-gbq>=0.12.0, <1.0"],
79     "pandas.GBQQueryDataSet": [PANDAS, "pandas-gbq>=0.12.0, <1.0"],
80     "pandas.HDFDataSet": [PANDAS, "tables~=3.6.0; platform_system == 'Windows'",
81                           "tables~=3.6; platform_system != 'Windows'"],
82     "pandas.JSONDataSet": [PANDAS],
83     "pandas.ParquetDataSet": [PANDAS, "pyarrow>=1.0, <7.0"],
84     "pandas.SQLTableDataSet": [PANDAS, "SQLAlchemy~=1.2"],
85     "pandas.SQLQueryDataSet": [PANDAS, "SQLAlchemy~=1.2"],
86     "pandas.GenericDataSet": [PANDAS],
87 }
88 pillow_require = {"pillow.ImageDataSet": ["Pillow~=8.0"]}
89 plotly_require = {
90     "plotly.PlotlyDataSet": [PANDAS, "plotly>=4.8.0, <6.0"],
91     "plotly.JSONDataSet": ["plotly>=4.8.0, <6.0"],
92 }
93 spark_require = {
94     "spark.SparkDataSet": [SPARK, HDFS, S3FS],
95     "spark.SparkHiveDataSet": [SPARK, HDFS, S3FS],
96     "spark.SparkJDBCDataSet": [SPARK, HDFS, S3FS],
97     "spark.DeltaTableDataSet": [SPARK, HDFS, S3FS, "delta-spark~=1.0"],
98 }
99 tensorflow_required = {
100     "tensorflow.TensorflowModelDataset": [
101         # currently only TensorFlow V2 supported for saving and loading.
102         # V1 requires HDF5 and serializes differently
103         "tensorflow~=2.0"
104     ]
105 }
106 yaml_require = {"yaml.YAMLDataSet": [PANDAS, "PyYAML>=4.2, <6.0"]}
107 
108 extras_require = {
109     "api": _collect_requirements(api_require),
110     "biosequence": _collect_requirements(biosequence_require),
111     "dask": _collect_requirements(dask_require),
112     "docs": [
113         "docutils==0.16",
114         "sphinx~=3.4.3",
115         "sphinx_rtd_theme==0.4.1",
116         "nbsphinx==0.8.1",
117         "nbstripout~=0.4",
118         "recommonmark==0.7.1",
119         "sphinx-autodoc-typehints==1.11.1",
120         "sphinx_copybutton==0.3.1",
121         "ipykernel>=5.3, <7.0",
122     ],
123     "geopandas": _collect_requirements(geopandas_require),
124     "ipython": ["ipython~=7.10"],
125     "matplotlib": _collect_requirements(matplotlib_require),
126     "holoviews": _collect_requirements(holoviews_require),
127     "networkx": _collect_requirements(networkx_require),
128     "notebook_templates": ["nbconvert>=5.3.1, <6.0", "nbformat~=4.4"],
129     "pandas": _collect_requirements(pandas_require),
130     "pillow": _collect_requirements(pillow_require),
131     "plotly": _collect_requirements(plotly_require),
132     "profilers": ["memory_profiler>=0.50.0, <1.0"],
133     "spark": _collect_requirements(spark_require),
134     "tensorflow": _collect_requirements(tensorflow_required),
135     "yaml": _collect_requirements(yaml_require),
136     **api_require,
137     **biosequence_require,
138     **dask_require,
139     **geopandas_require,
140     **matplotlib_require,
141     **holoviews_require,
142     **networkx_require,
143     **pandas_require,
144     **pillow_require,
145     **plotly_require,
146     **spark_require,
147     **tensorflow_required,
148     **yaml_require,
149 }
150 
151 extras_require["all"] = _collect_requirements(extras_require)
152 
153 setup(
154     name=name,
155     version=version,
156     description="Kedro helps you build production-ready data and analytics pipelines",
157     license="Apache Software License (Apache 2.0)",
158     long_description=readme,
159     long_description_content_type="text/markdown",
160     url="https://github.com/kedro-org/kedro",
161     python_requires=">=3.6, <3.9",
162     packages=find_packages(exclude=["docs*", "tests*", "tools*", "features*"]),
163     include_package_data=True,
164     tests_require=test_requires,
165     install_requires=requires,
166     author="Kedro",
167     entry_points={"console_scripts": ["kedro = kedro.framework.cli:main"]},
168     package_data={
169         name: ["py.typed", "test_requirements.txt"] + template_files + doc_html_files
170     },
171     zip_safe=False,
172     keywords="pipelines, machine learning, data pipelines, data science, data engineering",
173     classifiers=[
174         "Development Status :: 4 - Beta",
175         "Programming Language :: Python :: 3.6",
176         "Programming Language :: Python :: 3.7",
177         "Programming Language :: Python :: 3.8",
178     ],
179     extras_require=extras_require,
180 )
181
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -10,7 +10,7 @@
 here = path.abspath(path.dirname(__file__))
 
 
-PANDAS = "pandas>=0.24"
+PANDAS = "pandas>=0.24, <1.4"
 SPARK = "pyspark>=2.2, <4.0"
 HDFS = "hdfs>=2.5.8, <3.0"
 S3FS = "s3fs>=0.3.0, <0.5"
@@ -77,8 +77,11 @@
     "pandas.FeatherDataSet": [PANDAS],
     "pandas.GBQTableDataSet": [PANDAS, "pandas-gbq>=0.12.0, <1.0"],
     "pandas.GBQQueryDataSet": [PANDAS, "pandas-gbq>=0.12.0, <1.0"],
-    "pandas.HDFDataSet": [PANDAS, "tables~=3.6.0; platform_system == 'Windows'",
-                          "tables~=3.6; platform_system != 'Windows'"],
+    "pandas.HDFDataSet": [
+        PANDAS,
+        "tables~=3.6.0; platform_system == 'Windows'",
+        "tables~=3.6; platform_system != 'Windows'",
+    ],
     "pandas.JSONDataSet": [PANDAS],
     "pandas.ParquetDataSet": [PANDAS, "pyarrow>=1.0, <7.0"],
     "pandas.SQLTableDataSet": [PANDAS, "SQLAlchemy~=1.2"],

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -10,7 +10,7 @@\n here = path.abspath(path.dirname(__file__))\n \n \n-PANDAS = \"pandas>=0.24\"\n+PANDAS = \"pandas>=0.24, <1.4\"\n SPARK = \"pyspark>=2.2, <4.0\"\n HDFS = \"hdfs>=2.5.8, <3.0\"\n S3FS = \"s3fs>=0.3.0, <0.5\"\n@@ -77,8 +77,11 @@\n     \"pandas.FeatherDataSet\": [PANDAS],\n     \"pandas.GBQTableDataSet\": [PANDAS, \"pandas-gbq>=0.12.0, <1.0\"],\n     \"pandas.GBQQueryDataSet\": [PANDAS, \"pandas-gbq>=0.12.0, <1.0\"],\n-    \"pandas.HDFDataSet\": [PANDAS, \"tables~=3.6.0; platform_system == 'Windows'\",\n-                          \"tables~=3.6; platform_system != 'Windows'\"],\n+    \"pandas.HDFDataSet\": [\n+        PANDAS,\n+        \"tables~=3.6.0; platform_system == 'Windows'\",\n+        \"tables~=3.6; platform_system != 'Windows'\",\n+    ],\n     \"pandas.JSONDataSet\": [PANDAS],\n     \"pandas.ParquetDataSet\": [PANDAS, \"pyarrow>=1.0, <7.0\"],\n     \"pandas.SQLTableDataSet\": [PANDAS, \"SQLAlchemy~=1.2\"],\n", "issue": "ExcelDataSet not working after pandas 1.4.0 release (python 3.8)\n## Description\r\n\r\nOn a fresh new project, after installing the extra dependency `kedro[pandas.ExcelDataSet]`, the user receives a runtime error when trying to load a xslx file dataset via the data catalog. The cause of the issue seems to be an incompatibility with the new pandas `v1.4.0` and `xlrd~=1.0`, the latter being enforced by kedro `17.6.0`.\r\n\r\n## Context\r\n\r\nThe error occurred while I was following the exact steps of the spaceflights tutorial. In order to load the `shuttles` dataset (stored as a xslx file), I was instructed to install the extra dependency `kedro[pandas.ExcelDataSet]`. After installing the dependency and trying to load the dataset via the catalog, I received the following error: `Pandas requires version '2.0.1' or newer of 'xlrd' (version '1.2.0' currently installed).`\r\n\r\nAfter some debugging, I discovered that pandas released version `1.4.0` two days ago, and it bumped the mininum version of optional dependency xlrd to `2.0.1` ([source](https://pandas.pydata.org/docs/whatsnew/v1.4.0.html#increased-minimum-versions-for-dependencies), [source2](https://github.com/pandas-dev/pandas/blob/v1.4.0/pandas/compat/_optional.py#L40)). As kedro enforces `xlrd~=1.0` via extra dependency `kedro[pandas.ExcelDataSet]` ([source](https://github.com/kedro-org/kedro/blob/0.17.6/setup.py#L75)), pandas checks that the currently installed version of xlrd is `1.2.0` and raises the error before importing the package ([source](https://github.com/pandas-dev/pandas/blob/v1.4.0/pandas/compat/_optional.py#L133-L152)).\r\n\r\nI repeated the same steps using python 3.7, but because pandas 1.4.0 only supports python 3.8+ ([source](https://github.com/pandas-dev/pandas/blob/v1.4.0/setup.cfg#L40)), the installed version of pandas was 1.3.5. When I tried to load the dataset, I received no errors (although I got a future warning saying xlrd will not support xlsx files in version >= 2.0)\r\n\r\n## Steps to Reproduce\r\n1. Create a virtualenv with python 3.8 and activate it\r\n2. Run `pip install kedro==0.17.6`\r\n3. Run `kedro new`\r\n4. `cd` to project dir\r\n5. Run `kedro install`\r\n6. Replace the line `kedro==0.17.6` with `kedro[pandas.ExcelDataSet]==0.17.6`  in src/requirements.in\r\n7. Run `kedro build-reqs && kedro install`\r\n8. Add file `shuttles.xlsx` (from spaceflights tutorial) to folder `data/01_raw/`\r\n9. Add the dataset information to `catalog.yml`:\r\n    ```yml\r\n    shuttles:\r\n      type: pandas.ExcelDataSet\r\n      filepath: data/01_raw/shuttles.xlsx\r\n    ```\r\n10. Run `kedro ipython`\r\n11. Run python code: `shuttles = catalog.load(\"shuttles\")`\r\n\r\n## Expected Result\r\nThe xlsx file should've been loaded into memory as a pandas Dataframe\r\n\r\n## Actual Result\r\nI received the following error:\r\n\r\n```\r\nDataSetError: Failed while loading data from data set ExcelDataSet(filepath=/.../data/01_raw/shuttles.xlsx, load_args={'engine': xlrd}, protocol=file, save_args={'index': False}, writer_args={'engine': xlsxwriter}).\r\nPandas requires version '2.0.1' or newer of 'xlrd' (version '1.2.0' currently installed).\r\n```\r\n\r\n## Your Environment\r\n\r\n* Kedro version used (`pip show kedro` or `kedro -V`): 0.17.6\r\n* Python version used (`python -V`): 3.8.12\r\n* Operating system and version: WSL: Ubuntu 20.04\r\n* Pandas version: 1.4.0\r\n* xlrd version: 1.2.0\r\n\n", "before_files": [{"content": "import re\nfrom codecs import open\nfrom glob import glob\nfrom itertools import chain\nfrom os import path\n\nfrom setuptools import find_packages, setup\n\nname = \"kedro\"\nhere = path.abspath(path.dirname(__file__))\n\n\nPANDAS = \"pandas>=0.24\"\nSPARK = \"pyspark>=2.2, <4.0\"\nHDFS = \"hdfs>=2.5.8, <3.0\"\nS3FS = \"s3fs>=0.3.0, <0.5\"\n\n# get package version\nwith open(path.join(here, name, \"__init__.py\"), encoding=\"utf-8\") as f:\n    result = re.search(r'__version__ = [\"\\']([^\"\\']+)', f.read())\n\n    if not result:\n        raise ValueError(\"Can't find the version in kedro/__init__.py\")\n\n    version = result.group(1)\n\n# get the dependencies and installs\nwith open(\"requirements.txt\", encoding=\"utf-8\") as f:\n    requires = [x.strip() for x in f if x.strip()]\n\n# get test dependencies and installs\nwith open(\"test_requirements.txt\", encoding=\"utf-8\") as f:\n    test_requires = [x.strip() for x in f if x.strip() and not x.startswith(\"-r\")]\n\n\n# Get the long description from the README file\nwith open(path.join(here, \"README.md\"), encoding=\"utf-8\") as f:\n    readme = f.read()\n\ndoc_html_files = [\n    name.replace(\"kedro/\", \"\", 1)\n    for name in glob(\"kedro/framework/html/**/*\", recursive=True)\n]\n\ntemplate_files = []\nfor pattern in [\"**/*\", \"**/.*\", \"**/.*/**\", \"**/.*/.**\"]:\n    template_files.extend(\n        [\n            name.replace(\"kedro/\", \"\", 1)\n            for name in glob(\"kedro/templates/\" + pattern, recursive=True)\n        ]\n    )\n\n\ndef _collect_requirements(requires):\n    return sorted(set(chain.from_iterable(requires.values())))\n\n\napi_require = {\"api.APIDataSet\": [\"requests~=2.20\"]}\nbiosequence_require = {\"biosequence.BioSequenceDataSet\": [\"biopython~=1.73\"]}\ndask_require = {\n    \"dask.ParquetDataSet\": [\n        \"dask>=2021.10.0, <2022.01; python_version > '3.6'\",\n        \"dask[complete]~=2.6; python_version == '3.6'\",\n    ]\n}\ngeopandas_require = {\n    \"geopandas.GeoJSONDataSet\": [\"geopandas>=0.6.0, <1.0\", \"pyproj>=2.2.0, <3.0\"]\n}\nmatplotlib_require = {\"matplotlib.MatplotlibWriter\": [\"matplotlib>=3.0.3, <4.0\"]}\nholoviews_require = {\"holoviews.HoloviewsWriter\": [\"holoviews~=1.13.0\"]}\nnetworkx_require = {\"networkx.NetworkXDataSet\": [\"networkx~=2.4\"]}\npandas_require = {\n    \"pandas.CSVDataSet\": [PANDAS],\n    \"pandas.ExcelDataSet\": [PANDAS, \"xlrd~=1.0\", \"xlsxwriter~=1.0\"],\n    \"pandas.AppendableExcelDataSet\": [PANDAS, \"openpyxl>=3.0.3, <4.0\"],\n    \"pandas.FeatherDataSet\": [PANDAS],\n    \"pandas.GBQTableDataSet\": [PANDAS, \"pandas-gbq>=0.12.0, <1.0\"],\n    \"pandas.GBQQueryDataSet\": [PANDAS, \"pandas-gbq>=0.12.0, <1.0\"],\n    \"pandas.HDFDataSet\": [PANDAS, \"tables~=3.6.0; platform_system == 'Windows'\",\n                          \"tables~=3.6; platform_system != 'Windows'\"],\n    \"pandas.JSONDataSet\": [PANDAS],\n    \"pandas.ParquetDataSet\": [PANDAS, \"pyarrow>=1.0, <7.0\"],\n    \"pandas.SQLTableDataSet\": [PANDAS, \"SQLAlchemy~=1.2\"],\n    \"pandas.SQLQueryDataSet\": [PANDAS, \"SQLAlchemy~=1.2\"],\n    \"pandas.GenericDataSet\": [PANDAS],\n}\npillow_require = {\"pillow.ImageDataSet\": [\"Pillow~=8.0\"]}\nplotly_require = {\n    \"plotly.PlotlyDataSet\": [PANDAS, \"plotly>=4.8.0, <6.0\"],\n    \"plotly.JSONDataSet\": [\"plotly>=4.8.0, <6.0\"],\n}\nspark_require = {\n    \"spark.SparkDataSet\": [SPARK, HDFS, S3FS],\n    \"spark.SparkHiveDataSet\": [SPARK, HDFS, S3FS],\n    \"spark.SparkJDBCDataSet\": [SPARK, HDFS, S3FS],\n    \"spark.DeltaTableDataSet\": [SPARK, HDFS, S3FS, \"delta-spark~=1.0\"],\n}\ntensorflow_required = {\n    \"tensorflow.TensorflowModelDataset\": [\n        # currently only TensorFlow V2 supported for saving and loading.\n        # V1 requires HDF5 and serializes differently\n        \"tensorflow~=2.0\"\n    ]\n}\nyaml_require = {\"yaml.YAMLDataSet\": [PANDAS, \"PyYAML>=4.2, <6.0\"]}\n\nextras_require = {\n    \"api\": _collect_requirements(api_require),\n    \"biosequence\": _collect_requirements(biosequence_require),\n    \"dask\": _collect_requirements(dask_require),\n    \"docs\": [\n        \"docutils==0.16\",\n        \"sphinx~=3.4.3\",\n        \"sphinx_rtd_theme==0.4.1\",\n        \"nbsphinx==0.8.1\",\n        \"nbstripout~=0.4\",\n        \"recommonmark==0.7.1\",\n        \"sphinx-autodoc-typehints==1.11.1\",\n        \"sphinx_copybutton==0.3.1\",\n        \"ipykernel>=5.3, <7.0\",\n    ],\n    \"geopandas\": _collect_requirements(geopandas_require),\n    \"ipython\": [\"ipython~=7.10\"],\n    \"matplotlib\": _collect_requirements(matplotlib_require),\n    \"holoviews\": _collect_requirements(holoviews_require),\n    \"networkx\": _collect_requirements(networkx_require),\n    \"notebook_templates\": [\"nbconvert>=5.3.1, <6.0\", \"nbformat~=4.4\"],\n    \"pandas\": _collect_requirements(pandas_require),\n    \"pillow\": _collect_requirements(pillow_require),\n    \"plotly\": _collect_requirements(plotly_require),\n    \"profilers\": [\"memory_profiler>=0.50.0, <1.0\"],\n    \"spark\": _collect_requirements(spark_require),\n    \"tensorflow\": _collect_requirements(tensorflow_required),\n    \"yaml\": _collect_requirements(yaml_require),\n    **api_require,\n    **biosequence_require,\n    **dask_require,\n    **geopandas_require,\n    **matplotlib_require,\n    **holoviews_require,\n    **networkx_require,\n    **pandas_require,\n    **pillow_require,\n    **plotly_require,\n    **spark_require,\n    **tensorflow_required,\n    **yaml_require,\n}\n\nextras_require[\"all\"] = _collect_requirements(extras_require)\n\nsetup(\n    name=name,\n    version=version,\n    description=\"Kedro helps you build production-ready data and analytics pipelines\",\n    license=\"Apache Software License (Apache 2.0)\",\n    long_description=readme,\n    long_description_content_type=\"text/markdown\",\n    url=\"https://github.com/kedro-org/kedro\",\n    python_requires=\">=3.6, <3.9\",\n    packages=find_packages(exclude=[\"docs*\", \"tests*\", \"tools*\", \"features*\"]),\n    include_package_data=True,\n    tests_require=test_requires,\n    install_requires=requires,\n    author=\"Kedro\",\n    entry_points={\"console_scripts\": [\"kedro = kedro.framework.cli:main\"]},\n    package_data={\n        name: [\"py.typed\", \"test_requirements.txt\"] + template_files + doc_html_files\n    },\n    zip_safe=False,\n    keywords=\"pipelines, machine learning, data pipelines, data science, data engineering\",\n    classifiers=[\n        \"Development Status :: 4 - Beta\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n    ],\n    extras_require=extras_require,\n)\n", "path": "setup.py"}], "after_files": [{"content": "import re\nfrom codecs import open\nfrom glob import glob\nfrom itertools import chain\nfrom os import path\n\nfrom setuptools import find_packages, setup\n\nname = \"kedro\"\nhere = path.abspath(path.dirname(__file__))\n\n\nPANDAS = \"pandas>=0.24, <1.4\"\nSPARK = \"pyspark>=2.2, <4.0\"\nHDFS = \"hdfs>=2.5.8, <3.0\"\nS3FS = \"s3fs>=0.3.0, <0.5\"\n\n# get package version\nwith open(path.join(here, name, \"__init__.py\"), encoding=\"utf-8\") as f:\n    result = re.search(r'__version__ = [\"\\']([^\"\\']+)', f.read())\n\n    if not result:\n        raise ValueError(\"Can't find the version in kedro/__init__.py\")\n\n    version = result.group(1)\n\n# get the dependencies and installs\nwith open(\"requirements.txt\", encoding=\"utf-8\") as f:\n    requires = [x.strip() for x in f if x.strip()]\n\n# get test dependencies and installs\nwith open(\"test_requirements.txt\", encoding=\"utf-8\") as f:\n    test_requires = [x.strip() for x in f if x.strip() and not x.startswith(\"-r\")]\n\n\n# Get the long description from the README file\nwith open(path.join(here, \"README.md\"), encoding=\"utf-8\") as f:\n    readme = f.read()\n\ndoc_html_files = [\n    name.replace(\"kedro/\", \"\", 1)\n    for name in glob(\"kedro/framework/html/**/*\", recursive=True)\n]\n\ntemplate_files = []\nfor pattern in [\"**/*\", \"**/.*\", \"**/.*/**\", \"**/.*/.**\"]:\n    template_files.extend(\n        [\n            name.replace(\"kedro/\", \"\", 1)\n            for name in glob(\"kedro/templates/\" + pattern, recursive=True)\n        ]\n    )\n\n\ndef _collect_requirements(requires):\n    return sorted(set(chain.from_iterable(requires.values())))\n\n\napi_require = {\"api.APIDataSet\": [\"requests~=2.20\"]}\nbiosequence_require = {\"biosequence.BioSequenceDataSet\": [\"biopython~=1.73\"]}\ndask_require = {\n    \"dask.ParquetDataSet\": [\n        \"dask>=2021.10.0, <2022.01; python_version > '3.6'\",\n        \"dask[complete]~=2.6; python_version == '3.6'\",\n    ]\n}\ngeopandas_require = {\n    \"geopandas.GeoJSONDataSet\": [\"geopandas>=0.6.0, <1.0\", \"pyproj>=2.2.0, <3.0\"]\n}\nmatplotlib_require = {\"matplotlib.MatplotlibWriter\": [\"matplotlib>=3.0.3, <4.0\"]}\nholoviews_require = {\"holoviews.HoloviewsWriter\": [\"holoviews~=1.13.0\"]}\nnetworkx_require = {\"networkx.NetworkXDataSet\": [\"networkx~=2.4\"]}\npandas_require = {\n    \"pandas.CSVDataSet\": [PANDAS],\n    \"pandas.ExcelDataSet\": [PANDAS, \"xlrd~=1.0\", \"xlsxwriter~=1.0\"],\n    \"pandas.AppendableExcelDataSet\": [PANDAS, \"openpyxl>=3.0.3, <4.0\"],\n    \"pandas.FeatherDataSet\": [PANDAS],\n    \"pandas.GBQTableDataSet\": [PANDAS, \"pandas-gbq>=0.12.0, <1.0\"],\n    \"pandas.GBQQueryDataSet\": [PANDAS, \"pandas-gbq>=0.12.0, <1.0\"],\n    \"pandas.HDFDataSet\": [\n        PANDAS,\n        \"tables~=3.6.0; platform_system == 'Windows'\",\n        \"tables~=3.6; platform_system != 'Windows'\",\n    ],\n    \"pandas.JSONDataSet\": [PANDAS],\n    \"pandas.ParquetDataSet\": [PANDAS, \"pyarrow>=1.0, <7.0\"],\n    \"pandas.SQLTableDataSet\": [PANDAS, \"SQLAlchemy~=1.2\"],\n    \"pandas.SQLQueryDataSet\": [PANDAS, \"SQLAlchemy~=1.2\"],\n    \"pandas.GenericDataSet\": [PANDAS],\n}\npillow_require = {\"pillow.ImageDataSet\": [\"Pillow~=8.0\"]}\nplotly_require = {\n    \"plotly.PlotlyDataSet\": [PANDAS, \"plotly>=4.8.0, <6.0\"],\n    \"plotly.JSONDataSet\": [\"plotly>=4.8.0, <6.0\"],\n}\nspark_require = {\n    \"spark.SparkDataSet\": [SPARK, HDFS, S3FS],\n    \"spark.SparkHiveDataSet\": [SPARK, HDFS, S3FS],\n    \"spark.SparkJDBCDataSet\": [SPARK, HDFS, S3FS],\n    \"spark.DeltaTableDataSet\": [SPARK, HDFS, S3FS, \"delta-spark~=1.0\"],\n}\ntensorflow_required = {\n    \"tensorflow.TensorflowModelDataset\": [\n        # currently only TensorFlow V2 supported for saving and loading.\n        # V1 requires HDF5 and serializes differently\n        \"tensorflow~=2.0\"\n    ]\n}\nyaml_require = {\"yaml.YAMLDataSet\": [PANDAS, \"PyYAML>=4.2, <6.0\"]}\n\nextras_require = {\n    \"api\": _collect_requirements(api_require),\n    \"biosequence\": _collect_requirements(biosequence_require),\n    \"dask\": _collect_requirements(dask_require),\n    \"docs\": [\n        \"docutils==0.16\",\n        \"sphinx~=3.4.3\",\n        \"sphinx_rtd_theme==0.4.1\",\n        \"nbsphinx==0.8.1\",\n        \"nbstripout~=0.4\",\n        \"recommonmark==0.7.1\",\n        \"sphinx-autodoc-typehints==1.11.1\",\n        \"sphinx_copybutton==0.3.1\",\n        \"ipykernel>=5.3, <7.0\",\n    ],\n    \"geopandas\": _collect_requirements(geopandas_require),\n    \"ipython\": [\"ipython~=7.10\"],\n    \"matplotlib\": _collect_requirements(matplotlib_require),\n    \"holoviews\": _collect_requirements(holoviews_require),\n    \"networkx\": _collect_requirements(networkx_require),\n    \"notebook_templates\": [\"nbconvert>=5.3.1, <6.0\", \"nbformat~=4.4\"],\n    \"pandas\": _collect_requirements(pandas_require),\n    \"pillow\": _collect_requirements(pillow_require),\n    \"plotly\": _collect_requirements(plotly_require),\n    \"profilers\": [\"memory_profiler>=0.50.0, <1.0\"],\n    \"spark\": _collect_requirements(spark_require),\n    \"tensorflow\": _collect_requirements(tensorflow_required),\n    \"yaml\": _collect_requirements(yaml_require),\n    **api_require,\n    **biosequence_require,\n    **dask_require,\n    **geopandas_require,\n    **matplotlib_require,\n    **holoviews_require,\n    **networkx_require,\n    **pandas_require,\n    **pillow_require,\n    **plotly_require,\n    **spark_require,\n    **tensorflow_required,\n    **yaml_require,\n}\n\nextras_require[\"all\"] = _collect_requirements(extras_require)\n\nsetup(\n    name=name,\n    version=version,\n    description=\"Kedro helps you build production-ready data and analytics pipelines\",\n    license=\"Apache Software License (Apache 2.0)\",\n    long_description=readme,\n    long_description_content_type=\"text/markdown\",\n    url=\"https://github.com/kedro-org/kedro\",\n    python_requires=\">=3.6, <3.9\",\n    packages=find_packages(exclude=[\"docs*\", \"tests*\", \"tools*\", \"features*\"]),\n    include_package_data=True,\n    tests_require=test_requires,\n    install_requires=requires,\n    author=\"Kedro\",\n    entry_points={\"console_scripts\": [\"kedro = kedro.framework.cli:main\"]},\n    package_data={\n        name: [\"py.typed\", \"test_requirements.txt\"] + template_files + doc_html_files\n    },\n    zip_safe=False,\n    keywords=\"pipelines, machine learning, data pipelines, data science, data engineering\",\n    classifiers=[\n        \"Development Status :: 4 - Beta\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n    ],\n    extras_require=extras_require,\n)\n", "path": "setup.py"}]}