Repository: pyproj4/pyproj (language: python)

Issue:
DEP: Python 3.8 Support
Related to #930

Thinking about pyproj 3.4.x being the last series to support python 3.8.

Community references:

-  Python 3.11 - October 2022 [ref](https://devguide.python.org/versions/). #1110
-  [NEP-29](https://numpy.org/neps/nep-0029-deprecation_policy.html) says numpy drops support for Python 3.8 in April 2023.
- [rioxarray](https://github.com/corteva/rioxarray/issues/582)
- [rasterio](https://github.com/rasterio/rasterio/issues/2773)
- [geocube](https://github.com/corteva/geocube/issues/136)
- [xarray](https://github.com/pydata/xarray/pull/7461)









Discussion / hints:
Note Python 3.8 is the default Python for Ubuntu 20.04 (Focal), supported by Debian until May 2025. That's quite extended, so that's not my recommendation.

[PEP 569](https://peps.python.org/pep-0569/) says the last security release will be at least October 2024.

My suggestion is for Python 3.8 to be dropped when addressing failing tests in the Python 3.8 CI job becomes too much of a burden, or October 2024, whichever is later.
Stable versions of pyproj for Python 3.8 will continue to be on pypi for those users. Newer releases will have pins in the metadata to ensure disruption does not occur for those using the default python on LTS distributions.

If those users would like to use newer versions of packages in the Python ecosystem, the dead snakes ppa is a great resource: https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa. pyproj uses it to test pyproj.



Another thing to consider is that Ubuntu and Python are funded by organizations that provide long term support. pyproj is maintained solely by contributors in their free time. So, the standard for support is a bit different.

Fix patch:
diff --git a/appveyor.yml b/appveyor.yml
index 445723fa9..fbf015cac 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -13,7 +13,7 @@ environment:
     # See: http://www.appveyor.com/docs/installed-software#python
     # build is limited to 60 minutes, without caching each build takes 10-30 minutes
     # with caching build takes less than 1 minute
-    - PYTHON: "C:\\Python38-x64"
+    - PYTHON: "C:\\Python39-x64"
       APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
       PROJSOURCE: 9.2.0
       BUILD_SHARED_LIBS: ON
diff --git a/docs/history.rst b/docs/history.rst
index 4ea3d7c6b..3f6110c10 100644
--- a/docs/history.rst
+++ b/docs/history.rst
@@ -3,8 +3,8 @@ Change Log
 
 Latest
 ------
+- DEP: Minimum supported Python version 3.9 (issue #1111)
 - ENH: Added allow_superseded kwargs to :class:`pyproj.transformer.TransformerGroup` (pull #1269)
-
 - ENH: Added :meth:`CRS.to_2d` to demote 3D CRS to 2D (issue #1266)
 
 3.5.0
diff --git a/docs/index.rst b/docs/index.rst
index 1b30dbfbe..e953205b1 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -7,7 +7,7 @@ GitHub Repository: https://github.com/pyproj4/pyproj
 
 .. note:: Minimum supported PROJ version is 9.0
 
-.. note:: Minimum supported Python version is 3.8
+.. note:: Minimum supported Python version is 3.9
 
 .. note:: Linux (manylinux2014) wheels require pip 19.3+
 
diff --git a/pyproj/__init__.py b/pyproj/__init__.py
index d0984b4ff..a69814af9 100644
--- a/pyproj/__init__.py
+++ b/pyproj/__init__.py
@@ -4,7 +4,7 @@
 
 Download: http://python.org/pypi/pyproj
 
-Requirements: Python 3.8+.
+Requirements: Python 3.9+.
 
 Contact:  Jeffrey Whitaker <jeffrey.s.whitaker@noaa.gov>
 
diff --git a/setup.cfg b/setup.cfg
index 631286ea0..50725c1b1 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -18,7 +18,6 @@ classifiers =
     License :: OSI Approved :: MIT License
     Operating System :: OS Independent
     Programming Language :: Python
-    Programming Language :: Python :: 3.8
     Programming Language :: Python :: 3.9
     Programming Language :: Python :: 3.10
     Programming Language :: Python :: 3.11
@@ -39,7 +38,7 @@ project_urls =
 [options]
 zip_safe = False # https://mypy.readthedocs.io/en/stable/installed_packages.html
 packages = pyproj,pyproj.crs
-python_requires = >=3.8
+python_requires = >=3.9
 install_requires =
     certifi
 


Test patch:
diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index 175ea903b..35637df1b 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -39,7 +39,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        python-version: ['3.8', '3.9', '3.10', '3.11']
+        python-version: ['3.9', '3.10', '3.11']
         proj-version: ['9.2.0']
         include:
           - python-version: '3.9'
@@ -122,7 +122,7 @@ jobs:
       fail-fast: true
       matrix:
         os: [ubuntu-latest, macos-latest, windows-latest]
-        python-version: ['3.8', '3.9', '3.10', '3.11']
+        python-version: ['3.9', '3.10', '3.11']
         python-implementation: [python]
         proj-version: ['*']
         include: