Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pyproj for openSUSE:Factory 
checked in at 2023-09-26 22:01:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pyproj (Old)
 and      /work/SRC/openSUSE:Factory/.python-pyproj.new.1770 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pyproj"

Tue Sep 26 22:01:43 2023 rev:28 rq:1113531 version:3.6.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pyproj/python-pyproj.changes      
2023-08-31 13:51:15.556106792 +0200
+++ /work/SRC/openSUSE:Factory/.python-pyproj.new.1770/python-pyproj.changes    
2023-09-26 22:11:03.172733336 +0200
@@ -1,0 +2,12 @@
+Sun Sep 24 20:01:29 UTC 2023 - Libor Pechacek <lpecha...@gmx.com>
+
+- Update to 3.6.1
+  * WHL: Update to PROJ 9.3 by @snowman2 in #1334
+  * DEP: Add Python 3.12 support by @snowman2 in #1341
+  * BUG: Cython 3 compatibility fixes by @snowman2 in #1322
+  * BUG: Remove pkg_resources from setup.py by @snowman2 in #1314
+  * DOC: Fixed typos by @djm93dev in #1305 & #1306
+  * DOC: Fix logo view on Pypi by @cyschneck in #1308
+  * DOC: Spelling permimeter -> perimeter by @zanejgr in #1310
+
+-------------------------------------------------------------------

Old:
----
  pyproj-3.6.0.tar.gz

New:
----
  pyproj-3.6.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pyproj.spec ++++++
--- /var/tmp/diff_new_pack.7izDeZ/_old  2023-09-26 22:11:04.208770836 +0200
+++ /var/tmp/diff_new_pack.7izDeZ/_new  2023-09-26 22:11:04.208770836 +0200
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-pyproj
-Version:        3.6.0
+Version:        3.6.1
 Release:        0
 Summary:        Python interface to PROJ library
 License:        SUSE-Public-Domain AND X11
@@ -27,8 +27,8 @@
 Source:         
https://files.pythonhosted.org/packages/source/p/pyproj/pyproj-%{version}.tar.gz
 BuildRequires:  %{python_module Cython >= 0.28.4 with %python-Cython < 3}
 BuildRequires:  %{python_module devel >= 3.8}
-BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module pip}
+BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
 BuildRequires:  proj

++++++ pyproj-3.6.0.tar.gz -> pyproj-3.6.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/PKG-INFO new/pyproj-3.6.1/PKG-INFO
--- old/pyproj-3.6.0/PKG-INFO   2023-06-12 15:28:26.049971600 +0200
+++ new/pyproj-3.6.1/PKG-INFO   2023-09-21 03:31:48.168290600 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pyproj
-Version: 3.6.0
+Version: 3.6.1
 Summary: Python interface to PROJ (cartographic projections and coordinate 
transformations library)
 Home-page: https://github.com/pyproj4/pyproj
 Author-email: Jeff Whitaker <jeffrey.s.whita...@noaa.gov>
@@ -19,6 +19,7 @@
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Topic :: Scientific/Engineering
 Classifier: Topic :: Scientific/Engineering :: GIS
@@ -29,8 +30,9 @@
 Description-Content-Type: text/markdown
 License-File: LICENSE
 License-File: LICENSE_proj
+Requires-Dist: certifi
 
-![Pyproj logo](docs/media/logo.png)
+![Pyproj 
logo](https://raw.githubusercontent.com/pyproj4/pyproj/main/docs/media/logo.png)
 
 # pyproj
 
@@ -38,7 +40,7 @@
 
 <p align="center">
 <a 
href="https://gitter.im/pyproj4-pyproj/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge";><img
 alt="Join the chat at https://gitter.im/pyproj4-pyproj/community"; 
src="https://badges.gitter.im/pyproj4-pyproj/community.svg";></a>
-<a href="#contributors"><img alt="All Contributors" 
src="https://img.shields.io/badge/all_contributors-60-orange.svg?style=flat-square";></a>
+<a href="#contributors"><img alt="All Contributors" 
src="https://img.shields.io/badge/all_contributors-63-orange.svg?style=flat-square";></a>
 <a href="https://ci.appveyor.com/project/snowman2/pyproj";><img alt="Appveyor 
Build Status" 
src="https://ci.appveyor.com/api/projects/status/v2ypts9j76doa9ey/branch/main?svg=true";></a>
 <a 
href="https://github.com/pyproj4/pyproj/actions?query=workflow%3ATests";><img 
alt="GitHub Actions Build Status" 
src="https://github.com/pyproj4/pyproj/workflows/Tests/badge.svg";></a>
 <a href="https://codecov.io/gh/pyproj4/pyproj";><img alt="Codecov Status" 
src="https://codecov.io/gh/pyproj4/pyproj/branch/main/graph/badge.svg";></a>
@@ -148,6 +150,9 @@
     <td align="center"><a href="https://github.com/dmahr1";><img 
src="https://avatars.githubusercontent.com/u/8354515?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>Dan Mahr</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=dmahr1"; 
title="Code">💻</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=dmahr1"; 
title="Documentation">📖</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=dmahr1"; title="Tests">⚠
️</a></td>
     <td align="center"><a href="https://github.com/rhugonnet";><img 
src="https://avatars.githubusercontent.com/u/28896516?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>Romain Hugonnet</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=rhugonnet"; 
title="Code">💻</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=rhugonnet"; 
title="Documentation">📖</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=rhugonnet"; 
title="Tests">⚠️</a></td>
     <td align="center"><a href="https://javier.jimenezshaw.com/";><img 
src="https://avatars.githubusercontent.com/u/15678366?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>Javier Jimenez Shaw</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=jjimenezshaw"; 
title="Code">💻</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=jjimenezshaw"; 
title="Documentation">📖</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=jjimenezshaw"; 
title="Tests">⚠️</a></td>
+    <td align="center"><a href="https://github.com/djm93dev";><img 
src="https://avatars.githubusercontent.com/u/101536185?v=4?s=100"; 
width="100px;" alt=""/><br /><sub><b>Daniel McDonald</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=djm93dev"; 
title="Documentation">📖</a></td>
+    <td align="center"><a href="https://cyschneck.com/";><img 
src="https://avatars.githubusercontent.com/u/22159116?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>Cora Schneck</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=cyschneck"; 
title="Documentation">📖</a></td>
+    <td align="center"><a href="https://github.com/zanejgr";><img 
src="https://avatars.githubusercontent.com/u/14795919?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>zanejgr</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=zanejgr"; 
title="Documentation">📖</a></td>
   </tr>
 </table>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/README.md new/pyproj-3.6.1/README.md
--- old/pyproj-3.6.0/README.md  2023-06-12 15:27:32.000000000 +0200
+++ new/pyproj-3.6.1/README.md  2023-09-21 03:30:44.000000000 +0200
@@ -1,4 +1,4 @@
-![Pyproj logo](docs/media/logo.png)
+![Pyproj 
logo](https://raw.githubusercontent.com/pyproj4/pyproj/main/docs/media/logo.png)
 
 # pyproj
 
@@ -6,7 +6,7 @@
 
 <p align="center">
 <a 
href="https://gitter.im/pyproj4-pyproj/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge";><img
 alt="Join the chat at https://gitter.im/pyproj4-pyproj/community"; 
src="https://badges.gitter.im/pyproj4-pyproj/community.svg";></a>
-<a href="#contributors"><img alt="All Contributors" 
src="https://img.shields.io/badge/all_contributors-60-orange.svg?style=flat-square";></a>
+<a href="#contributors"><img alt="All Contributors" 
src="https://img.shields.io/badge/all_contributors-63-orange.svg?style=flat-square";></a>
 <a href="https://ci.appveyor.com/project/snowman2/pyproj";><img alt="Appveyor 
Build Status" 
src="https://ci.appveyor.com/api/projects/status/v2ypts9j76doa9ey/branch/main?svg=true";></a>
 <a 
href="https://github.com/pyproj4/pyproj/actions?query=workflow%3ATests";><img 
alt="GitHub Actions Build Status" 
src="https://github.com/pyproj4/pyproj/workflows/Tests/badge.svg";></a>
 <a href="https://codecov.io/gh/pyproj4/pyproj";><img alt="Codecov Status" 
src="https://codecov.io/gh/pyproj4/pyproj/branch/main/graph/badge.svg";></a>
@@ -116,6 +116,9 @@
     <td align="center"><a href="https://github.com/dmahr1";><img 
src="https://avatars.githubusercontent.com/u/8354515?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>Dan Mahr</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=dmahr1"; 
title="Code">💻</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=dmahr1"; 
title="Documentation">📖</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=dmahr1"; title="Tests">⚠
️</a></td>
     <td align="center"><a href="https://github.com/rhugonnet";><img 
src="https://avatars.githubusercontent.com/u/28896516?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>Romain Hugonnet</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=rhugonnet"; 
title="Code">💻</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=rhugonnet"; 
title="Documentation">📖</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=rhugonnet"; 
title="Tests">⚠️</a></td>
     <td align="center"><a href="https://javier.jimenezshaw.com/";><img 
src="https://avatars.githubusercontent.com/u/15678366?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>Javier Jimenez Shaw</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=jjimenezshaw"; 
title="Code">💻</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=jjimenezshaw"; 
title="Documentation">📖</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=jjimenezshaw"; 
title="Tests">⚠️</a></td>
+    <td align="center"><a href="https://github.com/djm93dev";><img 
src="https://avatars.githubusercontent.com/u/101536185?v=4?s=100"; 
width="100px;" alt=""/><br /><sub><b>Daniel McDonald</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=djm93dev"; 
title="Documentation">📖</a></td>
+    <td align="center"><a href="https://cyschneck.com/";><img 
src="https://avatars.githubusercontent.com/u/22159116?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>Cora Schneck</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=cyschneck"; 
title="Documentation">📖</a></td>
+    <td align="center"><a href="https://github.com/zanejgr";><img 
src="https://avatars.githubusercontent.com/u/14795919?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>zanejgr</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=zanejgr"; 
title="Documentation">📖</a></td>
   </tr>
 </table>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/docs/advanced_examples.rst 
new/pyproj-3.6.1/docs/advanced_examples.rst
--- old/pyproj-3.6.0/docs/advanced_examples.rst 2023-06-12 15:27:32.000000000 
+0200
+++ new/pyproj-3.6.1/docs/advanced_examples.rst 2023-09-21 03:30:44.000000000 
+0200
@@ -19,12 +19,12 @@
 
 .. code-block:: python
 
-    import numpy as np
+    import numpy
     from pyproj import Transformer, transform
 
     transformer = Transformer.from_crs(2263, 4326)
-    x_coords = np.random.randint(80000, 120000)
-    y_coords = np.random.randint(200000, 250000)
+    x_coords = numpy.random.randint(80000, 120000)
+    y_coords = numpy.random.randint(200000, 250000)
 
 
 Example with :func:`pyproj.transformer.transform`:
@@ -202,7 +202,7 @@
 - :class:`pyproj.crs.CRS`
 - :class:`pyproj.transformer.Transformer`
 
-If you have pyproj<3.1, you will need to create create the object
+If you have pyproj<3.1, you will need to create the object
 within the thread that uses it.
 
 Here is a simple demonstration:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/docs/history.rst 
new/pyproj-3.6.1/docs/history.rst
--- old/pyproj-3.6.0/docs/history.rst   2023-06-12 15:27:32.000000000 +0200
+++ new/pyproj-3.6.1/docs/history.rst   2023-09-21 03:30:44.000000000 +0200
@@ -1,6 +1,12 @@
 Change Log
 ==========
 
+3.6.1
+------
+- WHL: Wheels contain PROJ 9.3.0 (issue #1327)
+- BUG: Remove pkg_resources from setup.py (issue #1313)
+- BUG: Cython 3 compatibility fixes (issue #1321)
+
 3.6.0
 ------
 - DEP: Minimum supported Python version 3.9 (issue #1111)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/docs/past_versions.rst 
new/pyproj-3.6.1/docs/past_versions.rst
--- old/pyproj-3.6.0/docs/past_versions.rst     2023-06-12 15:27:32.000000000 
+0200
+++ new/pyproj-3.6.1/docs/past_versions.rst     2023-09-21 03:30:44.000000000 
+0200
@@ -1,6 +1,7 @@
 Documentation Archive
 =====================
 
+- `3.6.0 <https://pyproj4.github.io/pyproj/3.6.0/>`_
 - `3.5.0 <https://pyproj4.github.io/pyproj/3.5.0/>`_
 - `3.4.1 <https://pyproj4.github.io/pyproj/3.4.1/>`_
 - `3.3.1 <https://pyproj4.github.io/pyproj/3.3.1/>`_
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/pyproj/__init__.py 
new/pyproj-3.6.1/pyproj/__init__.py
--- old/pyproj-3.6.0/pyproj/__init__.py 2023-06-12 15:27:32.000000000 +0200
+++ new/pyproj-3.6.1/pyproj/__init__.py 2023-09-21 03:30:44.000000000 +0200
@@ -66,7 +66,7 @@
     transform,
 )
 
-__version__ = "3.6.0"
+__version__ = "3.6.1"
 __all__ = [
     "Proj",
     "Geod",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/pyproj/_datadir.pxd 
new/pyproj-3.6.1/pyproj/_datadir.pxd
--- old/pyproj-3.6.0/pyproj/_datadir.pxd        2023-06-12 15:27:32.000000000 
+0200
+++ new/pyproj-3.6.1/pyproj/_datadir.pxd        2023-09-21 03:30:44.000000000 
+0200
@@ -1,7 +1,7 @@
 include "proj.pxi"
 
-cpdef str _get_proj_error()
-cpdef void _clear_proj_error()
+cpdef str _get_proj_error() noexcept
+cpdef void _clear_proj_error() noexcept
 cdef PJ_CONTEXT* PYPROJ_GLOBAL_CONTEXT
 cdef PJ_CONTEXT* pyproj_context_create() except *
 cdef void pyproj_context_destroy(PJ_CONTEXT* context) except *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/pyproj/_datadir.pyx 
new/pyproj-3.6.1/pyproj/_datadir.pyx
--- old/pyproj-3.6.0/pyproj/_datadir.pyx        2023-06-12 15:27:32.000000000 
+0200
+++ new/pyproj-3.6.1/pyproj/_datadir.pyx        2023-09-21 03:30:44.000000000 
+0200
@@ -6,7 +6,6 @@
 
 from pyproj._compat cimport cstrencode
 
-from pyproj.exceptions import DataDirError
 from pyproj.utils import strtobool
 
 # for logging the internal PROJ messages
@@ -79,14 +78,14 @@
     )
 
 
-cpdef str _get_proj_error():
+cpdef str _get_proj_error() noexcept:
     """
     Get the internal PROJ error message. Returns None if no error was set.
     """
     return _INTERNAL_PROJ_ERROR
 
 
-cpdef void _clear_proj_error():
+cpdef void _clear_proj_error() noexcept:
     """
     Clear the internal PROJ error message.
     """
@@ -94,7 +93,7 @@
     _INTERNAL_PROJ_ERROR = None
 
 
-cdef void pyproj_log_function(void *user_data, int level, const char 
*error_msg) nogil:
+cdef void pyproj_log_function(void *user_data, int level, const char 
*error_msg) nogil noexcept:
     """
     Log function for catching PROJ errors.
     """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/pyproj/_geod.pyx 
new/pyproj-3.6.1/pyproj/_geod.pyx
--- old/pyproj-3.6.0/pyproj/_geod.pyx   2023-06-12 15:27:32.000000000 +0200
+++ new/pyproj-3.6.1/pyproj/_geod.pyx   2023-09-21 03:30:44.000000000 +0200
@@ -566,7 +566,7 @@
         Returns
         -------
         (float, float):
-            The area (meter^2) and permimeter (meters) of the polygon.
+            The area (meter^2) and perimeter (meters) of the polygon.
 
         """
         cdef PyBuffWriteManager lonbuff = PyBuffWriteManager(lons)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/pyproj/crs/enums.py 
new/pyproj-3.6.1/pyproj/crs/enums.py
--- old/pyproj-3.6.0/pyproj/crs/enums.py        2023-06-12 15:27:32.000000000 
+0200
+++ new/pyproj-3.6.1/pyproj/crs/enums.py        2023-09-21 03:30:44.000000000 
+0200
@@ -82,7 +82,7 @@
     """
     .. versionadded:: 2.5.0
 
-    Ellisoidal 2D Coordinate System Axis for creating axis with
+    Ellipsoidal 2D Coordinate System Axis for creating axis with
     with :class:`pyproj.crs.coordinate_system.Ellipsoidal2DCS`
 
     Attributes
@@ -99,7 +99,7 @@
     """
     .. versionadded:: 2.5.0
 
-    Ellisoidal 3D Coordinate System Axis for creating axis with
+    Ellipsoidal 3D Coordinate System Axis for creating axis with
     with :class:`pyproj.crs.coordinate_system.Ellipsoidal3DCS`
 
     Attributes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/pyproj/geod.py 
new/pyproj-3.6.1/pyproj/geod.py
--- old/pyproj-3.6.0/pyproj/geod.py     2023-06-12 15:27:32.000000000 +0200
+++ new/pyproj-3.6.1/pyproj/geod.py     2023-09-21 03:30:44.000000000 +0200
@@ -969,7 +969,7 @@
         Returns
         -------
         (float, float):
-            The geodesic area (meters^2) and permimeter (meters) of the 
polygon.
+            The geodesic area (meters^2) and perimeter (meters) of the polygon.
         """
         return self._polygon_area_perimeter(
             _copytobuffer(lons)[0], _copytobuffer(lats)[0], radians=radians
@@ -1077,7 +1077,7 @@
         Returns
         -------
         (float, float):
-            The geodesic area (meters^2) and permimeter (meters) of the 
polygon.
+            The geodesic area (meters^2) and perimeter (meters) of the polygon.
         """
         try:
             return self.polygon_area_perimeter(  # type: ignore
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/pyproj.egg-info/PKG-INFO 
new/pyproj-3.6.1/pyproj.egg-info/PKG-INFO
--- old/pyproj-3.6.0/pyproj.egg-info/PKG-INFO   2023-06-12 15:28:26.000000000 
+0200
+++ new/pyproj-3.6.1/pyproj.egg-info/PKG-INFO   2023-09-21 03:31:48.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pyproj
-Version: 3.6.0
+Version: 3.6.1
 Summary: Python interface to PROJ (cartographic projections and coordinate 
transformations library)
 Home-page: https://github.com/pyproj4/pyproj
 Author-email: Jeff Whitaker <jeffrey.s.whita...@noaa.gov>
@@ -19,6 +19,7 @@
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Topic :: Scientific/Engineering
 Classifier: Topic :: Scientific/Engineering :: GIS
@@ -29,8 +30,9 @@
 Description-Content-Type: text/markdown
 License-File: LICENSE
 License-File: LICENSE_proj
+Requires-Dist: certifi
 
-![Pyproj logo](docs/media/logo.png)
+![Pyproj 
logo](https://raw.githubusercontent.com/pyproj4/pyproj/main/docs/media/logo.png)
 
 # pyproj
 
@@ -38,7 +40,7 @@
 
 <p align="center">
 <a 
href="https://gitter.im/pyproj4-pyproj/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge";><img
 alt="Join the chat at https://gitter.im/pyproj4-pyproj/community"; 
src="https://badges.gitter.im/pyproj4-pyproj/community.svg";></a>
-<a href="#contributors"><img alt="All Contributors" 
src="https://img.shields.io/badge/all_contributors-60-orange.svg?style=flat-square";></a>
+<a href="#contributors"><img alt="All Contributors" 
src="https://img.shields.io/badge/all_contributors-63-orange.svg?style=flat-square";></a>
 <a href="https://ci.appveyor.com/project/snowman2/pyproj";><img alt="Appveyor 
Build Status" 
src="https://ci.appveyor.com/api/projects/status/v2ypts9j76doa9ey/branch/main?svg=true";></a>
 <a 
href="https://github.com/pyproj4/pyproj/actions?query=workflow%3ATests";><img 
alt="GitHub Actions Build Status" 
src="https://github.com/pyproj4/pyproj/workflows/Tests/badge.svg";></a>
 <a href="https://codecov.io/gh/pyproj4/pyproj";><img alt="Codecov Status" 
src="https://codecov.io/gh/pyproj4/pyproj/branch/main/graph/badge.svg";></a>
@@ -148,6 +150,9 @@
     <td align="center"><a href="https://github.com/dmahr1";><img 
src="https://avatars.githubusercontent.com/u/8354515?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>Dan Mahr</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=dmahr1"; 
title="Code">💻</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=dmahr1"; 
title="Documentation">📖</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=dmahr1"; title="Tests">⚠
️</a></td>
     <td align="center"><a href="https://github.com/rhugonnet";><img 
src="https://avatars.githubusercontent.com/u/28896516?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>Romain Hugonnet</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=rhugonnet"; 
title="Code">💻</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=rhugonnet"; 
title="Documentation">📖</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=rhugonnet"; 
title="Tests">⚠️</a></td>
     <td align="center"><a href="https://javier.jimenezshaw.com/";><img 
src="https://avatars.githubusercontent.com/u/15678366?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>Javier Jimenez Shaw</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=jjimenezshaw"; 
title="Code">💻</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=jjimenezshaw"; 
title="Documentation">📖</a> <a 
href="https://github.com/pyproj4/pyproj/commits?author=jjimenezshaw"; 
title="Tests">⚠️</a></td>
+    <td align="center"><a href="https://github.com/djm93dev";><img 
src="https://avatars.githubusercontent.com/u/101536185?v=4?s=100"; 
width="100px;" alt=""/><br /><sub><b>Daniel McDonald</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=djm93dev"; 
title="Documentation">📖</a></td>
+    <td align="center"><a href="https://cyschneck.com/";><img 
src="https://avatars.githubusercontent.com/u/22159116?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>Cora Schneck</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=cyschneck"; 
title="Documentation">📖</a></td>
+    <td align="center"><a href="https://github.com/zanejgr";><img 
src="https://avatars.githubusercontent.com/u/14795919?v=4?s=100"; width="100px;" 
alt=""/><br /><sub><b>zanejgr</b></sub></a><br /><a 
href="https://github.com/pyproj4/pyproj/commits?author=zanejgr"; 
title="Documentation">📖</a></td>
   </tr>
 </table>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/pyproject.toml 
new/pyproj-3.6.1/pyproject.toml
--- old/pyproj-3.6.0/pyproject.toml     2023-06-12 15:27:32.000000000 +0200
+++ new/pyproj-3.6.1/pyproject.toml     2023-09-21 03:30:44.000000000 +0200
@@ -1,5 +1,5 @@
 [build-system]
-requires = ["setuptools>=61.0.0", "wheel", "cython>=0.28.4"]
+requires = ["setuptools>=61.0.0", "wheel", "cython>=3"]
 build-backend = "setuptools.build_meta"
 
 [project]
@@ -32,6 +32,7 @@
     "Programming Language :: Python :: 3.9",
     "Programming Language :: Python :: 3.10",
     "Programming Language :: Python :: 3.11",
+    "Programming Language :: Python :: 3.12",
     "Programming Language :: Python :: 3 :: Only",
     "Topic :: Scientific/Engineering",
     "Topic :: Scientific/Engineering :: GIS",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/setup.py new/pyproj-3.6.1/setup.py
--- old/pyproj-3.6.0/setup.py   2023-06-12 15:27:32.000000000 +0200
+++ new/pyproj-3.6.1/setup.py   2023-09-21 03:30:44.000000000 +0200
@@ -7,20 +7,39 @@
 from pathlib import Path
 from typing import Optional
 
-from pkg_resources import parse_version
 from setuptools import Extension, setup
 
-PROJ_MIN_VERSION = parse_version("9.0.0")
+PROJ_MIN_VERSION = (9, 0, 0)
 CURRENT_FILE_PATH = Path(__file__).absolute().parent
 BASE_INTERNAL_PROJ_DIR = Path("proj_dir")
 INTERNAL_PROJ_DIR = CURRENT_FILE_PATH / "pyproj" / BASE_INTERNAL_PROJ_DIR
 PROJ_VERSION_SEARCH = re.compile(r".*Rel\.\s+(?P<version>\d+\.\d+\.\d+).*")
+VERSION_SEARCH = re.compile(r".*(?P<version>\d+\.\d+\.\d+).*")
 
 
-def get_proj_version(proj_dir: Path) -> str:
+def _parse_version(version: str) -> tuple[int, int, int]:
+    """Convert a version string to a tuple of integers."""
+    match = VERSION_SEARCH.search(version)
+    if not match:
+        raise SystemExit(
+            f"PROJ version unable to be determined from {version}. "
+            "Please set the PROJ_VERSION environment variable."
+        )
+    return tuple(
+        int(ver) for ver in match.groupdict()["version"].split(".", maxsplit=2)
+    )
+
+
+def get_proj_version(proj_dir: Path) -> tuple[int, int, int]:
+    """
+    Determine PROJ version.
+
+    Prefer PROJ_VERSION environment variable.
+    If PROJ_VERSION is not set, try to determine the version from the PROJ 
executable.
+    """
     proj_version = os.environ.get("PROJ_VERSION")
     if proj_version:
-        return proj_version
+        return _parse_version(proj_version)
     proj = proj_dir / "bin" / "proj"
     proj_ver = subprocess.check_output(str(proj), 
stderr=subprocess.STDOUT).decode(
         "ascii"
@@ -31,15 +50,17 @@
             "PROJ version unable to be determined. "
             "Please set the PROJ_VERSION environment variable."
         )
-    return match.groupdict()["version"]
+    return _parse_version(match.groupdict()["version"])
 
 
-def check_proj_version(proj_version: str) -> None:
+def check_proj_version(proj_version: tuple[int, int, int]) -> None:
     """checks that the PROJ library meets the minimum version"""
-    if parse_version(proj_version) < PROJ_MIN_VERSION:
+    if proj_version < PROJ_MIN_VERSION:
+        proj_version_str = ".".join(str(ver) for ver in proj_version)
+        min_proj_version_str = ".".join(str(ver) for ver in PROJ_MIN_VERSION)
         raise SystemExit(
-            f"ERROR: Minimum supported PROJ version is {PROJ_MIN_VERSION}, 
installed "
-            f"version is {proj_version}. For more information see: "
+            f"ERROR: Minimum supported PROJ version is {min_proj_version_str}, 
"
+            f"installed version is {proj_version_str}. For more information 
see: "
             "https://pyproj4.github.io/pyproj/stable/installation.html";
         )
 
@@ -154,11 +175,11 @@
     # make sure cython is available
     try:
         from Cython.Build import cythonize
-    except ImportError:
+    except ImportError as error:
         raise SystemExit(
             "ERROR: Cython.Build.cythonize not found. "
             "Cython is required to build pyproj."
-        )
+        ) from error
 
     # By default we'll try to get options PROJ_DIR or the local version of proj
     proj_dir = get_proj_dir()
@@ -167,9 +188,7 @@
 
     proj_version = get_proj_version(proj_dir)
     check_proj_version(proj_version)
-    proj_version_major, proj_version_minor, proj_version_patch = parse_version(
-        proj_version
-    ).base_version.split(".")
+    proj_version_major, proj_version_minor, proj_version_patch = proj_version
 
     # setup extension options
     ext_options = {
@@ -197,9 +216,9 @@
         ],
         quiet=True,
         compile_time_env={
-            "CTE_PROJ_VERSION_MAJOR": int(proj_version_major),
-            "CTE_PROJ_VERSION_MINOR": int(proj_version_minor),
-            "CTE_PROJ_VERSION_PATCH": int(proj_version_patch),
+            "CTE_PROJ_VERSION_MAJOR": proj_version_major,
+            "CTE_PROJ_VERSION_MINOR": proj_version_minor,
+            "CTE_PROJ_VERSION_PATCH": proj_version_patch,
             "CTE_PYTHON_IMPLEMENTATION": platform.python_implementation(),
         },
         **get_cythonize_options(),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/test/conftest.py 
new/pyproj-3.6.1/test/conftest.py
--- old/pyproj-3.6.0/test/conftest.py   2023-06-12 15:27:32.000000000 +0200
+++ new/pyproj-3.6.1/test/conftest.py   2023-09-21 03:30:44.000000000 +0200
@@ -18,6 +18,7 @@
 PROJ_GTE_911 = PROJ_LOOSE_VERSION >= version.parse("9.1.1")
 PROJ_GTE_92 = PROJ_LOOSE_VERSION >= version.parse("9.2.0")
 PROJ_GTE_921 = PROJ_LOOSE_VERSION >= version.parse("9.2.1")
+PROJ_GTE_93 = PROJ_LOOSE_VERSION >= version.parse("9.3.0")
 
 
 def unset_data_dir():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/test/test_datum_shift.py 
new/pyproj-3.6.1/test/test_datum_shift.py
--- old/pyproj-3.6.0/test/test_datum_shift.py   2023-06-12 15:27:32.000000000 
+0200
+++ new/pyproj-3.6.1/test/test_datum_shift.py   2023-09-21 03:30:44.000000000 
+0200
@@ -51,13 +51,13 @@
     assert_almost_equal((back_lon, back_lat, back_z), (WGS84_lon, WGS84_lat, 
WGS84_z))
 
 
-def test_shift_wgs84_to_gaussb_no_ellisoidal_height():
+def test_shift_wgs84_to_gaussb_no_ellipsoidal_height():
     with pytest.warns(FutureWarning):
         xgb, ygb, zgb = transform(WGS84_PROJ, GAUSSSB_PROJ, WGS84_lon, 
WGS84_lat, 0)
     assert_almost_equal((xgb, ygb, zgb), (GB_x, 5055619.899, 0), decimal=2)
 
 
-def test_shift_gaussb_to_wgs84_no_ellisoidal_height():
+def test_shift_gaussb_to_wgs84_no_ellipsoidal_height():
     with pytest.warns(FutureWarning):
         back_lon, back_lat, back_z = transform(GAUSSSB_PROJ, WGS84_PROJ, GB_x, 
GB_y, 0)
     assert_almost_equal(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/test/test_proj.py 
new/pyproj-3.6.1/test/test_proj.py
--- old/pyproj-3.6.0/test/test_proj.py  2023-06-12 15:27:32.000000000 +0200
+++ new/pyproj-3.6.1/test/test_proj.py  2023-09-21 03:30:44.000000000 +0200
@@ -5,7 +5,7 @@
 import unittest
 from unittest.mock import patch
 
-import numpy as np
+import numpy
 import pytest
 from numpy.testing import assert_almost_equal
 
@@ -441,11 +441,11 @@
 @pytest.mark.parametrize("radians", [False, True])
 def test_get_factors__2d_input(radians):
     transformer = Proj(3857)
-    longitude = np.array([[0, 1], [2, 3]])
-    latitude = np.array([[1, 2], [3, 4]])
+    longitude = numpy.array([[0, 1], [2, 3]])
+    latitude = numpy.array([[1, 2], [3, 4]])
     if radians:
-        longitude = np.radians(longitude)
-        latitude = np.radians(latitude)
+        longitude = numpy.radians(longitude)
+        latitude = numpy.radians(latitude)
     factors = transformer.get_factors(
         longitude=longitude, latitude=latitude, radians=radians
     )
@@ -497,22 +497,36 @@
 def test_get_factors__nan_inf():
     transformer = Proj(3857)
     factors = transformer.get_factors(
-        longitude=[0, np.nan, np.inf, 0], latitude=[np.nan, 2, 2, np.inf]
+        longitude=[0, numpy.nan, numpy.inf, 0], latitude=[numpy.nan, 2, 2, 
numpy.inf]
     )
-    assert_almost_equal(factors.meridional_scale, [np.inf, np.inf, np.inf, 
np.inf])
-    assert_almost_equal(factors.parallel_scale, [np.inf, np.inf, np.inf, 
np.inf])
-    assert_almost_equal(factors.areal_scale, [np.inf, np.inf, np.inf, np.inf])
-    assert_almost_equal(factors.angular_distortion, [np.inf, np.inf, np.inf, 
np.inf])
-    assert_almost_equal(
-        factors.meridian_parallel_angle, [np.inf, np.inf, np.inf, np.inf]
-    )
-    assert_almost_equal(factors.meridian_convergence, [np.inf, np.inf, np.inf, 
np.inf])
-    assert_almost_equal(factors.tissot_semimajor, [np.inf, np.inf, np.inf, 
np.inf])
-    assert_almost_equal(factors.tissot_semiminor, [np.inf, np.inf, np.inf, 
np.inf])
-    assert_almost_equal(factors.dx_dlam, [np.inf, np.inf, np.inf, np.inf])
-    assert_almost_equal(factors.dx_dphi, [np.inf, np.inf, np.inf, np.inf])
-    assert_almost_equal(factors.dy_dlam, [np.inf, np.inf, np.inf, np.inf])
-    assert_almost_equal(factors.dy_dphi, [np.inf, np.inf, np.inf, np.inf])
+    assert_almost_equal(
+        factors.meridional_scale, [numpy.inf, numpy.inf, numpy.inf, numpy.inf]
+    )
+    assert_almost_equal(
+        factors.parallel_scale, [numpy.inf, numpy.inf, numpy.inf, numpy.inf]
+    )
+    assert_almost_equal(
+        factors.areal_scale, [numpy.inf, numpy.inf, numpy.inf, numpy.inf]
+    )
+    assert_almost_equal(
+        factors.angular_distortion, [numpy.inf, numpy.inf, numpy.inf, 
numpy.inf]
+    )
+    assert_almost_equal(
+        factors.meridian_parallel_angle, [numpy.inf, numpy.inf, numpy.inf, 
numpy.inf]
+    )
+    assert_almost_equal(
+        factors.meridian_convergence, [numpy.inf, numpy.inf, numpy.inf, 
numpy.inf]
+    )
+    assert_almost_equal(
+        factors.tissot_semimajor, [numpy.inf, numpy.inf, numpy.inf, numpy.inf]
+    )
+    assert_almost_equal(
+        factors.tissot_semiminor, [numpy.inf, numpy.inf, numpy.inf, numpy.inf]
+    )
+    assert_almost_equal(factors.dx_dlam, [numpy.inf, numpy.inf, numpy.inf, 
numpy.inf])
+    assert_almost_equal(factors.dx_dphi, [numpy.inf, numpy.inf, numpy.inf, 
numpy.inf])
+    assert_almost_equal(factors.dy_dlam, [numpy.inf, numpy.inf, numpy.inf, 
numpy.inf])
+    assert_almost_equal(factors.dy_dphi, [numpy.inf, numpy.inf, numpy.inf, 
numpy.inf])
 
 
 def test_get_factors__errcheck():
@@ -523,7 +537,7 @@
 
 def test_numpy_bool_kwarg_false():
     # Issue 564
-    south = np.array(50) < 0
+    south = numpy.array(50) < 0
     proj = Proj(
         proj="utm", zone=32, ellipsis="WGS84", datum="WGS84", units="m", 
south=south
     )
@@ -532,7 +546,7 @@
 
 def test_numpy_bool_kwarg_true():
     # Issue 564
-    south = np.array(50) > 0
+    south = numpy.array(50) > 0
     proj = Proj(
         proj="utm", zone=32, ellipsis="WGS84", datum="WGS84", units="m", 
south=south
     )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/test/test_transformer.py 
new/pyproj-3.6.1/test/test_transformer.py
--- old/pyproj-3.6.0/test/test_transformer.py   2023-06-12 15:27:32.000000000 
+0200
+++ new/pyproj-3.6.1/test/test_transformer.py   2023-09-21 03:30:44.000000000 
+0200
@@ -9,7 +9,7 @@
 from pathlib import Path
 from unittest.mock import call, patch
 
-import numpy as np
+import numpy
 import pytest
 from numpy.testing import assert_almost_equal, assert_array_equal
 
@@ -22,6 +22,7 @@
 from test.conftest import (
     PROJ_GTE_91,
     PROJ_GTE_92,
+    PROJ_GTE_93,
     grids_available,
     proj_env,
     proj_network_env,
@@ -64,8 +65,8 @@
         xx, yy = pyproj.transform(
             p1, p2, (-180, -180, 180, 180, -180), (-90, 90, 90, -90, -90)
         )
-    assert np.all(np.isinf(xx))
-    assert np.all(np.isinf(yy))
+    assert numpy.all(numpy.isinf(xx))
+    assert numpy.all(numpy.isinf(yy))
     with pytest.warns(FutureWarning), pytest.raises(ProjError):
         pyproj.transform(
             p1, p2, (-180, -180, 180, 180, -180), (-90, 90, 90, -90, -90), 
errcheck=True
@@ -412,7 +413,7 @@
         )
 
 
-@pytest.mark.parametrize("empty_array", [(), [], np.array([])])
+@pytest.mark.parametrize("empty_array", [(), [], numpy.array([])])
 def test_transform_empty_array_xy(empty_array):
     transformer = Transformer.from_crs(2193, 4326)
     assert_array_equal(
@@ -420,7 +421,7 @@
     )
 
 
-@pytest.mark.parametrize("empty_array", [(), [], np.array([])])
+@pytest.mark.parametrize("empty_array", [(), [], numpy.array([])])
 def test_transform_empty_array_xyzt(empty_array):
     transformer = Transformer.from_pipeline("+init=ITRF2008:ITRF2000")
     assert_array_equal(
@@ -540,7 +541,7 @@
             "Description: unavailable until proj_trans is called\n"
             "Area of Use:\n- undefined"
         )
-    elif PROJ_GTE_92:
+    elif PROJ_GTE_92 and not PROJ_GTE_93:
         assert trans_repr == (
             "<Unknown Transformer: noop>\n"
             "Description: Transformation from EGM2008 height to WGS 84 "
@@ -555,7 +556,7 @@
             "(ballpark vertical transformation, without ellipsoid height "
             "to vertical height correction)\n"
             "Area of Use:\n"
-            "- name: World\n"
+            f"- name: World{'.' if PROJ_GTE_93 else ''}\n"
             "- bounds: (-180.0, -90.0, 180.0, 90.0)"
         )
 
@@ -1205,7 +1206,7 @@
         "+proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 "
         "+a=6370997 +b=6370997 +units=m +no_defs",
     )
-    assert np.allclose(
+    assert numpy.allclose(
         transformer.transform_bounds(40, -120, 64, -80, densify_pts=density),
         expected,
     )
@@ -1222,7 +1223,15 @@
     "input_bounds, radians",
     [
         ((-120, 40, -80, 64), False),
-        ((np.radians(-120), np.radians(40), np.radians(-80), np.radians(64)), 
True),
+        (
+            (
+                numpy.radians(-120),
+                numpy.radians(40),
+                numpy.radians(-80),
+                numpy.radians(64),
+            ),
+            True,
+        ),
     ],
 )
 def test_transform_bounds_densify__xy(density, expected, input_bounds, 
radians):
@@ -1232,7 +1241,7 @@
         "+a=6370997 +b=6370997 +units=m +no_defs",
         always_xy=True,
     )
-    assert np.allclose(
+    assert numpy.allclose(
         transformer.transform_bounds(
             *input_bounds, densify_pts=density, radians=radians
         ),
@@ -1459,8 +1468,8 @@
 
 @pytest.mark.parametrize("inplace", [True, False])
 def test_transform__fortran_order(inplace):
-    lons, lats = np.arange(-180, 180, 20), np.arange(-90, 90, 10)
-    lats, lons = np.meshgrid(lats, lons)
+    lons, lats = numpy.arange(-180, 180, 20), numpy.arange(-90, 90, 10)
+    lats, lons = numpy.meshgrid(lats, lons)
     f_lons, f_lats = lons.copy(order="F"), lats.copy(order="F")
     transformer = Transformer.from_crs(
         "EPSG:4326",
@@ -1519,10 +1528,10 @@
 
 def test_4d_transform__inplace__numpy():
     transformer = Transformer.from_crs(7789, 8401)
-    xarr = np.array([3496737.2679], dtype=np.float64)
-    yarr = np.array([743254.4507], dtype=np.float64)
-    zarr = np.array([5264462.9620], dtype=np.float64)
-    tarr = np.array([2019.0], dtype=np.float64)
+    xarr = numpy.array([3496737.2679], dtype=numpy.float64)
+    yarr = numpy.array([743254.4507], dtype=numpy.float64)
+    zarr = numpy.array([5264462.9620], dtype=numpy.float64)
+    tarr = numpy.array([2019.0], dtype=numpy.float64)
     t_xarr, t_yarr, t_zarr, t_tarr = transformer.transform(
         xx=xarr, yy=yarr, zz=zarr, tt=tarr, inplace=True
     )
@@ -1538,10 +1547,10 @@
 
 def test_4d_transform__inplace__numpy__int():
     transformer = Transformer.from_crs(7789, 8401)
-    xarr = np.array([3496737], dtype=np.int32)
-    yarr = np.array([743254], dtype=np.int32)
-    zarr = np.array([5264462], dtype=np.int32)
-    tarr = np.array([2019], dtype=np.int32)
+    xarr = numpy.array([3496737], dtype=numpy.int32)
+    yarr = numpy.array([743254], dtype=numpy.int32)
+    zarr = numpy.array([5264462], dtype=numpy.int32)
+    tarr = numpy.array([2019], dtype=numpy.int32)
     t_xarr, t_yarr, t_zarr, t_tarr = transformer.transform(
         xx=xarr, yy=yarr, zz=zarr, tt=tarr, inplace=True
     )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproj-3.6.0/test/test_utils.py 
new/pyproj-3.6.1/test/test_utils.py
--- old/pyproj-3.6.0/test/test_utils.py 2023-06-12 15:27:32.000000000 +0200
+++ new/pyproj-3.6.1/test/test_utils.py 2023-09-21 03:30:44.000000000 +0200
@@ -2,8 +2,6 @@
 
 import numpy
 import pytest
-from pandas import Series
-from xarray import DataArray
 
 from pyproj.utils import DataType, _copytobuffer, _copytobuffer_return_scalar
 
@@ -22,7 +20,6 @@
     "in_data, data_type",
     [
         (numpy.array(1), DataType.FLOAT),
-        (DataArray(numpy.array(1)), DataType.FLOAT),
         (1, DataType.FLOAT),
         ([1], DataType.LIST),
         ((1,), DataType.TUPLE),
@@ -32,10 +29,23 @@
     assert _copytobuffer(in_data) == (array("d", [1]), data_type)
 
 
-@pytest.mark.parametrize(
-    "in_arr", [numpy.array([1]), DataArray(numpy.array([1])), 
Series(numpy.array([1]))]
-)
-def test__copytobuffer__numpy_array(in_arr):
+def test__copytobuffer__xarray_scalar():
+    xarray = pytest.importorskip("xarray")
+    assert _copytobuffer(xarray.DataArray(numpy.array(1))) == (
+        array("d", [1]),
+        DataType.FLOAT,
+    )
+
+
+@pytest.mark.parametrize("arr_type", ["numpy", "xarray", "pandas"])
+def test__copytobuffer__array(arr_type):
+    in_arr = numpy.array([1])
+    if arr_type == "xarray":
+        xarray = pytest.importorskip("xarray")
+        in_arr = xarray.DataArray(in_arr)
+    elif arr_type == "pandas":
+        pandas = pytest.importorskip("pandas")
+        in_arr = pandas.Series(in_arr)
     assert _copytobuffer(in_arr) == (
         in_arr.astype("d").__array__(),
         DataType.ARRAY,

Reply via email to