Stock-Based Compensation - Narrative (Details) - USD ($)
$ in Thousands
3 Months Ended
Oct. 31, 2020
Oct. 31, 2019
Jul. 31, 2020
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Outstanding unvested restricted stock shares (in shares) 763,315   411,715
Outstanding options (in shares) 0   15,000
Total unrecognized stock-based compensation cost $ 36,996    
Remaining weighted average period for unrecognized compensation cost 21 months    
Deduction in income tax due to exercise of options and vesting of restricted stock $ 1,698 $ 2,022  
Reduction in income tax expense over the equity awards' vesting period 2,778 2,581  
Excess tax expense (benefit) $ 1,080 $ 559  
2016 Plan      
Share-based Compensation Arrangement by Share-based Payment Award [Line Items]      
Outstanding unvested restricted stock shares (in shares) 763,315    
Outstanding options (in shares) 0    
Shares available under Plan (in shares) 51,760