Repository: mars-project/mars

Issue:
Drop Python 3.5
<!--
Thank you for your contribution!

Please review https://github.com/mars-project/mars/blob/master/CONTRIBUTING.rst before opening an issue.
-->

Python 3.5 could be dropped support. 

Reasons:

1. 3.5 is not so widely adopted.
2. A bunch of features are absent.
3. Dependencies like numpy, pandas etc have dropped already.



Discussion:

Resolving patch:
diff --git a/mars/worker/transfer.py b/mars/worker/transfer.py
--- a/mars/worker/transfer.py
+++ b/mars/worker/transfer.py
@@ -589,7 +589,7 @@ def _handle_reject_key(key, *exc):
                     _handle_accept_key(chunk_key, _writer)
                     return self.address, None
                 except:  # noqa: E722
-                    _handle_reject_key(*sys.exc_info())
+                    _handle_reject_key(chunk_key, *sys.exc_info())
                     raise
 
         promise.all_(promises).then(lambda *_: self.tell_promise(callback))
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -185,7 +185,6 @@ def run(self):
         'Operating System :: OS Independent',
         'Programming Language :: Python',
         'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.5',
         'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: 3.7',
         'Programming Language :: Python :: 3.8',
@@ -199,7 +198,7 @@ def run(self):
         'mars-worker = mars.worker.__main__:main',
         'mars-web = mars.web.__main__:main',
     ]},
-    python_requires='>=3.5',
+    python_requires='>=3.6',
     install_requires=requirements,
     cmdclass=override_cmd_class,
     ext_modules=extensions,


Test patch:
diff --git a/mars/dataframe/arithmetic/tests/test_arithmetic_execution.py b/mars/dataframe/arithmetic/tests/test_arithmetic_execution.py
--- a/mars/dataframe/arithmetic/tests/test_arithmetic_execution.py
+++ b/mars/dataframe/arithmetic/tests/test_arithmetic_execution.py
@@ -29,23 +29,8 @@
 
 binary_functions = dict(
     add=dict(func=operator.add, func_name='add', rfunc_name='radd'),
-    subtract=dict(func=operator.sub, func_name='sub', rfunc_name='rsub'),
-    multiply=dict(func=operator.mul, func_name='mul', rfunc_name='rmul'),
-    floordiv=dict(func=operator.floordiv, func_name='floordiv',
-                  rfunc_name='rfloordiv'),
-    truediv=dict(func=operator.truediv, func_name='truediv',
-                 rfunc_name='rtruediv'),
-    mod=dict(func=operator.mod, func_name='mod', rfunc_name='rmod'),
-    power=dict(func=operator.pow, func_name='pow', rfunc_name='rpow'),
     equal=dict(func=comp_func('eq', 'eq'), func_name='eq', rfunc_name='eq'),
-    not_equal=dict(func=comp_func('ne', 'ne'), func_name='ne', rfunc_name='ne'),
-    greater=dict(func=comp_func('gt', 'lt'), func_name='gt', rfunc_name='lt'),
-    less=dict(func=comp_func('lt', 'gt'), func_name='lt', rfunc_name='gt'),
-    greater_equal=dict(func=comp_func('ge', 'le'), func_name='ge', rfunc_name='le'),
-    less_equal=dict(func=comp_func('le', 'ge'), func_name='le', rfunc_name='ge'),
     logical_and=dict(func=operator.and_, func_name='__and__', rfunc_name='__rand__'),
-    logical_or=dict(func=operator.or_, func_name='__or__', rfunc_name='__ror__'),
-    logical_xor=dict(func=operator.xor, func_name='__xor__', rfunc_name='__rxor__'),
 )