prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  [FEATURE] Add license in PyPI packages
  ## 🚨🚨 Feature Request
  
  - [x] A new implementation (Improvement) 
  
  ### Is your feature request related to a problem?
  
  deeplake, hub and libdeeplake currently use [Mozilla Public License](https://www.mozilla.org/en-US/MPL/) (MPL). However they do not advertise their license in their respective PyPI packages. This makes automatic license checks (`liccheck`) fail. 
  
  ### Description of the possible solution
  
  Add license and license classifiers in `setup.cfg` for hub, deeplake and libdeeplake.
  Syntax:
  > setup.cfg
  ```
  [metadata]
  license = MPL 2.0
  license_file = LICENSE
  classifiers = 
  	License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
  ```
  
  References:
  - https://setuptools.pypa.io/en/latest/deprecated/distutils/setupscript.html#additional-meta-data
  - https://pypi.org/classifiers/
  - https://github.com/SethMMorton/natsort/blob/master/setup.cfg
  
  --- 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 os
  2 import sys
  3 import re
  4 import platform
  5 from setuptools import find_packages, setup
  6 
  7 project_name = "deeplake"
  8 
  9 
  10 this_directory = os.path.abspath(os.path.dirname(__file__))
  11 
  12 with open(os.path.join(this_directory, "deeplake/requirements/common.txt")) as f:
  13     requirements = f.readlines()
  14 
  15 with open(os.path.join(this_directory, "deeplake/requirements/tests.txt")) as f:
  16     tests = f.readlines()
  17 
  18 with open(os.path.join(this_directory, "README.md"), encoding="utf-8") as f:
  19     long_description = f.read()
  20 
  21 
  22 req_map = {
  23     b: a
  24     for a, b in (
  25         re.findall(r"^(([^!=<>~]+)(?:[!=<>~].*)?$)", x.strip("\n"))[0]
  26         for x in requirements
  27     )
  28 }
  29 
  30 # Add optional dependencies to this dict without version. Version should be specified in requirements.txt
  31 extras = {
  32     "audio": ["av"],
  33     "video": ["av"],
  34     "av": ["av"],
  35     "gcp": ["google-cloud-storage", "google-auth", "google-auth-oauthlib"],
  36     "dicom": ["pydicom"],
  37     "visualizer": ["IPython", "flask"],
  38     "gdrive": [
  39         "google-api-python-client",
  40         "oauth2client",
  41         "google-auth",
  42         "google-auth-oauthlib",
  43     ],
  44     "point_cloud": ["laspy"],
  45 }
  46 
  47 all_extras = {r for v in extras.values() for r in v}
  48 install_requires = [req_map[r] for r in req_map if r not in all_extras]
  49 extras_require = {k: [req_map[r] for r in v] for k, v in extras.items()}
  50 extras_require["all"] = [req_map[r] for r in all_extras]
  51 
  52 
  53 init_file = os.path.join(project_name, "__init__.py")
  54 
  55 
  56 def get_property(prop):
  57     result = re.search(
  58         # find variable with name `prop` in the __init__.py file
  59         rf'{prop}\s*=\s*[\'"]([^\'"]*)[\'"]',
  60         open(init_file).read(),
  61     )
  62     return result.group(1)
  63 
  64 
  65 def libdeeplake_availabe():
  66     py_ver = sys.version_info
  67     if sys.platform == "linux":
  68         if py_ver >= (3, 6) and py_ver <= (3, 10):
  69             return True
  70     if sys.platform == "darwin":
  71         mac_ver = list(map(int, platform.mac_ver()[0].split(".")))
  72         if (
  73             (mac_ver[0] > 10 or mac_ver[0] == 10 and mac_ver[1] >= 12)
  74             and py_ver >= (3, 7)
  75             and py_ver <= (3, 10)
  76         ):
  77             return True
  78     return False
  79 
  80 
  81 if libdeeplake_availabe():
  82     install_requires.insert(0, "libdeeplake==0.0.25")
  83 install_requires.append("hub>=2.8.7")
  84 
  85 
  86 config = {
  87     "name": project_name,
  88     "version": get_property("__version__"),
  89     "description": "Activeloop Deep Lake",
  90     "long_description": long_description,
  91     "long_description_content_type": "text/markdown",
  92     "author": "activeloop.ai",
  93     "author_email": "support@activeloop.ai",
  94     "packages": find_packages(),
  95     "install_requires": install_requires,
  96     "extras_require": extras_require,
  97     "tests_require": tests,
  98     "include_package_data": True,
  99     "zip_safe": False,
  100     "entry_points": {"console_scripts": ["activeloop = deeplake.cli.commands:cli"]},
  101     "dependency_links": [],
  102     "project_urls": {
  103         "Documentation": "https://docs.activeloop.ai/",
  104         "Source": "https://github.com/activeloopai/deeplake",
  105     },
  106 }
  107 
  108 setup(**config)
  109
  ```
  --- 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()
  
  ```
  
golden_diff: diff --git a/setup.py b/setup.py
  --- a/setup.py
  +++ b/setup.py
  @@ -103,6 +103,10 @@
           "Documentation": "https://docs.activeloop.ai/",
           "Source": "https://github.com/activeloopai/deeplake",
       },
  +    "license": "MPL-2.0",
  +    "classifiers": [
  +        "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)",
  +    ],
   }
   
   setup(**config)
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -103,6 +103,10 @@\n         \"Documentation\": \"https://docs.activeloop.ai/\",\n         \"Source\": \"https://github.com/activeloopai/deeplake\",\n     },\n+    \"license\": \"MPL-2.0\",\n+    \"classifiers\": [\n+        \"License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)\",\n+    ],\n }\n \n setup(**config)\n", "issue": "[FEATURE] Add license in PyPI packages\n## \ud83d\udea8\ud83d\udea8 Feature Request\r\n\r\n- [x] A new implementation (Improvement) \r\n\r\n### Is your feature request related to a problem?\r\n\r\ndeeplake, hub and libdeeplake currently use [Mozilla Public License](https://www.mozilla.org/en-US/MPL/) (MPL). However they do not advertise their license in their respective PyPI packages. This makes automatic license checks (`liccheck`) fail. \r\n\r\n### Description of the possible solution\r\n\r\nAdd license and license classifiers in `setup.cfg` for hub, deeplake and libdeeplake.\r\nSyntax:\r\n> setup.cfg\r\n```\r\n[metadata]\r\nlicense = MPL 2.0\r\nlicense_file = LICENSE\r\nclassifiers = \r\n\tLicense :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)\r\n```\r\n\r\nReferences:\r\n- https://setuptools.pypa.io/en/latest/deprecated/distutils/setupscript.html#additional-meta-data\r\n- https://pypi.org/classifiers/\r\n- https://github.com/SethMMorton/natsort/blob/master/setup.cfg\n", "before_files": [{"content": "import os\nimport sys\nimport re\nimport platform\nfrom setuptools import find_packages, setup\n\nproject_name = \"deeplake\"\n\n\nthis_directory = os.path.abspath(os.path.dirname(__file__))\n\nwith open(os.path.join(this_directory, \"deeplake/requirements/common.txt\")) as f:\n    requirements = f.readlines()\n\nwith open(os.path.join(this_directory, \"deeplake/requirements/tests.txt\")) as f:\n    tests = f.readlines()\n\nwith open(os.path.join(this_directory, \"README.md\"), encoding=\"utf-8\") as f:\n    long_description = f.read()\n\n\nreq_map = {\n    b: a\n    for a, b in (\n        re.findall(r\"^(([^!=<>~]+)(?:[!=<>~].*)?$)\", x.strip(\"\\n\"))[0]\n        for x in requirements\n    )\n}\n\n# Add optional dependencies to this dict without version. Version should be specified in requirements.txt\nextras = {\n    \"audio\": [\"av\"],\n    \"video\": [\"av\"],\n    \"av\": [\"av\"],\n    \"gcp\": [\"google-cloud-storage\", \"google-auth\", \"google-auth-oauthlib\"],\n    \"dicom\": [\"pydicom\"],\n    \"visualizer\": [\"IPython\", \"flask\"],\n    \"gdrive\": [\n        \"google-api-python-client\",\n        \"oauth2client\",\n        \"google-auth\",\n        \"google-auth-oauthlib\",\n    ],\n    \"point_cloud\": [\"laspy\"],\n}\n\nall_extras = {r for v in extras.values() for r in v}\ninstall_requires = [req_map[r] for r in req_map if r not in all_extras]\nextras_require = {k: [req_map[r] for r in v] for k, v in extras.items()}\nextras_require[\"all\"] = [req_map[r] for r in all_extras]\n\n\ninit_file = os.path.join(project_name, \"__init__.py\")\n\n\ndef get_property(prop):\n    result = re.search(\n        # find variable with name `prop` in the __init__.py file\n        rf'{prop}\\s*=\\s*[\\'\"]([^\\'\"]*)[\\'\"]',\n        open(init_file).read(),\n    )\n    return result.group(1)\n\n\ndef libdeeplake_availabe():\n    py_ver = sys.version_info\n    if sys.platform == \"linux\":\n        if py_ver >= (3, 6) and py_ver <= (3, 10):\n            return True\n    if sys.platform == \"darwin\":\n        mac_ver = list(map(int, platform.mac_ver()[0].split(\".\")))\n        if (\n            (mac_ver[0] > 10 or mac_ver[0] == 10 and mac_ver[1] >= 12)\n            and py_ver >= (3, 7)\n            and py_ver <= (3, 10)\n        ):\n            return True\n    return False\n\n\nif libdeeplake_availabe():\n    install_requires.insert(0, \"libdeeplake==0.0.25\")\ninstall_requires.append(\"hub>=2.8.7\")\n\n\nconfig = {\n    \"name\": project_name,\n    \"version\": get_property(\"__version__\"),\n    \"description\": \"Activeloop Deep Lake\",\n    \"long_description\": long_description,\n    \"long_description_content_type\": \"text/markdown\",\n    \"author\": \"activeloop.ai\",\n    \"author_email\": \"support@activeloop.ai\",\n    \"packages\": find_packages(),\n    \"install_requires\": install_requires,\n    \"extras_require\": extras_require,\n    \"tests_require\": tests,\n    \"include_package_data\": True,\n    \"zip_safe\": False,\n    \"entry_points\": {\"console_scripts\": [\"activeloop = deeplake.cli.commands:cli\"]},\n    \"dependency_links\": [],\n    \"project_urls\": {\n        \"Documentation\": \"https://docs.activeloop.ai/\",\n        \"Source\": \"https://github.com/activeloopai/deeplake\",\n    },\n}\n\nsetup(**config)\n", "path": "setup.py"}], "after_files": [{"content": "import os\nimport sys\nimport re\nimport platform\nfrom setuptools import find_packages, setup\n\nproject_name = \"deeplake\"\n\n\nthis_directory = os.path.abspath(os.path.dirname(__file__))\n\nwith open(os.path.join(this_directory, \"deeplake/requirements/common.txt\")) as f:\n    requirements = f.readlines()\n\nwith open(os.path.join(this_directory, \"deeplake/requirements/tests.txt\")) as f:\n    tests = f.readlines()\n\nwith open(os.path.join(this_directory, \"README.md\"), encoding=\"utf-8\") as f:\n    long_description = f.read()\n\n\nreq_map = {\n    b: a\n    for a, b in (\n        re.findall(r\"^(([^!=<>~]+)(?:[!=<>~].*)?$)\", x.strip(\"\\n\"))[0]\n        for x in requirements\n    )\n}\n\n# Add optional dependencies to this dict without version. Version should be specified in requirements.txt\nextras = {\n    \"audio\": [\"av\"],\n    \"video\": [\"av\"],\n    \"av\": [\"av\"],\n    \"gcp\": [\"google-cloud-storage\", \"google-auth\", \"google-auth-oauthlib\"],\n    \"dicom\": [\"pydicom\"],\n    \"visualizer\": [\"IPython\", \"flask\"],\n    \"gdrive\": [\n        \"google-api-python-client\",\n        \"oauth2client\",\n        \"google-auth\",\n        \"google-auth-oauthlib\",\n    ],\n    \"point_cloud\": [\"laspy\"],\n}\n\nall_extras = {r for v in extras.values() for r in v}\ninstall_requires = [req_map[r] for r in req_map if r not in all_extras]\nextras_require = {k: [req_map[r] for r in v] for k, v in extras.items()}\nextras_require[\"all\"] = [req_map[r] for r in all_extras]\n\n\ninit_file = os.path.join(project_name, \"__init__.py\")\n\n\ndef get_property(prop):\n    result = re.search(\n        # find variable with name `prop` in the __init__.py file\n        rf'{prop}\\s*=\\s*[\\'\"]([^\\'\"]*)[\\'\"]',\n        open(init_file).read(),\n    )\n    return result.group(1)\n\n\ndef libdeeplake_availabe():\n    py_ver = sys.version_info\n    if sys.platform == \"linux\":\n        if py_ver >= (3, 6) and py_ver <= (3, 10):\n            return True\n    if sys.platform == \"darwin\":\n        mac_ver = list(map(int, platform.mac_ver()[0].split(\".\")))\n        if (\n            (mac_ver[0] > 10 or mac_ver[0] == 10 and mac_ver[1] >= 12)\n            and py_ver >= (3, 7)\n            and py_ver <= (3, 10)\n        ):\n            return True\n    return False\n\n\nif libdeeplake_availabe():\n    install_requires.insert(0, \"libdeeplake==0.0.25\")\ninstall_requires.append(\"hub>=2.8.7\")\n\n\nconfig = {\n    \"name\": project_name,\n    \"version\": get_property(\"__version__\"),\n    \"description\": \"Activeloop Deep Lake\",\n    \"long_description\": long_description,\n    \"long_description_content_type\": \"text/markdown\",\n    \"author\": \"activeloop.ai\",\n    \"author_email\": \"support@activeloop.ai\",\n    \"packages\": find_packages(),\n    \"install_requires\": install_requires,\n    \"extras_require\": extras_require,\n    \"tests_require\": tests,\n    \"include_package_data\": True,\n    \"zip_safe\": False,\n    \"entry_points\": {\"console_scripts\": [\"activeloop = deeplake.cli.commands:cli\"]},\n    \"dependency_links\": [],\n    \"project_urls\": {\n        \"Documentation\": \"https://docs.activeloop.ai/\",\n        \"Source\": \"https://github.com/activeloopai/deeplake\",\n    },\n    \"license\": \"MPL-2.0\",\n    \"classifiers\": [\n        \"License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)\",\n    ],\n}\n\nsetup(**config)\n", "path": "setup.py"}]}