* perf: Faster report exports to Excel
Try exporting report with 100K rows, most likely it fails or takes a really long time.
Root causes:
- visible_idx was a list, lookups are SLOW AF when lists grow to 100k+
- visible_idx check is not required when I am exporting entire report.
Test with 85,000 rows.
| | Before | After | Improvement |
| --- | --- | --- | --- |
| Export | 25.99 | 0.77 | ~33x faster |
* directly fetch columns from result file rather than storing it in db
* remove prepared report settings from system settings
* remove disable_prepared_report from report doctype
* removed ref_report_doctype
* changed title_field from ref_report_doctype to report_name (both are same)
* changed report_name field to link type
* changed autonaming to hash based
* added status in list view via document states
refactor: clean up code to py39+ supported syntax
- f-strings instead of format
- latest typing support instead of pre 3.9 TitleCase
- remove UTF-8 declarations.
- many more changes
Powered by https://github.com/asottile/pyupgrade/ + manual cleanups
* Revert "feat(minor): Implement __getitem__ in Base Document (#14855)"
This reverts commit 583a7ef23923d362c85beeabe57703c2d5b12a65.
(cherry picked from commit d165fb3d477e65f7a395118f69278f2cb5c7f4e5)
* fix: keyerror in auto email report
(cherry picked from commit aac20f5d159875a5f3c9b4a6d74beec390e617dd)
Co-authored-by: Ankush Menat <ankush@frappe.io>
The license.txt file has been replaced with LICENSE for quite a while
now. INAL but it didn't seem accurate to say "hey, checkout license.txt
although there's no such file". Apart from this, there were
inconsistencies in the headers altogether...this change brings
consistency.
* Remove six for PY2 compatability since our dependencies are not, PY2
is legacy.
* Removed usages of utils from future/past libraries since they are
deprecated. This includes 'from __future__ ...' and 'from past...'
statements.
* Removed compatibility imports for PY2, switched from six imports to
standard library imports.
* Removed utils code blocks that handle operations depending on PY2/3
versions.
* Removed 'from __future__ ...' lines from templates/code generators
* Used PY3 syntaxes in place of PY2 compatible blocks. eg: metaclass