These changes are valid only for Py3.6+ and will remove bench CLI
support for Python 3.5 and lesser.
* Converted to f-strings using flynt
* Manual conversion of failed cases
* Simplification of logic
If an unshallow clone has to be updated, the only way to update it
without a reset will require an unshallow. This is because there may be
uncommitted or committed changes in any of the apps, although unfavoured
should be handled safely. The only way to update such repos is via the
user configured settings..or a ff only merge.
Biggest bottleneck is in the validation stage which checks if the app is
installed on any existing sites on the bench. instead of triggering
multiple list-apps for each sites, do one for all.
# [5.4.0](https://github.com/frappe/bench/compare/v5.3.0...v5.4.0) (2021-04-27)
### Bug Fixes
* add declarative config support for bench ([186ba28](186ba280f1))
* change TEST_PYPI to PYPI ([4211f5d](4211f5d750))
* create bench folder in user directory ([5c5d2b5](5c5d2b57df))
* Don't break update if no sites exist on patching sites stage ([778fe6c](778fe6cb0b))
* fail2ban help message ([fec8921](fec8921214))
* Invoke pip via python ([b0ccb6e](b0ccb6efbe))
* nginx proxy buffer ([7f9bed4](7f9bed4c8e))
* only fetch current branch ([895c403](895c403278))
* only fetch what is necessary, simplify & improve grepability ([82173c1](82173c1d42))
* only get the specific branch for version check ([0ff8ddd](0ff8dddef9))
* Remove set-default-site from CLI ([ed3f2d2](ed3f2d28fb))
* Return repo_name if app_name doesn't exist ([aa1a1b9](aa1a1b9a71))
* serious bug capable of deleting apps path ([a1db48b](a1db48b57e))
* Update documentation for user directory ([294b399](294b399942))
* Upgrade pip first ([#1120](https://github.com/frappe/bench/issues/1120)) ([17ef5da](17ef5da5ce))
* use correct path for compiling py files ([b3a0757](b3a0757e38))
### Features
* Keep repos shallow if --reset is specified and shallow_clone is set ([66240e1](66240e1f8d))
* skip redis config during supervisor setup ([5cf1363](5cf1363481))
### Performance Improvements
* Remove ast from the import tree ([104efd3](104efd349b))
* Remove bench.config.common_site_config from the import tree ([c5d2fb9](c5d2fb9255))
* Remove bench.config.letsencrypt from the import tree ([cab2d44](cab2d44df5))
* Remove bench.config.nginx from the import tree ([36e48c7](36e48c7dd7))
* Remove crontab from the import tree ([e12717d](e12717d63a))
* Remove crontab from the import tree ([2a4377a](2a4377ac6f))
* Remove git from the import tree ([df773d4](df773d4f9f))
* Remove Jinja and PackageLoader from the import tree ([ad90d94](ad90d9485f))
* Remove multiprocessing from the import tree ([8527b10](8527b106c3))
* Remove multiprocessing from the import tree ([ad37665](ad37665e8b))
* Remove requests from the import tree ([cc92584](cc92584927))
* Remove semantic_version from the import tree ([2df0bf7](2df0bf726d))
* Remove shutil from the import tree ([07ecaa1](07ecaa1f77))
* Remove six.moves.reload_module from the import tree ([5d90346](5d90346660))
* Remove six.moves.urllib from the import tree ([6706b23](6706b230da))
* Remove six.moves.urllib from the import tree ([5525548](5525548ced))
* Remove siz.moves.configparser from the import tree ([6c0e1a3](6c0e1a359e))
Changed from execv to execve with empty env dict because bench commands on macOS 10.14.6 PY3.9.0a4 fails with "Error while finding module specification for 'frappe.utils.bench_helper' (ModuleNotFoundError: No module named 'frappe')"
This error has come up in the past too. I'm now suspecting it has
something to do with the current process passing on it's environment
variables to the process that's going to replace it, which causes these
issues.
Note that direct execution of the commands without the bench wrapper
worked fine although via bench failed with the specified error
Due to "WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip. Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue. To avoid this problem you can invoke Python with '-m pip' instead of running pip directly."