Skip to main content
`Ctrl`+`K`

# Future Compatibility

Early in the development of the Pro Toolkit, after upgrading the development workstations to ArcGIS Pro 3.3, it was discovered that Esri had removed the `wrapt` package form the `arcgispro-py3` environment. This was merely an inconvenience, as a workaround was not especially difficult to implement.

This led, however, to the realization that it is plausible that a future release of ArcGIS Pro may drop a dependency of `ng911ok` from the default environment. Further, upgrades to packages currently provided may introduce breaking changes that are incompatible with `ng911ok`.

## Known Future Issues

Recorded here are aspects of Toolkit code that may need to be changed with future versions of Toolkit dependencies. Target Version refers to the version of a package that was generally used for development at the time such code was written. Future Version refers to the version by which point the issue must be addressed. The major and minor components of the ArcPy version correspond to those of an ArcGIS Pro release (e.g., all ArcGIS Pro 3.3.x releases include ArcPy 3.3).

### Deprecation of `pandas.DataFrame.applymap`

Package | Target Version | Future Version
--- | --- | ---
ArcPy | 3.3 | ???
Pandas | 2.0.2 | 3.0

As of Pandas version 2.1.0, the method `pandas.DataFrame.applymap` is deprecated in favor of `pandas.DataFrame.map`. It is subject to removal come version 3.0. The method `pandas.DataFrame.map` was not introduced until Pandas 2.1.0, and is therefore not available in `arcgispro-py3` until ArcGIS Pro 3.5.

Once the Toolkit stops supporting versions of ArcGIS Pro below 3.5, all uses of `pandas.DataFrame.applymap` should be replaced with `pandas.DataFrame.map` to prevent issues in the future. If Pandas 2.0.2 and 3.0 must be supported at the same time, calls to the deprecated method could still be replaced, and code similar to the following could be added to `ng911ok`‘s `__init__.py` as a workaround:

    import pandas as pd
    if not hasattr(pd.DataFrame, "map"):
        type.__setattr__(pd.DataFrame, "map", pd.DataFrame.applymap)