Transcript of the Towel demo video (towel 1.949). The command took 3.4 seconds. $ cat accounts.py def register_user(form): user = dict(form) if not user.get("name"): raise ValueError("name is required") if len(user["name"]) < 2: raise ValueError("name is too short") return save(user) def register_admin(form): admin = dict(form, role="admin") if not admin.get("name"): raise ValueError("name is required") if len(admin["name"]) < 8: raise ValueError("name is too short") return save(admin) $ towel preview . --progress none Would apply 1 refactoring(s). Termination: fixed_point --- before/accounts.py +++ after/accounts.py @@ -1,16 +1,16 @@ +def __extracted_func_0(__param_0, __param_1): + if not __param_0.get("name"): + raise ValueError("name is required") + if len(__param_0["name"]) < __param_1: + raise ValueError("name is too short") + return save(__param_0) + + def register_user(form): user = dict(form) - if not user.get("name"): - raise ValueError("name is required") - if len(user["name"]) < 2: - raise ValueError("name is too short") - return save(user) + return __extracted_func_0(user, 2) def register_admin(form): admin = dict(form, role="admin") - if not admin.get("name"): - raise ValueError("name is required") - if len(admin["name"]) < 8: - raise ValueError("name is too short") - return save(admin) + return __extracted_func_0(admin, 8) Input files were not changed.