From 99e2e6b7983d7780ec61d3421f64a1518c5d6bc5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 15 Apr 2023 13:44:51 +0000 Subject: [PATCH] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- docs/conf.py | 3 +- hooks/post_gen_project.py | 72 +++++++--------------------------- hooks/pre_gen_project.py | 40 +++++-------------- scripts/create_django_issue.py | 42 +++++--------------- scripts/update_changelog.py | 8 +--- scripts/update_contributors.py | 18 ++------- setup.py | 5 +-- tests/test_hooks.py | 4 +- 8 files changed, 43 insertions(+), 149 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index b1a97750a..22e73e5db 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -239,8 +239,7 @@ texinfo_documents = [ "Cookiecutter Django documentation", "Daniel Roy Greenfeld", "Cookiecutter Django", - "A Cookiecutter template for creating production-ready " - "Django projects quickly.", + "A Cookiecutter template for creating production-ready " "Django projects quickly.", "Miscellaneous", ) ] diff --git a/hooks/post_gen_project.py b/hooks/post_gen_project.py index 22cda531d..b79985a82 100644 --- a/hooks/post_gen_project.py +++ b/hooks/post_gen_project.py @@ -92,10 +92,7 @@ def remove_utility_files(): def remove_heroku_files(): file_names = ["Procfile", "runtime.txt", "requirements.txt"] for file_name in file_names: - if ( - file_name == "requirements.txt" - and "{{ cookiecutter.ci_tool }}".lower() == "travis" - ): + if file_name == "requirements.txt" and "{{ cookiecutter.ci_tool }}".lower() == "travis": # don't remove the file if we are using travisci but not using heroku continue os.remove(file_name) @@ -197,11 +194,7 @@ def handle_js_runner(choice, use_docker, use_async): "gulp-uglify-es", ] if not use_docker: - dev_django_cmd = ( - "uvicorn config.asgi:application --reload" - if use_async - else "python manage.py runserver" - ) + dev_django_cmd = "uvicorn config.asgi:application --reload" if use_async else "python manage.py runserver" scripts.update( { "dev": "concurrently npm:dev:*", @@ -219,9 +212,7 @@ def remove_celery_files(): file_names = [ os.path.join("config", "celery_app.py"), os.path.join("{{ cookiecutter.project_slug }}", "users", "tasks.py"), - os.path.join( - "{{ cookiecutter.project_slug }}", "users", "tests", "test_tasks.py" - ), + os.path.join("{{ cookiecutter.project_slug }}", "users", "tests", "test_tasks.py"), ] for file_name in file_names: os.remove(file_name) @@ -248,9 +239,7 @@ def remove_dotgithub_folder(): shutil.rmtree(".github") -def generate_random_string( - length, using_digits=False, using_ascii_letters=False, using_punctuation=False -): +def generate_random_string(length, using_digits=False, using_ascii_letters=False, using_punctuation=False): """ Example: opting out for 50 symbol-long, [a-z][A-Z][0-9] string @@ -344,9 +333,7 @@ def set_postgres_password(file_path, value=None): def set_celery_flower_user(file_path, value): - celery_flower_user = set_flag( - file_path, "!!!SET CELERY_FLOWER_USER!!!", value=value - ) + celery_flower_user = set_flag(file_path, "!!!SET CELERY_FLOWER_USER!!!", value=value) return celery_flower_user @@ -378,22 +365,14 @@ def set_flags_in_envs(postgres_user, celery_flower_user, debug=False): set_django_admin_url(production_django_envs_path) set_postgres_user(local_postgres_envs_path, value=postgres_user) - set_postgres_password( - local_postgres_envs_path, value=DEBUG_VALUE if debug else None - ) + set_postgres_password(local_postgres_envs_path, value=DEBUG_VALUE if debug else None) set_postgres_user(production_postgres_envs_path, value=postgres_user) - set_postgres_password( - production_postgres_envs_path, value=DEBUG_VALUE if debug else None - ) + set_postgres_password(production_postgres_envs_path, value=DEBUG_VALUE if debug else None) set_celery_flower_user(local_django_envs_path, value=celery_flower_user) - set_celery_flower_password( - local_django_envs_path, value=DEBUG_VALUE if debug else None - ) + set_celery_flower_password(local_django_envs_path, value=DEBUG_VALUE if debug else None) set_celery_flower_user(production_django_envs_path, value=celery_flower_user) - set_celery_flower_password( - production_django_envs_path, value=DEBUG_VALUE if debug else None - ) + set_celery_flower_password(production_django_envs_path, value=DEBUG_VALUE if debug else None) def set_flags_in_settings_files(): @@ -423,21 +402,9 @@ def remove_aws_dockerfile(): def remove_drf_starter_files(): os.remove(os.path.join("config", "api_router.py")) shutil.rmtree(os.path.join("{{cookiecutter.project_slug}}", "users", "api")) - os.remove( - os.path.join( - "{{cookiecutter.project_slug}}", "users", "tests", "test_drf_urls.py" - ) - ) - os.remove( - os.path.join( - "{{cookiecutter.project_slug}}", "users", "tests", "test_drf_views.py" - ) - ) - os.remove( - os.path.join( - "{{cookiecutter.project_slug}}", "users", "tests", "test_swagger.py" - ) - ) + os.remove(os.path.join("{{cookiecutter.project_slug}}", "users", "tests", "test_drf_urls.py")) + os.remove(os.path.join("{{cookiecutter.project_slug}}", "users", "tests", "test_drf_views.py")) + os.remove(os.path.join("{{cookiecutter.project_slug}}", "users", "tests", "test_swagger.py")) def remove_storages_module(): @@ -470,10 +437,7 @@ def main(): else: remove_docker_files() - if ( - "{{ cookiecutter.use_docker }}".lower() == "y" - and "{{ cookiecutter.cloud_provider}}" != "AWS" - ): + if "{{ cookiecutter.use_docker }}".lower() == "y" and "{{ cookiecutter.cloud_provider}}" != "AWS": remove_aws_dockerfile() if "{{ cookiecutter.use_heroku }}".lower() == "n": @@ -481,10 +445,7 @@ def main(): elif "{{ cookiecutter.frontend_pipeline }}" != "Django Compressor": remove_heroku_build_hooks() - if ( - "{{ cookiecutter.use_docker }}".lower() == "n" - and "{{ cookiecutter.use_heroku }}".lower() == "n" - ): + if "{{ cookiecutter.use_docker }}".lower() == "n" and "{{ cookiecutter.use_heroku }}".lower() == "n": if "{{ cookiecutter.keep_local_envs_in_vcs }}".lower() == "y": print( INFO + ".env(s) are only utilized when Docker Compose and/or " @@ -512,10 +473,7 @@ def main(): use_async=("{{ cookiecutter.use_async }}".lower() == "y"), ) - if ( - "{{ cookiecutter.cloud_provider }}" == "None" - and "{{ cookiecutter.use_docker }}".lower() == "n" - ): + if "{{ cookiecutter.cloud_provider }}" == "None" and "{{ cookiecutter.use_docker }}".lower() == "n": print( WARNING + "You chose to not use any cloud providers nor Docker, " "media files won't be served in production." + TERMINATOR diff --git a/hooks/pre_gen_project.py b/hooks/pre_gen_project.py index d067954db..33dc2e834 100644 --- a/hooks/pre_gen_project.py +++ b/hooks/pre_gen_project.py @@ -27,17 +27,11 @@ SUCCESS = "\x1b[1;32m [SUCCESS]: " project_slug = "{{ cookiecutter.project_slug }}" if hasattr(project_slug, "isidentifier"): - assert ( - project_slug.isidentifier() - ), "'{}' project slug is not a valid Python identifier.".format(project_slug) + assert project_slug.isidentifier(), "'{}' project slug is not a valid Python identifier.".format(project_slug) -assert ( - project_slug == project_slug.lower() -), "'{}' project slug should be all lowercase".format(project_slug) +assert project_slug == project_slug.lower(), "'{}' project slug should be all lowercase".format(project_slug) -assert ( - "\\" not in "{{ cookiecutter.author_name }}" -), "Don't include backslashes in author name." +assert "\\" not in "{{ cookiecutter.author_name }}", "Don't include backslashes in author name." if "{{ cookiecutter.use_docker }}".lower() == "n": python_major_version = sys.version_info[0] @@ -59,32 +53,16 @@ if "{{ cookiecutter.use_docker }}".lower() == "n": print( HINT + "Please respond with {} or {}: ".format( - ", ".join( - ["'{}'".format(o) for o in yes_options if not o == ""] - ), - ", ".join( - ["'{}'".format(o) for o in no_options if not o == ""] - ), + ", ".join(["'{}'".format(o) for o in yes_options if not o == ""]), + ", ".join(["'{}'".format(o) for o in no_options if not o == ""]), ) + TERMINATOR ) -if ( - "{{ cookiecutter.use_whitenoise }}".lower() == "n" - and "{{ cookiecutter.cloud_provider }}" == "None" -): - print( - "You should either use Whitenoise or select a " - "Cloud Provider to serve static files" - ) +if "{{ cookiecutter.use_whitenoise }}".lower() == "n" and "{{ cookiecutter.cloud_provider }}" == "None": + print("You should either use Whitenoise or select a " "Cloud Provider to serve static files") sys.exit(1) -if ( - "{{ cookiecutter.mail_service }}" == "Amazon SES" - and "{{ cookiecutter.cloud_provider }}" != "AWS" -): - print( - "You should either use AWS or select a different " - "Mail Service for sending emails." - ) +if "{{ cookiecutter.mail_service }}" == "Amazon SES" and "{{ cookiecutter.cloud_provider }}" != "AWS": + print("You should either use AWS or select a different " "Mail Service for sending emails.") sys.exit(1) diff --git a/scripts/create_django_issue.py b/scripts/create_django_issue.py index 5809f393d..d3b3c3792 100644 --- a/scripts/create_django_issue.py +++ b/scripts/create_django_issue.py @@ -141,9 +141,7 @@ class GitHubManager: self.requirements_files = ["base", "local", "production"] # Format: # requirement file name: {package name: (master_version, package_info)} - self.requirements: dict[str, dict[str, tuple[str, dict]]] = { - x: {} for x in self.requirements_files - } + self.requirements: dict[str, dict[str, tuple[str, dict]]] = {x: {} for x in self.requirements_files} def setup(self) -> None: self.load_requirements() @@ -177,11 +175,7 @@ class GitHubManager: "is": "issue", "in": "title", } - issues = list( - self.github.search_issues( - "[Django Update]", "created", "desc", **qualifiers - ) - ) + issues = list(self.github.search_issues("[Django Update]", "created", "desc", **qualifiers)) print(f"Found {len(issues)} issues matching search") for issue in issues: matches = re.match(r"\[Update Django] Django (\d+.\d+)$", issue.title) @@ -194,9 +188,7 @@ class GitHubManager: else: self.existing_issues[issue_version] = issue - def get_compatibility( - self, package_name: str, package_info: dict, needed_dj_version: DjVersion - ): + def get_compatibility(self, package_name: str, package_info: dict, needed_dj_version: DjVersion): """ Verify compatibility via setup.py classifiers. If Django is not in the classifiers, then default compatibility is n/a and OK is ✅. @@ -209,9 +201,7 @@ class GitHubManager: # updated packages, or known releases that will happen but haven't yet if issue := self.existing_issues.get(needed_dj_version): if index := issue.body.find(package_name): - name, _current, prev_compat, ok = ( - s.strip() for s in issue.body[index:].split("|", 4)[:4] - ) + name, _current, prev_compat, ok = (s.strip() for s in issue.body[index:].split("|", 4)[:4]) if ok in ("✅", "❓", "🕒"): return prev_compat, ok @@ -248,9 +238,7 @@ class GitHubManager: ] def _get_md_home_page_url(self, package_info: dict): - urls = [ - package_info["info"].get(url_key) for url_key in self.HOME_PAGE_URL_KEYS - ] + urls = [package_info["info"].get(url_key) for url_key in self.HOME_PAGE_URL_KEYS] try: return f"[{{}}]({next(item for item in urls if item)})" except StopIteration: @@ -259,13 +247,9 @@ class GitHubManager: def generate_markdown(self, needed_dj_version: DjVersion): requirements = f"{needed_dj_version} requirements tables\n\n" for _file in self.requirements_files: - requirements += _TABLE_HEADER.format_map( - {"file": _file, "dj_version": needed_dj_version} - ) + requirements += _TABLE_HEADER.format_map({"file": _file, "dj_version": needed_dj_version}) for package_name, (version, info) in self.requirements[_file].items(): - compat_version, icon = self.get_compatibility( - package_name, info, needed_dj_version - ) + compat_version, icon = self.get_compatibility(package_name, info, needed_dj_version) requirements += ( f"| {self._get_md_home_page_url(info).format(package_name)} " f"| {version.strip()} " @@ -282,9 +266,7 @@ class GitHubManager: issue.edit(body=description) else: print(f"Creating new issue for Django {needed_dj_version}") - issue = self.repo.create_issue( - f"[Update Django] Django {needed_dj_version}", description - ) + issue = self.repo.create_issue(f"[Update Django] Django {needed_dj_version}", description) issue.add_to_labels(f"django{needed_dj_version}") def generate(self): @@ -297,9 +279,7 @@ class GitHubManager: def main(django_max_version=None) -> None: # Check if there are any djs - current_dj, latest_djs = get_all_latest_django_versions( - django_max_version=django_max_version - ) + current_dj, latest_djs = get_all_latest_django_versions(django_max_version=django_max_version) if not latest_djs: sys.exit(0) manager = GitHubManager(current_dj, latest_djs) @@ -309,9 +289,7 @@ def main(django_max_version=None) -> None: if __name__ == "__main__": if GITHUB_REPO is None: - raise RuntimeError( - "No github repo, please set the environment variable GITHUB_REPOSITORY" - ) + raise RuntimeError("No github repo, please set the environment variable GITHUB_REPOSITORY") max_version = None last_arg = sys.argv[-1] if CURRENT_FILE.name not in last_arg: diff --git a/scripts/update_changelog.py b/scripts/update_changelog.py index 57d915a4b..7d43a0b57 100644 --- a/scripts/update_changelog.py +++ b/scripts/update_changelog.py @@ -154,11 +154,7 @@ def update_git_repo(paths: list[Path], release: str) -> None: if __name__ == "__main__": if GITHUB_REPO is None: - raise RuntimeError( - "No github repo, please set the environment variable GITHUB_REPOSITORY" - ) + raise RuntimeError("No github repo, please set the environment variable GITHUB_REPOSITORY") if GIT_BRANCH is None: - raise RuntimeError( - "No git branch set, please set the GITHUB_REF_NAME environment variable" - ) + raise RuntimeError("No git branch set, please set the GITHUB_REF_NAME environment variable") main() diff --git a/scripts/update_contributors.py b/scripts/update_contributors.py index 76ccf60ad..09a7082c0 100644 --- a/scripts/update_contributors.py +++ b/scripts/update_contributors.py @@ -44,15 +44,9 @@ def iter_recent_authors(): git CLI to work with Github usernames. """ repo = Github(login_or_token=GITHUB_TOKEN, per_page=5).get_repo(GITHUB_REPO) - recent_pulls = repo.get_pulls( - state="closed", sort="updated", direction="desc" - ).get_page(0) + recent_pulls = repo.get_pulls(state="closed", sort="updated", direction="desc").get_page(0) for pull in recent_pulls: - if ( - pull.merged - and pull.user.type == "User" - and pull.user.login not in BOT_LOGINS - ): + if pull.merged and pull.user.type == "User" and pull.user.login not in BOT_LOGINS: yield pull.user @@ -96,9 +90,7 @@ def write_md_file(contributors): core_contributors = [c for c in contributors if c.get("is_core", False)] other_contributors = (c for c in contributors if not c.get("is_core", False)) other_contributors = sorted(other_contributors, key=lambda c: c["name"].lower()) - content = template.render( - core_contributors=core_contributors, other_contributors=other_contributors - ) + content = template.render(core_contributors=core_contributors, other_contributors=other_contributors) file_path = ROOT / "CONTRIBUTORS.md" file_path.write_text(content) @@ -106,7 +98,5 @@ def write_md_file(contributors): if __name__ == "__main__": if GITHUB_REPO is None: - raise RuntimeError( - "No github repo, please set the environment variable GITHUB_REPOSITORY" - ) + raise RuntimeError("No github repo, please set the environment variable GITHUB_REPOSITORY") main() diff --git a/setup.py b/setup.py index 3f20e29ca..eb7d14ffd 100644 --- a/setup.py +++ b/setup.py @@ -13,10 +13,7 @@ with open("README.rst") as readme_file: setup( name="cookiecutter-django", version=version, - description=( - "A Cookiecutter template for creating production-ready " - "Django projects quickly." - ), + description=("A Cookiecutter template for creating production-ready " "Django projects quickly."), long_description=long_description, author="Daniel Roy Greenfeld", author_email="pydanny@gmail.com", diff --git a/tests/test_hooks.py b/tests/test_hooks.py index 7ca752722..6afdc400b 100644 --- a/tests/test_hooks.py +++ b/tests/test_hooks.py @@ -22,7 +22,5 @@ def test_append_to_gitignore_file(working_directory): gitignore_file.write_text("node_modules/\n") append_to_gitignore_file(".envs/*") linesep = os.linesep.encode() - assert ( - gitignore_file.read_bytes() == b"node_modules/" + linesep + b".envs/*" + linesep - ) + assert gitignore_file.read_bytes() == b"node_modules/" + linesep + b".envs/*" + linesep assert gitignore_file.read_text() == "node_modules/\n.envs/*\n"