Replace isort, flake8, pycln and pyupgrade by ruff. [Ruff](https://github.com/charliermarsh/ruff) is getting popular lately, and I really like the idea of having a single tool for Python lining instead of N which currently exist. Also written in Rust which is a good use case for this.

 It's supposed to have equivalent functionality, to the ones we are using. The fact that major projects are adopting it is a good sign (see list in their readme).  There are also a few extra options in their readme that look interesting and that we could enable (without having to install yet another plugin)

We won't gain much speed-wise: previously isort, flake8 (which itself is an abstraction over pycodestyle and pyflakes), pycln and pyupgrade  on all files was around 1s, and now it's 20ms. But with mypy taking 10s, it makes mostly no difference.
Still it makes the overall linting configuration easier to maintain.


If we go forward with this, I imagine a changelog is not needed? 

From ef26b081545557b49d832b17966d195a5037abc8 Mon Sep 17 00:00:00 2001
From: Gyeongjae Choi <def6488@gmail.com>
Date: Mon, 26 Sep 2022 05:01:14 +0000
Subject: [PATCH 1/1] Search libs from auditwheel repaired directory

---
 shapely/geos.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/shapely/geos.py b/shapely/geos.py
index 88c5f53..fef5cbd 100644
--- a/shapely/geos.py
+++ b/shapely/geos.py
@@ -62,7 +62,7 @@ def exists_conda_env():
     """Does this module exist in a conda environment?"""
     return os.path.exists(os.path.join(sys.prefix, 'conda-meta'))

-if sys.platform.startswith('linux'):
+if sys.platform.startswith(('linux', 'emscripten')):
     # Test to see if we have a wheel repaired by auditwheel which contains its
     # own libgeos_c. Note: auditwheel 3.1 changed the location of libs.
     geos_whl_so = glob.glob(
-- 
2.37.3
From ef26b081545557b49d832b17966d195a5037abc8 Mon Sep 17 00:00:00 2001
From: Gyeongjae Choi <def6488@gmail.com>
Date: Mon, 26 Sep 2022 05:01:14 +0000
Subject: [PATCH 1/1] Search libs from auditwheel repaired directory

---
 shapely/geos.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/shapely/geos.py b/shapely/geos.py
index 88c5f53..fef5cbd 100644
--- a/shapely/geos.py
+++ b/shapely/geos.py
@@ -62,7 +62,7 @@ def exists_conda_env():
     """Does this module exist in a conda environment?"""
     return os.path.exists(os.path.join(sys.prefix, 'conda-meta'))

-if sys.platform.startswith('linux'):
+if sys.platform.startswith(('linux', 'emscripten')):
     # Test to see if we have a wheel repaired by auditwheel which contains its
     # own libgeos_c. Note: auditwheel 3.1 changed the location of libs.
     geos_whl_so = glob.glob(
-- 
2.37.3