Change Log


  • WHL: Wheels contain PROJ version is 7.0.1

  • BUG: Allow *_name to be added in CRS.to_cf (issue #585)

  • BUG: Fix building prime meridian in (pull #588)

  • BUG: Fix check for numpy bool True kwarg (pull #590)

  • DOC: Update pyproj.Proj docstrings for clarity (issue #584)

  • Added pyproj.__proj_version__

  • BUG: Fix pyproj.proj.Proj.get_factors() (issue #600)

  • BUG: fix unequal (!=) with non-CRS type (pull #596)


  • ENH: Added pyproj.proj.Proj.get_factors() (issue #503)

  • ENH: Added type hints (issue #369)

  • BUG: Don’t use CRS classes for defaults in CRS child class init signatures (issue #554)

  • ENH: Updated to pull all relevant axis information from CRS (issue #557)

  • ENH: Added pyproj.transformer.Transform.__eq__() (issue #559)

  • ENH: Added (issue #561)

  • BUG: Modify CRS dict test to accomodate numpy bool types. (issue #564)

  • BUG: Fix pipeline transformations to match cct (issue #565)

  • BUG: Don’t silently ignore kwargs when projparams are specified (Proj & CRS) (issue #565)



  • Elevate +init= warning to FutureWarning (pull #486)

  • Add UserWarning to (pull #486)

  • BUG: Fix for 32-bit i686 plaforms (issue #481)

  • Return ‘inf’ in Proj instead of 1.e30 (pull #491)


  • WHL: Wheels contain PROJ version is 6.2.1 (issue #456)

  • WHL: Wheels for Linux x86_64 use manylinux2010 (pyproj4/pyproj-wheels/pull/18)

  • BUG: Fix setting lat_ts for mercator projection in and (issue #461)

  • BUG: latlon -> longlat in CRS.from_cf() for o_proj so behavior consistent in PROJ 6.2.0 and 6.2.1 (pull #472)

  • ENH: Add repr for and for pyproj.transformer.TransformerGroup (pull #464)


  • Minimum PROJ version is 6.2.0 (issue #411)

  • Removed global pyproj context (issue #418)

  • Added support for PROJ JSON in objects and pyproj.Transformer (pull #432)

  • Moved doctests code out of pyproj.__init__ (issue #417)

  • Added version information to python -m pyproj (pull #429)

  • Added scope & remarks to objects and pyproj.Transformer (issue #441)

  • Added operations to objects and pyproj.Transformer (issue #441)

  • Added pyproj.get_authorities() and pyproj.get_codes() (issue #440)

  • Release gil in core cython/PROJ code (issue #386)

  • BUG: Added checks for unititialized objects to prevent core dumping (issue #433)

  • BUG: Added fix for get_transform_crs when checking type (pull #439)

  • DOC: Build docs with python3 (pull #428)


  • Added cleanup for internal PROJ errors (issue #413)

  • Delay checking for pyproj data directory until importing pyproj (issue #415)

  • Address issue where PROJ core dumps on proj_create with +init= when global context does not have data directory set (issue #415 & issue #368)



  • Update wheels to PROJ 6.1.1

  • Add deprecation warning when using +init= syntax (pull #358)

  • Added (pull #359)

  • Fixed case in with returning None (pull #359)

  • Keep no_defs in input PROJ string as it does not hurt/help anything in current code (pull #359)

  • Made public properties on C classes readonly (pull #359)

  • Update data dir exception handling to prevent ignoring errors (pull #361)

  • export transverse mercator parameters for UTM zones (pull #362)


  • Added pyproj.show_versions() (issue #334)

  • Added fix for whitepace around ‘=’ in PROJ strings (issue #345)

  • Update version check in (issue #323)

  • Add “stable” doc site pointing to latest release (issue #347, pull #348)

  • Depreate Proj.proj_version (pull #337)

  • Test fixes (pull #333, pull #335)



  • Added support for time transformations (issue #208)

  • Fixed projection equivalence testing for transformations (pull #231).

  • Switch to pytest for testing (pull #230)

  • Various testing fixes (pull #223, #222, #221, #220)

  • Convert PROJ error messages from bytes to strings (pull #219)

  • Fix data dir path separator to be (;) for windows and (:) for linux (pull #234)


  • Updated to use the CRS definition for Proj instances in transforms (issue #207)

  • Add option to skip tranformation operation if input and output projections are equivalent and always skip if the input and output projections are exact (issue #128)

  • Update method for checking PROJ version (pull #211)

  • Add internal proj error log messages to exceptions (pull #215)




  • add filter for boolean values in dict2string so “no_rot=True” works (issue #183).

  • make sure .pxd files included in source tarball.

  • add radians flag back in for transform/itransform (issue #185).


  • Ensure data path set properly for TransProj (pull request #179, addressed issue #176).


  • Update to PROJ version 6.0.0 & removed support for older PROJ versions.

  • Added pyproj.CRS class.

  • Updated pyproj.Proj & pyproj.transform to accept any input from CRS.from_user_input.

  • Removed internal PROJ source code.

  • Changed default for preserve_units to be True in pyproj.Proj class initialization.

  • Modified logic for searching for the PROJ data directory to not conflict with older versions of PROJ.

  • Added pyproject.toml.


  • fix segfault when inverse projection not defined (issue #43, pull request #44).

  • supports python 3.7

  • fix for issue #42 (compilation error with microsoft visual studio).


  • update proj4 source to latest github master (commit 953cc00fd87425395cabe37641cda905c4b587c1).

  • port of basemap fix for input arrays in fortran order

  • restore inverse Hammer patch that was lost when proj4 source code was updated.

1.9.4 (git tag v1.9.4rel)

  • migrate to github from googlecode.

  • update proj4 source code from svn r2595 (version 4.9.0RC2).

  • include runtime_library_dirs in

  • added to_latlong method (issue 51).

  • fix back azimuth when lon1 and lon2 are identical.

1.9.3 (svn revision 327)

  • Geod now uses C code adapted from geographiclib now included in proj4 source, instead of pure python code directly from geographiclib.

  • make radians=True work with Geod.npts (issue 47).

  • allow PROJ_DIR env var to control location of proj data (issue 40).

1.9.2 (svn revision 301)

  • updated proj4 src to 4.8.0 - includes two new map projections (natearth and isea).

1.9.1 (svn revision 285)

  • restore compatibility with python 2.4/2.5, which was broken by the addition of the geographiclib geodesic module (issue 36).

1.9.0 (svn revision 282)

  • use pure python geographiclib for geodesic computation codes instead of proj4.

  • don’t use global variable pj_errno for return codes, use pj_ctx_get_errno instead.

  • use new projCtx structure for thread safety in proj lib.

  • update C source and data from proj4 svn (r2140).

  • add pj_list and pj_ellps module level variables (a dict mapping short names to longer descriptions, e.g. pyproj.pj_list[‘aea’] = ‘Albers Equal Area’).

1.8.9 (svn revision 222)

  • Python 3 now supported.

  • allow ‘EPSG’ init (as well as ‘epsg’). This only worked on case-insensitive filesystems previously. Fixes issue 6.

  • added inverse to Hammer projection.

  • updated proj.4/src/pj_mutex.c from proj4 svn to fix a threading issue on windows (issue 25). Windows binary installers updated (version 1.8.8-1), courtesy Christoph Gohlke.

  • if inputs are NaNs, return huge number (1.e30).

1.8.8 (svn revision 196)

  • add extra datum shift files, added test/ (fixes issue 22). datum shifts now work correctly in transform function.

1.8.7 (svn revision 175)

  • reverted pj_init.c to old version (from proj4 4.6.1) because version in 4.7.0 includes caching code that can cause segfaults in pyproj (issue 19).

  • added ‘preserve_units’ keyword to Proj.__init__ to suppress conversion to meters.

1.8.6 (svn revision 169)

  • now works with ms vs2008, vs2003 (fixed missing isnan).

  • updated to proj 4.7.0 (fixes a problem coexisting with pyqt).

  • allow Geod instance to be initialized using a proj4 string

1.8.5 (svn revision 155)

  • allow Proj instance to be initialized using a proj4 string (instead of just a dict or kwargs).

1.8.4 (svn revision 151)

  • updated proj4 sources to version 4.6.0

1.8.3 (svn revision 146)

  • fixed bug in Geod class that caused erroneous error message “undefined inverse geodesic (may be an antipodal point)”.

  • fix __reduce__ method of Geod class so instances can be pickled.

  • make sure points outside projection limb are set to 1.e30 on inverse transform (if errcheck=False).

  • fixed small bug.

  • generate C source with Cython (pycompat.h no longer needed).


  • added ‘srs’ (spatial reference system) instance variable to Proj.

  • instead of returning HUGE_VAL (usually ‘inf’) when projection not defined and errcheck=False, return 1.e30.

  • added Geod class for geodesic (i.e. Great Circle) computations. Includes doctests (which can be run with pyproj.test()).

  • proj.4 source code now included, thus removing proj.4 lib dependency. Version 4.5.0 is included, with a patch to create an API for geodesic computations.

  • python 2.4 compatibility patch (suggested by Andrew Straw) from M. v. Loewis:


  • if given tuples, returns tuples (instead of lists).

  • test for numpy arrays first.

  • Fixed error in docstring example.

  • README.html contains html docstrings generated by pydoc.

  • Renamed to, created a new python module called Moved as code as possible from to

  • docstring examples now executed by doctest when ‘pyproj.test()’ is run.

  • added test to _pyproj.c which defines Py_ssize_t for python < 2.5. This is necessary when pyrex 0.9.5 is used.


  • Better error handling Proj.__init__.

  • Added optional keyword ‘errcheck’ to __call__ method.

  • If True, an exception is raised if the transformation is invalid.


  • python 2.5 support.