<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How to check if an extension has already been checked out? in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/how-to-check-if-an-extension-has-already-been/m-p/550222#M43024</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Good catch Luke&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 14 Dec 2015 02:53:18 GMT</pubDate>
    <dc:creator>DanPatterson_Retired</dc:creator>
    <dc:date>2015-12-14T02:53:18Z</dc:date>
    <item>
      <title>How to check if an extension has already been checked out?</title>
      <link>https://community.esri.com/t5/python-questions/how-to-check-if-an-extension-has-already-been/m-p/550220#M43022</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm writing a python add-in that uses a Spatial Analyst function and hence requires the Spatial Analyst extension to be enabled.&amp;nbsp; I would like to be able to check out the extension only if it hasn't already been manually checked out by the user (i.e. via the "Customize-&amp;gt;Extensions" menu).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My code can check out the extension and then check it back in easily enough. However, this causes an issue if a user has already checked the extension out manually via the "Customize-&amp;gt;Extensions" menu as they will suddenly start getting the &lt;SPAN style="color: #808080; font-style: italic;"&gt;"ERROR 000824: The tool is not licensed" &lt;/SPAN&gt;error when trying to use other Spatial Analyst tools/functions (as my add-in has checked the extension back in).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A further complication that will confuse the user is that when they open the&amp;nbsp; "Customize-&amp;gt;Extensions" menu to check if the SA extension is checked out, the tick will still be in&amp;nbsp; the extensions check box as checking the extension in via code does not update the GUI. E.g see screenshot below&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG __jive_id="60044" alt="checkedin.png" class="jive-image image-1" src="https://community.esri.com/legacyfs/online/60044_checkedin.png" style="height: auto;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There doesn't seem to be any way of testing whether the extension is already checked out out, i.e the return values for &lt;SPAN style="font-family: courier new,courier; font-size: 10pt;"&gt;arcpy.CheckExtension&lt;/SPAN&gt;&lt;SPAN&gt; are only &lt;SPAN style="font-family: courier new,courier;"&gt;Available&lt;/SPAN&gt;,&lt;/SPAN&gt; &lt;SPAN&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;Unavailable&lt;/SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;NotLicensed&lt;/SPAN&gt; or &lt;/SPAN&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;Failed.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My work around is to wrap the use of the spatial analyst tool in a &lt;SPAN style="font-family: courier new,courier;"&gt;try:except:&lt;/SPAN&gt; clause (see below), but it's ugly and is not useful for larger scripts that use more SA tools (SA objects/functions especially) as I have to code the syntax of the tools twice.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;try:
&amp;nbsp;&amp;nbsp;&amp;nbsp; result = Sample(rasters,features,table)
except ExecuteError as e:
&amp;nbsp;&amp;nbsp;&amp;nbsp; if 'ERROR 000824' in e.message: # "ERROR 000824: The tool is not licensed"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if arcpy.CheckExtension('Spatial') == 'Available' and arcpy.CheckOutExtension('Spatial')=='CheckedOut':
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = Sample(rasters,features,table)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CheckInExtension('Spatial')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pythonaddins.MessageBox('Spatial Analyst license not available', 'Error', 0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:raise&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt;"&gt;&lt;STRONG&gt;Q: Is there a better way of only checking an extension out if it is not already checked out...?&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 23:48:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/how-to-check-if-an-extension-has-already-been/m-p/550220#M43022</guid>
      <dc:creator>Luke_Pinner</dc:creator>
      <dc:date>2021-12-11T23:48:15Z</dc:date>
    </item>
    <item>
      <title>Re: How to check if an extension has already been checked out?</title>
      <link>https://community.esri.com/t5/python-questions/how-to-check-if-an-extension-has-already-been/m-p/550221#M43023</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;To wrap things up, there doesn't seem to be a way of doing this in arcpy (&lt;A href="http://ideas.arcgis.com/ideaView?id=087E0000000CwM5IAK" title="http://ideas.arcgis.com/ideaView?id=087E0000000CwM5IAK" rel="nofollow noopener noreferrer" target="_blank"&gt;ArcGIS Idea - Add 'AlreadyInitalized' to arcpy.CheckExtension function.&lt;/A&gt; ). So I use a try: except: clause in a context manager to do this now:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;class SAExtension(object):
&amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.name = 'Spatial'

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from arcpy.sa import Int
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Int(1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.checkedout = False
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.checkedout = True

&amp;nbsp;&amp;nbsp;&amp;nbsp; def __enter__(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if arcpy.CheckExtension(self.name) == "Available":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CheckOutExtension(self.name)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; raise ValueError("%s license isn't available" % self.name)

&amp;nbsp;&amp;nbsp;&amp;nbsp; def __exit__(self, *args):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if not self.checkedout:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CheckInExtension(self.name)


with SAExtension:
&amp;nbsp;&amp;nbsp;&amp;nbsp; #do some raster analysis&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 23:48:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/how-to-check-if-an-extension-has-already-been/m-p/550221#M43023</guid>
      <dc:creator>Luke_Pinner</dc:creator>
      <dc:date>2021-12-11T23:48:18Z</dc:date>
    </item>
    <item>
      <title>Re: How to check if an extension has already been checked out?</title>
      <link>https://community.esri.com/t5/python-questions/how-to-check-if-an-extension-has-already-been/m-p/550222#M43024</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Good catch Luke&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Dec 2015 02:53:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/how-to-check-if-an-extension-has-already-been/m-p/550222#M43024</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2015-12-14T02:53:18Z</dc:date>
    </item>
  </channel>
</rss>

