Hi all,
I'm using Arc Desktop 10.5 - Standard, and I've been running into an issue with a simple script that only exports a domain to an in_memory table, then outputs the domain as another in_memory table sorted on the code field. The problem is, the record order of the "sorted" dataset comes back seemingly randomized whenever I feed arcpy.Sort_management an in_memory input table.
For instance, this will return a random order result:
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">notWorking</SPAN><SPAN class="punctuation token">(</SPAN> inputWorkSpace<SPAN class="punctuation token">,</SPAN> domain<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
rawDomain <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>DomainToTable_management<SPAN class="punctuation token">(</SPAN>inputWorkSpace<SPAN class="punctuation token">,</SPAN> domain<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"in_memory/domain"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"code"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"description"</SPAN><SPAN class="punctuation token">)</SPAN>
sortedDomain <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Sort_management<SPAN class="punctuation token">(</SPAN> rawDomain<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"in_memory/sorted"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">"code"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"ASCENDING"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">with</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN> sortedDomain<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"*"</SPAN> <SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> row <SPAN class="keyword token">in</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"{} {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="string token">"""
Output on domain originally defined as:
C: Charlie
E: Echo
A: Alpha
D: Delta
B: Bravo
>>>
1 B
2 C
3 A
4 E
5 D
"""</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>Meanwhile, if I store the Sort_management's input in a gdb, it works just fine:
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">works</SPAN><SPAN class="punctuation token">(</SPAN> inputWorkSpace<SPAN class="punctuation token">,</SPAN> domain<SPAN class="punctuation token">,</SPAN> temporaryWorkSpace<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
rawDomain <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>DomainToTable_management<SPAN class="punctuation token">(</SPAN>inputWorkSpace<SPAN class="punctuation token">,</SPAN> domain<SPAN class="punctuation token">,</SPAN> temporaryWorkSpace <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\domain"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"code"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"description"</SPAN><SPAN class="punctuation token">)</SPAN>
sortedDomain <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Sort_management<SPAN class="punctuation token">(</SPAN> rawDomain<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"in_memory/sorted"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">"code"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"ASCENDING"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">with</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN> sortedDomain<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"*"</SPAN> <SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> row <SPAN class="keyword token">in</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"{} {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="string token">"""
Output on domain originally defined as:
C: Charlie
E: Echo
A: Alpha
D: Delta
B: Bravo
>>>
1 A
2 B
3 C
4 D
5 E
"""</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>I've attached a sample data set with a domain called "testDomain", but I've experienced this with every source (gdb/sde db) and domain I've tried.
While I have a work-around to get what I need done, I was wondering if there was a bug going on or if I'm missing something basic. Thanks in advance for any insight.