mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2025-08-16 01:44:51 +03:00
Merge branch 'master' into feat/webpack-rebased
This commit is contained in:
commit
a34e4c6672
2
.github/workflows/pre-commit-autoupdate.yml
vendored
2
.github/workflows/pre-commit-autoupdate.yml
vendored
|
@ -31,7 +31,7 @@ jobs:
|
||||||
run: pre-commit autoupdate
|
run: pre-commit autoupdate
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@v3.14.0
|
uses: peter-evans/create-pull-request@v4
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
branch: update/pre-commit-autoupdate
|
branch: update/pre-commit-autoupdate
|
||||||
|
|
2
.github/workflows/update-contributors.yml
vendored
2
.github/workflows/update-contributors.yml
vendored
|
@ -26,7 +26,7 @@ jobs:
|
||||||
run: python scripts/update_contributors.py
|
run: python scripts/update_contributors.py
|
||||||
|
|
||||||
- name: Commit changes
|
- name: Commit changes
|
||||||
uses: stefanzweifel/git-auto-commit-action@v4.13.1
|
uses: stefanzweifel/git-auto-commit-action@v4.14.1
|
||||||
with:
|
with:
|
||||||
commit_message: Update Contributors
|
commit_message: Update Contributors
|
||||||
file_pattern: CONTRIBUTORS.md .github/contributors.json
|
file_pattern: CONTRIBUTORS.md .github/contributors.json
|
||||||
|
|
|
@ -3,13 +3,13 @@ default_stages: [commit]
|
||||||
|
|
||||||
repos:
|
repos:
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v4.1.0
|
rev: v4.2.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
- id: check-yaml
|
- id: check-yaml
|
||||||
|
|
||||||
- repo: https://github.com/psf/black
|
- repo: https://github.com/psf/black
|
||||||
rev: 22.1.0
|
rev: 22.3.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: black
|
- id: black
|
||||||
|
|
||||||
|
|
87
CHANGELOG.md
87
CHANGELOG.md
|
@ -3,6 +3,93 @@ All enhancements and patches to Cookiecutter Django will be documented in this f
|
||||||
|
|
||||||
<!-- GENERATOR_PLACEHOLDER -->
|
<!-- GENERATOR_PLACEHOLDER -->
|
||||||
|
|
||||||
|
## 2022.04.27
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
- Update mypy to 0.950 ([#3687](https://github.com/cookiecutter/cookiecutter-django/pull/3687))
|
||||||
|
- Update python-slugify to 6.1.2 ([#3686](https://github.com/cookiecutter/cookiecutter-django/pull/3686))
|
||||||
|
- Update drf-spectacular to 0.22.1 ([#3684](https://github.com/cookiecutter/cookiecutter-django/pull/3684))
|
||||||
|
|
||||||
|
## 2022.04.25
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
- Update pytest to 7.1.2 ([#3683](https://github.com/cookiecutter/cookiecutter-django/pull/3683))
|
||||||
|
|
||||||
|
## 2022.04.19
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
- Update tox to 3.25.0 ([#3675](https://github.com/cookiecutter/cookiecutter-django/pull/3675))
|
||||||
|
- Update sentry-sdk to 1.5.10 ([#3679](https://github.com/cookiecutter/cookiecutter-django/pull/3679))
|
||||||
|
|
||||||
|
## 2022.04.13
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
- Bump stefanzweifel/git-auto-commit-action from 4.14.0 to 4.14.1 ([#3677](https://github.com/cookiecutter/cookiecutter-django/pull/3677))
|
||||||
|
|
||||||
|
## 2022.04.11
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
- Update django to 3.2.13 ([#3676](https://github.com/cookiecutter/cookiecutter-django/pull/3676))
|
||||||
|
|
||||||
|
## 2022.04.08
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
- Auto-update pre-commit hooks ([#3673](https://github.com/cookiecutter/cookiecutter-django/pull/3673))
|
||||||
|
|
||||||
|
## 2022.04.05
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
- Update celery to 5.2.6 ([#3671](https://github.com/cookiecutter/cookiecutter-django/pull/3671))
|
||||||
|
|
||||||
|
## 2022.04.04
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
- Update redis to 4.2.2 ([#3670](https://github.com/cookiecutter/cookiecutter-django/pull/3670))
|
||||||
|
- Update celery to 5.2.5 ([#3669](https://github.com/cookiecutter/cookiecutter-django/pull/3669))
|
||||||
|
- Update pre-commit to 2.18.1 ([#3668](https://github.com/cookiecutter/cookiecutter-django/pull/3668))
|
||||||
|
- Update pillow to 9.1.0 ([#3665](https://github.com/cookiecutter/cookiecutter-django/pull/3665))
|
||||||
|
|
||||||
|
## 2022.04.01
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Update domain for Celery docs ([#3663](https://github.com/cookiecutter/cookiecutter-django/pull/3663))
|
||||||
|
### Updated
|
||||||
|
- Update watchgod to 0.8.2 ([#3664](https://github.com/cookiecutter/cookiecutter-django/pull/3664))
|
||||||
|
- Update redis to 4.2.1 ([#3660](https://github.com/cookiecutter/cookiecutter-django/pull/3660))
|
||||||
|
|
||||||
|
## 2022.03.28
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Update `black` version to `22.3.0` ([#3657](https://github.com/cookiecutter/cookiecutter-django/pull/3657))
|
||||||
|
|
||||||
|
## 2022.03.27
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
- Update sphinx to 4.5.0 ([#3654](https://github.com/cookiecutter/cookiecutter-django/pull/3654))
|
||||||
|
- Update jinja2 to 3.1.1 ([#3652](https://github.com/cookiecutter/cookiecutter-django/pull/3652))
|
||||||
|
- Update pylint-django to 2.5.3 ([#3650](https://github.com/cookiecutter/cookiecutter-django/pull/3650))
|
||||||
|
- Update django-allauth to 0.50.0 ([#3649](https://github.com/cookiecutter/cookiecutter-django/pull/3649))
|
||||||
|
- Update mypy to 0.942 ([#3648](https://github.com/cookiecutter/cookiecutter-django/pull/3648))
|
||||||
|
- Update jinja2 to 3.1.0 ([#3647](https://github.com/cookiecutter/cookiecutter-django/pull/3647))
|
||||||
|
- Update redis to 4.2.0 ([#3646](https://github.com/cookiecutter/cookiecutter-django/pull/3646))
|
||||||
|
- Update watchgod to 0.8.1 ([#3643](https://github.com/cookiecutter/cookiecutter-django/pull/3643))
|
||||||
|
- Bump stefanzweifel/git-auto-commit-action from 4.13.1 to 4.14.0 ([#3641](https://github.com/cookiecutter/cookiecutter-django/pull/3641))
|
||||||
|
- Update drf-spectacular to 0.22.0 ([#3642](https://github.com/cookiecutter/cookiecutter-django/pull/3642))
|
||||||
|
- Update pytz to 2022.1 ([#3639](https://github.com/cookiecutter/cookiecutter-django/pull/3639))
|
||||||
|
- Update sentry-sdk to 1.5.8 ([#3638](https://github.com/cookiecutter/cookiecutter-django/pull/3638))
|
||||||
|
- Update pytest to 7.1.1 ([#3637](https://github.com/cookiecutter/cookiecutter-django/pull/3637))
|
||||||
|
- Update uvicorn to 0.17.6 ([#3627](https://github.com/cookiecutter/cookiecutter-django/pull/3627))
|
||||||
|
|
||||||
|
## 2022.03.23
|
||||||
|
|
||||||
|
### Updated
|
||||||
|
- Bump peter-evans/create-pull-request from 3.14.0 to 4 ([#3645](https://github.com/cookiecutter/cookiecutter-django/pull/3645))
|
||||||
|
|
||||||
|
## 2022.03.20
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Unify compressor, gulp and custom bootstrap options ([#3535](https://github.com/cookiecutter/cookiecutter-django/pull/3535))
|
||||||
|
|
||||||
## 2022.03.14
|
## 2022.03.14
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
3
CODE_OF_CONDUCT.md
Normal file
3
CODE_OF_CONDUCT.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
## Code of Conduct
|
||||||
|
|
||||||
|
Everyone who interacts in the Cookiecutter project's codebase, issue trackers, chat rooms, and mailing lists is expected to follow the [PyPA Code of Conduct](https://www.pypa.io/en/latest/code-of-conduct/).
|
|
@ -42,7 +42,7 @@ production-ready Django projects quickly.
|
||||||
*These features can be enabled during initial project setup.*
|
*These features can be enabled during initial project setup.*
|
||||||
|
|
||||||
- Serve static files from Amazon S3, Google Cloud Storage or [Whitenoise](https://whitenoise.readthedocs.io/)
|
- Serve static files from Amazon S3, Google Cloud Storage or [Whitenoise](https://whitenoise.readthedocs.io/)
|
||||||
- Configuration for [Celery](http://www.celeryproject.org/) and [Flower](https://github.com/mher/flower) (the latter in Docker setup only)
|
- Configuration for [Celery](https://docs.celeryq.dev) and [Flower](https://github.com/mher/flower) (the latter in Docker setup only)
|
||||||
- Integration with [MailHog](https://github.com/mailhog/MailHog) for local email testing
|
- Integration with [MailHog](https://github.com/mailhog/MailHog) for local email testing
|
||||||
- Integration with [Sentry](https://sentry.io/welcome/) for error logging
|
- Integration with [Sentry](https://sentry.io/welcome/) for error logging
|
||||||
|
|
||||||
|
@ -245,8 +245,3 @@ experience better.
|
||||||
- [How to create a Django Application using Cookiecutter and Django 1.8](https://www.swapps.io/blog/how-to-create-a-django-application-using-cookiecutter-and-django-1-8/) - Sept. 12, 2015
|
- [How to create a Django Application using Cookiecutter and Django 1.8](https://www.swapps.io/blog/how-to-create-a-django-application-using-cookiecutter-and-django-1-8/) - Sept. 12, 2015
|
||||||
|
|
||||||
Have a blog or online publication? Write about your cookiecutter-django tips and tricks, then send us a pull request with the link.
|
Have a blog or online publication? Write about your cookiecutter-django tips and tricks, then send us a pull request with the link.
|
||||||
|
|
||||||
## Code of Conduct
|
|
||||||
|
|
||||||
Everyone interacting in the Cookiecutter project's codebases, issue trackers, chat
|
|
||||||
rooms, and mailing lists is expected to follow the [PyPA Code of Conduct](https://www.pypa.io/en/latest/code-of-conduct/).
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ Prerequisites
|
||||||
|
|
||||||
* Docker; if you don't have it yet, follow the `installation instructions`_;
|
* Docker; if you don't have it yet, follow the `installation instructions`_;
|
||||||
* Docker Compose; refer to the official documentation for the `installation guide`_.
|
* Docker Compose; refer to the official documentation for the `installation guide`_.
|
||||||
* Pre-commit; refer to the official documentation for the [pre-commit](https://pre-commit.com/#install).
|
* Pre-commit; refer to the official documentation for the `pre-commit`_.
|
||||||
|
|
||||||
.. _`installation instructions`: https://docs.docker.com/install/#supported-platforms
|
.. _`installation instructions`: https://docs.docker.com/install/#supported-platforms
|
||||||
.. _`installation guide`: https://docs.docker.com/compose/install/
|
.. _`installation guide`: https://docs.docker.com/compose/install/
|
||||||
|
@ -190,7 +190,7 @@ Celery tasks in local development
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
When not using docker Celery tasks are set to run in Eager mode, so that a full stack is not needed. When using docker the task scheduler will be used by default.
|
When not using docker Celery tasks are set to run in Eager mode, so that a full stack is not needed. When using docker the task scheduler will be used by default.
|
||||||
|
|
||||||
If you need tasks to be executed on the main thread during development set CELERY_TASK_ALWAYS_EAGER = True in config/settings/local.py.
|
If you need tasks to be executed on the main thread during development set ``CELERY_TASK_ALWAYS_EAGER = True`` in ``config/settings/local.py``.
|
||||||
|
|
||||||
Possible uses could be for testing, or ease of profiling with DJDT.
|
Possible uses could be for testing, or ease of profiling with DJDT.
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ Developing locally with HTTPS
|
||||||
|
|
||||||
Increasingly it is becoming necessary to develop software in a secure environment in order that there are very few changes when deploying to production. Recently Facebook changed their policies for apps/sites that use Facebook login which requires the use of an HTTPS URL for the OAuth redirect URL. So if you want to use the ``users`` application with a OAuth provider such as Facebook, securing your communication to the local development environment will be necessary.
|
Increasingly it is becoming necessary to develop software in a secure environment in order that there are very few changes when deploying to production. Recently Facebook changed their policies for apps/sites that use Facebook login which requires the use of an HTTPS URL for the OAuth redirect URL. So if you want to use the ``users`` application with a OAuth provider such as Facebook, securing your communication to the local development environment will be necessary.
|
||||||
|
|
||||||
In order to create a secure environment, we need to have a trusted SSL certficate installed in our Docker application.
|
In order to create a secure environment, we need to have a trusted SSL certificate installed in our Docker application.
|
||||||
|
|
||||||
#. **Let's Encrypt**
|
#. **Let's Encrypt**
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
sphinx==4.4.0
|
sphinx==4.5.0
|
||||||
sphinx-rtd-theme==1.0.0
|
sphinx-rtd-theme==1.0.0
|
||||||
|
|
|
@ -4,16 +4,16 @@ binaryornot==0.4.4
|
||||||
|
|
||||||
# Code quality
|
# Code quality
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
black==22.1.0
|
black==22.3.0
|
||||||
isort==5.10.1
|
isort==5.10.1
|
||||||
flake8==4.0.1
|
flake8==4.0.1
|
||||||
flake8-isort==4.1.1
|
flake8-isort==4.1.1
|
||||||
pre-commit==2.17.0
|
pre-commit==2.18.1
|
||||||
|
|
||||||
# Testing
|
# Testing
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
tox==3.24.5
|
tox==3.25.0
|
||||||
pytest==7.0.1
|
pytest==7.1.2
|
||||||
pytest-cookies==0.6.1
|
pytest-cookies==0.6.1
|
||||||
pytest-instafail==0.4.2
|
pytest-instafail==0.4.2
|
||||||
pyyaml==6.0
|
pyyaml==6.0
|
||||||
|
@ -22,5 +22,5 @@ pyyaml==6.0
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
PyGithub==1.55
|
PyGithub==1.55
|
||||||
gitpython==3.1.27
|
gitpython==3.1.27
|
||||||
jinja2==3.0.3
|
jinja2==3.1.1
|
||||||
requests==2.27.1
|
requests==2.27.1
|
||||||
|
|
|
@ -47,6 +47,11 @@ class DjVersion(NamedTuple):
|
||||||
major, minor, *_ = version_str.split(".")
|
major, minor, *_ = version_str.split(".")
|
||||||
return cls(major=int(major), minor=int(minor))
|
return cls(major=int(major), minor=int(minor))
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def parse_to_tuple(cls, version_str: str):
|
||||||
|
version = cls.parse(version_str=version_str)
|
||||||
|
return version.major, version.minor
|
||||||
|
|
||||||
|
|
||||||
def get_package_info(package: str) -> dict:
|
def get_package_info(package: str) -> dict:
|
||||||
"""Get package metadata using PyPI API."""
|
"""Get package metadata using PyPI API."""
|
||||||
|
@ -75,17 +80,22 @@ def get_name_and_version(requirements_line: str) -> tuple[str, ...]:
|
||||||
return name_without_extras, version
|
return name_without_extras, version
|
||||||
|
|
||||||
|
|
||||||
def get_all_latest_django_versions() -> tuple[DjVersion, list[DjVersion]]:
|
def get_all_latest_django_versions(
|
||||||
|
django_max_version: tuple[DjVersion] = None,
|
||||||
|
) -> tuple[DjVersion, list[DjVersion]]:
|
||||||
"""
|
"""
|
||||||
Grabs all Django versions that are worthy of a GitHub issue.
|
Grabs all Django versions that are worthy of a GitHub issue.
|
||||||
|
|
||||||
Depends on Django versions having higher major version or minor version.
|
Depends on Django versions having higher major version or minor version.
|
||||||
"""
|
"""
|
||||||
|
_django_max_version = (99, 99)
|
||||||
|
if django_max_version:
|
||||||
|
_django_max_version = django_max_version
|
||||||
|
|
||||||
print("Fetching all Django versions from PyPI")
|
print("Fetching all Django versions from PyPI")
|
||||||
base_txt = REQUIREMENTS_DIR / "base.txt"
|
base_txt = REQUIREMENTS_DIR / "base.txt"
|
||||||
with base_txt.open() as f:
|
with base_txt.open() as f:
|
||||||
for line in f.readlines():
|
for line in f.readlines():
|
||||||
if "django==" in line:
|
if "django==" in line.lower():
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
print(f"django not found in {base_txt}") # Huh...?
|
print(f"django not found in {base_txt}") # Huh...?
|
||||||
|
@ -97,7 +107,7 @@ def get_all_latest_django_versions() -> tuple[DjVersion, list[DjVersion]]:
|
||||||
current_minor_version = DjVersion.parse(current_version_str)
|
current_minor_version = DjVersion.parse(current_version_str)
|
||||||
newer_versions: set[DjVersion] = set()
|
newer_versions: set[DjVersion] = set()
|
||||||
for django_version in get_django_versions():
|
for django_version in get_django_versions():
|
||||||
if django_version > current_minor_version:
|
if _django_max_version >= django_version >= current_minor_version:
|
||||||
newer_versions.add(django_version)
|
newer_versions.add(django_version)
|
||||||
|
|
||||||
return current_minor_version, sorted(newer_versions, reverse=True)
|
return current_minor_version, sorted(newer_versions, reverse=True)
|
||||||
|
@ -143,7 +153,13 @@ class GitHubManager:
|
||||||
for requirements_file in self.requirements_files:
|
for requirements_file in self.requirements_files:
|
||||||
with (REQUIREMENTS_DIR / f"{requirements_file}.txt").open() as f:
|
with (REQUIREMENTS_DIR / f"{requirements_file}.txt").open() as f:
|
||||||
for line in f.readlines():
|
for line in f.readlines():
|
||||||
if "==" in line and not line.startswith("{%"):
|
if (
|
||||||
|
"==" in line
|
||||||
|
and not line.startswith("{%")
|
||||||
|
and not line.startswith(" #")
|
||||||
|
and not line.startswith("#")
|
||||||
|
and not line.startswith(" ")
|
||||||
|
):
|
||||||
name, version = get_name_and_version(line)
|
name, version = get_name_and_version(line)
|
||||||
self.requirements[requirements_file][name] = (
|
self.requirements[requirements_file][name] = (
|
||||||
version,
|
version,
|
||||||
|
@ -192,9 +208,9 @@ class GitHubManager:
|
||||||
# updated packages, or known releases that will happen but haven't yet
|
# updated packages, or known releases that will happen but haven't yet
|
||||||
if issue := self.existing_issues.get(needed_dj_version):
|
if issue := self.existing_issues.get(needed_dj_version):
|
||||||
if index := issue.body.find(package_name):
|
if index := issue.body.find(package_name):
|
||||||
name, _current, prev_compat, ok = [
|
name, _current, prev_compat, ok = (
|
||||||
s.strip() for s in issue.body[index:].split("|", 4)[:4]
|
s.strip() for s in issue.body[index:].split("|", 4)[:4]
|
||||||
]
|
)
|
||||||
if ok in ("✅", "❓", "🕒"):
|
if ok in ("✅", "❓", "🕒"):
|
||||||
return prev_compat, ok
|
return prev_compat, ok
|
||||||
|
|
||||||
|
@ -251,11 +267,12 @@ class GitHubManager:
|
||||||
)
|
)
|
||||||
requirements += (
|
requirements += (
|
||||||
f"| {self._get_md_home_page_url(info).format(package_name)} "
|
f"| {self._get_md_home_page_url(info).format(package_name)} "
|
||||||
f"| {version} "
|
f"| {version.strip()} "
|
||||||
f"| {compat_version} "
|
f"| {compat_version.strip()} "
|
||||||
f"| {icon} "
|
f"| {icon} "
|
||||||
f"|\n"
|
f"|\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
return requirements
|
return requirements
|
||||||
|
|
||||||
def create_or_edit_issue(self, needed_dj_version: DjVersion, description: str):
|
def create_or_edit_issue(self, needed_dj_version: DjVersion, description: str):
|
||||||
|
@ -277,9 +294,11 @@ class GitHubManager:
|
||||||
self.create_or_edit_issue(version, md_content)
|
self.create_or_edit_issue(version, md_content)
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main(django_max_version=None) -> None:
|
||||||
# Check if there are any djs
|
# Check if there are any djs
|
||||||
current_dj, latest_djs = get_all_latest_django_versions()
|
current_dj, latest_djs = get_all_latest_django_versions(
|
||||||
|
django_max_version=django_max_version
|
||||||
|
)
|
||||||
if not latest_djs:
|
if not latest_djs:
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
manager = GitHubManager(current_dj, latest_djs)
|
manager = GitHubManager(current_dj, latest_djs)
|
||||||
|
@ -292,4 +311,9 @@ if __name__ == "__main__":
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
"No github repo, please set the environment variable GITHUB_REPOSITORY"
|
"No github repo, please set the environment variable GITHUB_REPOSITORY"
|
||||||
)
|
)
|
||||||
main()
|
max_version = None
|
||||||
|
last_arg = sys.argv[-1]
|
||||||
|
if CURRENT_FILE.name not in last_arg:
|
||||||
|
max_version = DjVersion.parse_to_tuple(version_str=last_arg)
|
||||||
|
|
||||||
|
main(django_max_version=max_version)
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -5,7 +5,7 @@ except ImportError:
|
||||||
from distutils.core import setup
|
from distutils.core import setup
|
||||||
|
|
||||||
# We use calendar versioning
|
# We use calendar versioning
|
||||||
version = "2022.03.14"
|
version = "2022.04.27"
|
||||||
|
|
||||||
with open("README.rst") as readme_file:
|
with open("README.rst") as readme_file:
|
||||||
long_description = readme_file.read()
|
long_description = readme_file.read()
|
||||||
|
|
|
@ -3,14 +3,14 @@ default_stages: [commit]
|
||||||
|
|
||||||
repos:
|
repos:
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v4.1.0
|
rev: v4.2.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
- id: check-yaml
|
- id: check-yaml
|
||||||
|
|
||||||
- repo: https://github.com/psf/black
|
- repo: https://github.com/psf/black
|
||||||
rev: 22.1.0
|
rev: 22.3.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: black
|
- id: black
|
||||||
|
|
||||||
|
|
|
@ -280,25 +280,25 @@ LOGGING = {
|
||||||
# Celery
|
# Celery
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
if USE_TZ:
|
if USE_TZ:
|
||||||
# http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-timezone
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#std:setting-timezone
|
||||||
CELERY_TIMEZONE = TIME_ZONE
|
CELERY_TIMEZONE = TIME_ZONE
|
||||||
# http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-broker_url
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#std:setting-broker_url
|
||||||
CELERY_BROKER_URL = env("CELERY_BROKER_URL")
|
CELERY_BROKER_URL = env("CELERY_BROKER_URL")
|
||||||
# http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-result_backend
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#std:setting-result_backend
|
||||||
CELERY_RESULT_BACKEND = CELERY_BROKER_URL
|
CELERY_RESULT_BACKEND = CELERY_BROKER_URL
|
||||||
# http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-accept_content
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#std:setting-accept_content
|
||||||
CELERY_ACCEPT_CONTENT = ["json"]
|
CELERY_ACCEPT_CONTENT = ["json"]
|
||||||
# http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-task_serializer
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#std:setting-task_serializer
|
||||||
CELERY_TASK_SERIALIZER = "json"
|
CELERY_TASK_SERIALIZER = "json"
|
||||||
# http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-result_serializer
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#std:setting-result_serializer
|
||||||
CELERY_RESULT_SERIALIZER = "json"
|
CELERY_RESULT_SERIALIZER = "json"
|
||||||
# http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-time-limit
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#task-time-limit
|
||||||
# TODO: set to whatever value is adequate in your circumstances
|
# TODO: set to whatever value is adequate in your circumstances
|
||||||
CELERY_TASK_TIME_LIMIT = 5 * 60
|
CELERY_TASK_TIME_LIMIT = 5 * 60
|
||||||
# http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-soft-time-limit
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#task-soft-time-limit
|
||||||
# TODO: set to whatever value is adequate in your circumstances
|
# TODO: set to whatever value is adequate in your circumstances
|
||||||
CELERY_TASK_SOFT_TIME_LIMIT = 60
|
CELERY_TASK_SOFT_TIME_LIMIT = 60
|
||||||
# http://docs.celeryproject.org/en/latest/userguide/configuration.html#beat-scheduler
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#beat-scheduler
|
||||||
CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler"
|
CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler"
|
||||||
|
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
|
@ -88,10 +88,10 @@ INSTALLED_APPS += ["django_extensions"] # noqa F405
|
||||||
# Celery
|
# Celery
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
{% if cookiecutter.use_docker == 'n' -%}
|
{% if cookiecutter.use_docker == 'n' -%}
|
||||||
# http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-always-eager
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#task-always-eager
|
||||||
CELERY_TASK_ALWAYS_EAGER = True
|
CELERY_TASK_ALWAYS_EAGER = True
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
# http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-eager-propagates
|
# https://docs.celeryq.dev/en/stable/userguide/configuration.html#task-eager-propagates
|
||||||
CELERY_TASK_EAGER_PROPAGATES = True
|
CELERY_TASK_EAGER_PROPAGATES = True
|
||||||
|
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
pytz==2021.3 # https://github.com/stub42/pytz
|
pytz==2022.1 # https://github.com/stub42/pytz
|
||||||
python-slugify==6.1.1 # https://github.com/un33k/python-slugify
|
python-slugify==6.1.2 # https://github.com/un33k/python-slugify
|
||||||
Pillow==9.0.1 # https://github.com/python-pillow/Pillow
|
Pillow==9.1.0 # https://github.com/python-pillow/Pillow
|
||||||
{%- if cookiecutter.frontend_pipeline == 'Django Compressor' %}
|
{%- if cookiecutter.frontend_pipeline == 'Django Compressor' %}
|
||||||
{%- if cookiecutter.windows == 'y' and cookiecutter.use_docker == 'n' %}
|
{%- if cookiecutter.windows == 'y' and cookiecutter.use_docker == 'n' %}
|
||||||
rcssmin==1.1.0 --install-option="--without-c-extensions" # https://github.com/ndparker/rcssmin
|
rcssmin==1.1.0 --install-option="--without-c-extensions" # https://github.com/ndparker/rcssmin
|
||||||
|
@ -12,27 +12,27 @@ argon2-cffi==21.3.0 # https://github.com/hynek/argon2_cffi
|
||||||
{%- if cookiecutter.use_whitenoise == 'y' %}
|
{%- if cookiecutter.use_whitenoise == 'y' %}
|
||||||
whitenoise==6.0.0 # https://github.com/evansd/whitenoise
|
whitenoise==6.0.0 # https://github.com/evansd/whitenoise
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
redis==4.1.4 # https://github.com/redis/redis-py
|
redis==4.2.2 # https://github.com/redis/redis-py
|
||||||
{%- if cookiecutter.use_docker == "y" or cookiecutter.windows == "n" %}
|
{%- if cookiecutter.use_docker == "y" or cookiecutter.windows == "n" %}
|
||||||
hiredis==2.0.0 # https://github.com/redis/hiredis-py
|
hiredis==2.0.0 # https://github.com/redis/hiredis-py
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if cookiecutter.use_celery == "y" %}
|
{%- if cookiecutter.use_celery == "y" %}
|
||||||
celery==5.2.3 # pyup: < 6.0 # https://github.com/celery/celery
|
celery==5.2.6 # pyup: < 6.0 # https://github.com/celery/celery
|
||||||
django-celery-beat==2.2.1 # https://github.com/celery/django-celery-beat
|
django-celery-beat==2.2.1 # https://github.com/celery/django-celery-beat
|
||||||
{%- if cookiecutter.use_docker == 'y' %}
|
{%- if cookiecutter.use_docker == 'y' %}
|
||||||
flower==1.0.0 # https://github.com/mher/flower
|
flower==1.0.0 # https://github.com/mher/flower
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if cookiecutter.use_async == 'y' %}
|
{%- if cookiecutter.use_async == 'y' %}
|
||||||
uvicorn[standard]==0.17.5 # https://github.com/encode/uvicorn
|
uvicorn[standard]==0.17.6 # https://github.com/encode/uvicorn
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
# Django
|
# Django
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
django==3.2.12 # pyup: < 4.0 # https://www.djangoproject.com/
|
django==3.2.13 # pyup: < 4.0 # https://www.djangoproject.com/
|
||||||
django-environ==0.8.1 # https://github.com/joke2k/django-environ
|
django-environ==0.8.1 # https://github.com/joke2k/django-environ
|
||||||
django-model-utils==4.2.0 # https://github.com/jazzband/django-model-utils
|
django-model-utils==4.2.0 # https://github.com/jazzband/django-model-utils
|
||||||
django-allauth==0.49.0 # https://github.com/pennersr/django-allauth
|
django-allauth==0.50.0 # https://github.com/pennersr/django-allauth
|
||||||
django-crispy-forms==1.14.0 # https://github.com/django-crispy-forms/django-crispy-forms
|
django-crispy-forms==1.14.0 # https://github.com/django-crispy-forms/django-crispy-forms
|
||||||
crispy-bootstrap5==0.6 # https://github.com/django-crispy-forms/crispy-bootstrap5
|
crispy-bootstrap5==0.6 # https://github.com/django-crispy-forms/crispy-bootstrap5
|
||||||
{%- if cookiecutter.frontend_pipeline == 'Django Compressor' %}
|
{%- if cookiecutter.frontend_pipeline == 'Django Compressor' %}
|
||||||
|
@ -44,7 +44,7 @@ django-redis==5.2.0 # https://github.com/jazzband/django-redis
|
||||||
djangorestframework==3.13.1 # https://github.com/encode/django-rest-framework
|
djangorestframework==3.13.1 # https://github.com/encode/django-rest-framework
|
||||||
django-cors-headers==3.11.0 # https://github.com/adamchainz/django-cors-headers
|
django-cors-headers==3.11.0 # https://github.com/adamchainz/django-cors-headers
|
||||||
# DRF-spectacular for api documentation
|
# DRF-spectacular for api documentation
|
||||||
drf-spectacular==0.21.2 # https://github.com/tfranzel/drf-spectacular
|
drf-spectacular==0.22.1 # https://github.com/tfranzel/drf-spectacular
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if cookiecutter.frontend_pipeline == 'Webpack' %}
|
{%- if cookiecutter.frontend_pipeline == 'Webpack' %}
|
||||||
django-webpack-loader==1.4.1 # https://github.com/django-webpack/django-webpack-loader
|
django-webpack-loader==1.4.1 # https://github.com/django-webpack/django-webpack-loader
|
||||||
|
|
|
@ -8,14 +8,14 @@ psycopg2==2.9.3 # https://github.com/psycopg/psycopg2
|
||||||
psycopg2-binary==2.9.3 # https://github.com/psycopg/psycopg2
|
psycopg2-binary==2.9.3 # https://github.com/psycopg/psycopg2
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if cookiecutter.use_async == 'y' or cookiecutter.use_celery == 'y' %}
|
{%- if cookiecutter.use_async == 'y' or cookiecutter.use_celery == 'y' %}
|
||||||
watchgod==0.7 # https://github.com/samuelcolvin/watchgod
|
watchgod==0.8.2 # https://github.com/samuelcolvin/watchgod
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
# Testing
|
# Testing
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
mypy==0.931 # https://github.com/python/mypy
|
mypy==0.950 # https://github.com/python/mypy
|
||||||
django-stubs==1.9.0 # https://github.com/typeddjango/django-stubs
|
django-stubs==1.9.0 # https://github.com/typeddjango/django-stubs
|
||||||
pytest==7.0.1 # https://github.com/pytest-dev/pytest
|
pytest==7.1.2 # https://github.com/pytest-dev/pytest
|
||||||
pytest-sugar==0.9.4 # https://github.com/Frozenball/pytest-sugar
|
pytest-sugar==0.9.4 # https://github.com/Frozenball/pytest-sugar
|
||||||
{%- if cookiecutter.use_drf == "y" %}
|
{%- if cookiecutter.use_drf == "y" %}
|
||||||
djangorestframework-stubs==1.4.0 # https://github.com/typeddjango/djangorestframework-stubs
|
djangorestframework-stubs==1.4.0 # https://github.com/typeddjango/djangorestframework-stubs
|
||||||
|
@ -23,7 +23,7 @@ djangorestframework-stubs==1.4.0 # https://github.com/typeddjango/djangorestfra
|
||||||
|
|
||||||
# Documentation
|
# Documentation
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
sphinx==4.4.0 # https://github.com/sphinx-doc/sphinx
|
sphinx==4.5.0 # https://github.com/sphinx-doc/sphinx
|
||||||
sphinx-autobuild==2021.3.14 # https://github.com/GaretJax/sphinx-autobuild
|
sphinx-autobuild==2021.3.14 # https://github.com/GaretJax/sphinx-autobuild
|
||||||
|
|
||||||
# Code quality
|
# Code quality
|
||||||
|
@ -31,12 +31,12 @@ sphinx-autobuild==2021.3.14 # https://github.com/GaretJax/sphinx-autobuild
|
||||||
flake8==4.0.1 # https://github.com/PyCQA/flake8
|
flake8==4.0.1 # https://github.com/PyCQA/flake8
|
||||||
flake8-isort==4.1.1 # https://github.com/gforcada/flake8-isort
|
flake8-isort==4.1.1 # https://github.com/gforcada/flake8-isort
|
||||||
coverage==6.3.2 # https://github.com/nedbat/coveragepy
|
coverage==6.3.2 # https://github.com/nedbat/coveragepy
|
||||||
black==22.1.0 # https://github.com/psf/black
|
black==22.3.0 # https://github.com/psf/black
|
||||||
pylint-django==2.5.2 # https://github.com/PyCQA/pylint-django
|
pylint-django==2.5.3 # https://github.com/PyCQA/pylint-django
|
||||||
{%- if cookiecutter.use_celery == 'y' %}
|
{%- if cookiecutter.use_celery == 'y' %}
|
||||||
pylint-celery==0.3 # https://github.com/PyCQA/pylint-celery
|
pylint-celery==0.3 # https://github.com/PyCQA/pylint-celery
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
pre-commit==2.17.0 # https://github.com/pre-commit/pre-commit
|
pre-commit==2.18.1 # https://github.com/pre-commit/pre-commit
|
||||||
|
|
||||||
# Django
|
# Django
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
|
@ -8,7 +8,7 @@ psycopg2==2.9.3 # https://github.com/psycopg/psycopg2
|
||||||
Collectfast==2.2.0 # https://github.com/antonagestam/collectfast
|
Collectfast==2.2.0 # https://github.com/antonagestam/collectfast
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if cookiecutter.use_sentry == "y" %}
|
{%- if cookiecutter.use_sentry == "y" %}
|
||||||
sentry-sdk==1.5.7 # https://github.com/getsentry/sentry-python
|
sentry-sdk==1.5.10 # https://github.com/getsentry/sentry-python
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if cookiecutter.use_docker == "n" and cookiecutter.windows == "y" %}
|
{%- if cookiecutter.use_docker == "n" and cookiecutter.windows == "y" %}
|
||||||
hiredis==2.0.0 # https://github.com/redis/hiredis-py
|
hiredis==2.0.0 # https://github.com/redis/hiredis-py
|
||||||
|
|
Loading…
Reference in New Issue
Block a user