drop Python 2.7, 3.4, 3.5 support
diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml
index 1f258e1..bb5e977 100644
--- a/.azure-pipelines.yml
+++ b/.azure-pipelines.yml
@@ -9,6 +9,7 @@
 
 jobs:
   - job: Test
+
     variables:
       vmImage: 'ubuntu-latest'
       python.version: '3.8'
@@ -28,10 +29,6 @@
           python.version: '3.7'
         Python 3.6 Linux:
           python.version: '3.6'
-        Python 3.5 Linux:
-          python.version: '3.5'
-        Python 2.7 Linux:
-          python.version: '2.7'
         Docs:
           TOXENV: 'docs'
         Style:
@@ -56,16 +53,15 @@
     dependsOn: Test
     condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/')
 
+    variables:
+      CIBW_SKIP: 'cp27-* cp35-*'
+
     strategy:
       matrix:
         Linux:
           vmImage: 'ubuntu-latest'
         Windows:
           vmImage: 'windows-latest'
-          CIBW_SKIP: 'cp35-*'
-        Windows Python 3.5:
-          vmImage: 'vs2017-win2016'
-          CIBW_BUILD: 'cp35-*'
         Mac:
           vmImage: 'macos-latest'
 
@@ -76,10 +72,6 @@
       - task: UsePythonVersion@0
         displayName: Use Python
 
-      - script: choco install vcpython27 -f -y
-        displayName: Install Visual C++ for Python 2.7
-        condition: eq(variables['vmImage'], 'windows-latest')
-
       - script: pip install cibuildwheel
         displayName: Install cibuildwheel
 
diff --git a/setup.cfg b/setup.cfg
index f5cafd8..4b17303 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,5 +1,6 @@
 [metadata]
 license_file = LICENSE.rst
+long_description = file:README.rst
 long_description_content_type = text/x-rst
 
 [tool:pytest]
@@ -16,9 +17,8 @@
 
 [coverage:paths]
 source =
-    src/markupsafe
-    .tox/*/lib/python*/site-packages/markupsafe
-    .tox/*/site-packages/markupsafe
+    src
+    */site-packages
 
 [flake8]
 # B = bugbear
diff --git a/setup.py b/setup.py
index 8f9476a..f8eec16 100644
--- a/setup.py
+++ b/setup.py
@@ -12,9 +12,6 @@
 from setuptools import setup
 from setuptools.command.build_ext import build_ext
 
-with io.open("README.rst", "rt", encoding="utf8") as f:
-    readme = f.read()
-
 with io.open("src/markupsafe/__init__.py", "rt", encoding="utf8") as f:
     version = re.search(r'__version__ = "(.*?)"', f.read()).group(1)
 
@@ -60,12 +57,9 @@
             "Issue tracker": "https://github.com/pallets/markupsafe/issues",
         },
         license="BSD-3-Clause",
-        author="Armin Ronacher",
-        author_email="armin.ronacher@active-4.com",
-        maintainer="The Pallets Team",
+        maintainer="Pallets",
         maintainer_email="contact@palletsprojects.com",
         description="Safely add untrusted strings to HTML/XML markup.",
-        long_description=readme,
         classifiers=[
             "Development Status :: 5 - Production/Stable",
             "Environment :: Web Environment",
@@ -73,8 +67,6 @@
             "License :: OSI Approved :: BSD License",
             "Operating System :: OS Independent",
             "Programming Language :: Python",
-            "Programming Language :: Python :: 2",
-            "Programming Language :: Python :: 3",
             "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
             "Topic :: Software Development :: Libraries :: Python Modules",
             "Topic :: Text Processing :: Markup :: HTML",
@@ -82,7 +74,7 @@
         packages=find_packages("src"),
         package_dir={"": "src"},
         include_package_data=True,
-        python_requires=">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*",
+        python_requires=">=3.6",
         cmdclass={"build_ext": ve_build_ext},
         ext_modules=ext_modules if with_binary else [],
     )
diff --git a/tox.ini b/tox.ini
index 679ebeb..736b6e7 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,6 +1,6 @@
 [tox]
 envlist =
-    py{38,37,36,35,27,py3,py}
+    py{38,37,36,py3}
     style
     docs
 skip_missing_interpreters = true