From 59fc3690eba18b72e2cfe536a8f3453671204816 Mon Sep 17 00:00:00 2001 From: Rust Saiargaliev Date: Sat, 17 Apr 2021 16:49:30 +0200 Subject: [PATCH] Add explanations to imports in `generators.py` (#179) To match with currently supported Django versions (2.2+). * Add explanations to imports in `generators.py` * Fix typo, move to 'added' --- CHANGELOG.md | 1 + model_bakery/generators.py | 20 +++++++++++++++----- tests/test_filling_fields.py | 6 +----- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ec60d9a..458cd853 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased](https://github.com/model-bakers/model_bakery/tree/main) ### Added +- [dev] Add explanations to imports in `generators.py` to match with current supported Django versions [PR #179](https://github.com/model-bakers/model_bakery/pull/179) ### Changed diff --git a/model_bakery/generators.py b/model_bakery/generators.py index 1740455b..159eb7b0 100644 --- a/model_bakery/generators.py +++ b/model_bakery/generators.py @@ -36,6 +36,8 @@ from .utils import import_from_str try: + # Proper support starts with Django 3.0 + # (as it uses `django/db/backends/base/operations.py` for matching ranges) from django.db.models import AutoField, BigAutoField, SmallAutoField except ImportError: AutoField = None @@ -43,31 +45,38 @@ SmallAutoField = None try: + # added in Django 3.1 from django.db.models import PositiveBigIntegerField except ImportError: PositiveBigIntegerField = None try: + # Replaced `django.contrib.postgres.fields.JSONField` in Django 3.1 from django.db.models import JSONField except ImportError: JSONField = None try: + # PostgreSQL-specific field (only available when psycopg2 is installed) from django.contrib.postgres.fields import ArrayField except ImportError: ArrayField = None try: + # Deprecated since Django 3.1 + # PostgreSQL-specific field (only available when psycopg2 is installed) from django.contrib.postgres.fields import JSONField as PostgresJSONField except ImportError: PostgresJSONField = None try: + # PostgreSQL-specific field (only available when psycopg2 is installed) from django.contrib.postgres.fields import HStoreField except ImportError: HStoreField = None try: + # PostgreSQL-specific fields (only available when psycopg2 is installed) from django.contrib.postgres.fields.citext import ( CICharField, CIEmailField, @@ -79,22 +88,23 @@ CITextField = None try: - from django.contrib.postgres.fields.ranges import DecimalRangeField -except ImportError: - DecimalRangeField = None -try: + # PostgreSQL-specific fields (only available when psycopg2 is installed) from django.contrib.postgres.fields.ranges import ( BigIntegerRangeField, DateRangeField, DateTimeRangeField, + DecimalRangeField, IntegerRangeField, ) except ImportError: - IntegerRangeField = None BigIntegerRangeField = None DateRangeField = None DateTimeRangeField = None + DecimalRangeField = None + IntegerRangeField = None + try: + # Deprecated since Django 2.2 from django.contrib.postgres.fields.ranges import FloatRangeField except ImportError: FloatRangeField = None diff --git a/tests/test_filling_fields.py b/tests/test_filling_fields.py index 6822aefe..6abf0b91 100644 --- a/tests/test_filling_fields.py +++ b/tests/test_filling_fields.py @@ -453,10 +453,6 @@ def test_filling_citextfield(self, person): assert isinstance(ci_text_field, CITextField) assert isinstance(person.ci_text, str) - @pytest.mark.skipif( - not DecimalRangeField, - reason="Django version does not support DecimalRangeField", - ) def test_filling_decimal_range_field(self, person): from psycopg2._range import NumericRange @@ -489,7 +485,7 @@ def test_filling_integer_range_field_for_big_int(self, person): @pytest.mark.skipif( FloatRangeField is None, - reason="Django version does not support FloatRangeField", + reason="FloatRangeField is deprecated since Django 2.2", ) def test_filling_float_range_field(self, person): from psycopg2._range import NumericRange