Merge pull request #4824 from auvipy/newv

new matrix for python 3.6 and django 1.11
This commit is contained in:
Xavier Ordoquy 2017-01-18 17:24:44 +01:00 committed by GitHub
commit 5e9249f429
5 changed files with 39 additions and 22 deletions

View File

@ -2,7 +2,6 @@ language: python
python: python:
- "2.7" - "2.7"
- "3.3"
- "3.4" - "3.4"
- "3.5" - "3.5"
@ -12,6 +11,7 @@ env:
- DJANGO=1.8 - DJANGO=1.8
- DJANGO=1.9 - DJANGO=1.9
- DJANGO=1.10 - DJANGO=1.10
- DJANGO=1.11
- DJANGO=master - DJANGO=master
matrix: matrix:
@ -19,19 +19,23 @@ matrix:
include: include:
- python: "3.6" - python: "3.6"
env: DJANGO=master env: DJANGO=master
- python: "3.6"
env: DJANGO=1.11
- python: "3.3"
env: DJANGO=1.18
- python: "2.7" - python: "2.7"
env: TOXENV="lint" env: TOXENV="lint"
- python: "2.7" - python: "2.7"
env: TOXENV="docs" env: TOXENV="docs"
exclude: exclude:
- python: "3.3" - python: "2.7"
env: DJANGO=1.9
- python: "3.3"
env: DJANGO=1.10
- python: "3.3"
env: DJANGO=master env: DJANGO=master
- python: "3.4"
env: DJANGO=master
allow_failures: allow_failures:
- env: DJANGO=master - env: DJANGO=master
- env: DJANGO=1.11
install: install:
- pip install tox tox-travis - pip install tox tox-travis

View File

@ -312,3 +312,12 @@ def set_many(instance, field, value):
else: else:
field = getattr(instance, field) field = getattr(instance, field)
field.set(value) field.set(value)
try:
# A `utc` instance is available in Django 1.11+
from django.utils.timezone import utc
except ImportError:
# A `UTC` class is available in older versions
from django.utils.timezone import UTC
utc = UTC()

View File

@ -32,7 +32,7 @@ from django.utils.translation import ugettext_lazy as _
from rest_framework import ISO_8601 from rest_framework import ISO_8601
from rest_framework.compat import ( from rest_framework.compat import (
get_remote_field, unicode_repr, unicode_to_repr, value_from_object get_remote_field, unicode_repr, unicode_to_repr, utc, value_from_object
) )
from rest_framework.exceptions import ErrorDetail, ValidationError from rest_framework.exceptions import ErrorDetail, ValidationError
from rest_framework.settings import api_settings from rest_framework.settings import api_settings
@ -1104,7 +1104,7 @@ class DateTimeField(Field):
if (field_timezone is not None) and not timezone.is_aware(value): if (field_timezone is not None) and not timezone.is_aware(value):
return timezone.make_aware(value, field_timezone) return timezone.make_aware(value, field_timezone)
elif (field_timezone is None) and timezone.is_aware(value): elif (field_timezone is None) and timezone.is_aware(value):
return timezone.make_naive(value, timezone.UTC()) return timezone.make_naive(value, utc)
return value return value
def default_timezone(self): def default_timezone(self):

View File

@ -8,10 +8,11 @@ from decimal import Decimal
import pytest import pytest
from django.http import QueryDict from django.http import QueryDict
from django.test import TestCase, override_settings from django.test import TestCase, override_settings
from django.utils import six, timezone from django.utils import six
import rest_framework import rest_framework
from rest_framework import serializers from rest_framework import serializers
from rest_framework.compat import utc
from rest_framework.fields import is_simple_callable from rest_framework.fields import is_simple_callable
try: try:
@ -1129,13 +1130,13 @@ class TestDateTimeField(FieldValues):
Valid and invalid values for `DateTimeField`. Valid and invalid values for `DateTimeField`.
""" """
valid_inputs = { valid_inputs = {
'2001-01-01 13:00': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()), '2001-01-01 13:00': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc),
'2001-01-01T13:00': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()), '2001-01-01T13:00': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc),
'2001-01-01T13:00Z': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()), '2001-01-01T13:00Z': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc),
datetime.datetime(2001, 1, 1, 13, 00): datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()), datetime.datetime(2001, 1, 1, 13, 00): datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc),
datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()): datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()), datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc): datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc),
# Django 1.4 does not support timezone string parsing. # Django 1.4 does not support timezone string parsing.
'2001-01-01T13:00Z': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()) '2001-01-01T13:00Z': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc)
} }
invalid_inputs = { invalid_inputs = {
'abc': ['Datetime has wrong format. Use one of these formats instead: YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z].'], 'abc': ['Datetime has wrong format. Use one of these formats instead: YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z].'],
@ -1144,13 +1145,13 @@ class TestDateTimeField(FieldValues):
} }
outputs = { outputs = {
datetime.datetime(2001, 1, 1, 13, 00): '2001-01-01T13:00:00', datetime.datetime(2001, 1, 1, 13, 00): '2001-01-01T13:00:00',
datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()): '2001-01-01T13:00:00Z', datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc): '2001-01-01T13:00:00Z',
'2001-01-01T00:00:00': '2001-01-01T00:00:00', '2001-01-01T00:00:00': '2001-01-01T00:00:00',
six.text_type('2016-01-10T00:00:00'): '2016-01-10T00:00:00', six.text_type('2016-01-10T00:00:00'): '2016-01-10T00:00:00',
None: None, None: None,
'': None, '': None,
} }
field = serializers.DateTimeField(default_timezone=timezone.UTC()) field = serializers.DateTimeField(default_timezone=utc)
class TestCustomInputFormatDateTimeField(FieldValues): class TestCustomInputFormatDateTimeField(FieldValues):
@ -1158,13 +1159,13 @@ class TestCustomInputFormatDateTimeField(FieldValues):
Valid and invalid values for `DateTimeField` with a custom input format. Valid and invalid values for `DateTimeField` with a custom input format.
""" """
valid_inputs = { valid_inputs = {
'1:35pm, 1 Jan 2001': datetime.datetime(2001, 1, 1, 13, 35, tzinfo=timezone.UTC()), '1:35pm, 1 Jan 2001': datetime.datetime(2001, 1, 1, 13, 35, tzinfo=utc),
} }
invalid_inputs = { invalid_inputs = {
'2001-01-01T20:50': ['Datetime has wrong format. Use one of these formats instead: hh:mm[AM|PM], DD [Jan-Dec] YYYY.'] '2001-01-01T20:50': ['Datetime has wrong format. Use one of these formats instead: hh:mm[AM|PM], DD [Jan-Dec] YYYY.']
} }
outputs = {} outputs = {}
field = serializers.DateTimeField(default_timezone=timezone.UTC(), input_formats=['%I:%M%p, %d %b %Y']) field = serializers.DateTimeField(default_timezone=utc, input_formats=['%I:%M%p, %d %b %Y'])
class TestCustomOutputFormatDateTimeField(FieldValues): class TestCustomOutputFormatDateTimeField(FieldValues):
@ -1196,7 +1197,7 @@ class TestNaiveDateTimeField(FieldValues):
Valid and invalid values for `DateTimeField` with naive datetimes. Valid and invalid values for `DateTimeField` with naive datetimes.
""" """
valid_inputs = { valid_inputs = {
datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()): datetime.datetime(2001, 1, 1, 13, 00), datetime.datetime(2001, 1, 1, 13, 00, tzinfo=utc): datetime.datetime(2001, 1, 1, 13, 00),
'2001-01-01 13:00': datetime.datetime(2001, 1, 1, 13, 00), '2001-01-01 13:00': datetime.datetime(2001, 1, 1, 13, 00),
} }
invalid_inputs = {} invalid_inputs = {}

View File

@ -5,7 +5,8 @@ addopts=--tb=short
envlist = envlist =
{py27,py33,py34,py35}-django18, {py27,py33,py34,py35}-django18,
{py27,py34,py35}-django{19,110}, {py27,py34,py35}-django{19,110},
{py27,py34,py35,py36}-djangomaster, {py27,py34,py35,py36}-django111,
{py35,py36}-djangomaster
lint,docs lint,docs
[travis:env] [travis:env]
@ -13,6 +14,7 @@ DJANGO =
1.8: django18 1.8: django18
1.9: django19 1.9: django19
1.10: django110 1.10: django110
1.11: django111
master: djangomaster master: djangomaster
[testenv] [testenv]
@ -22,8 +24,9 @@ setenv =
PYTHONWARNINGS=once PYTHONWARNINGS=once
deps = deps =
django18: Django>=1.8,<1.9 django18: Django>=1.8,<1.9
django19: Django>=1.9,<.1.10 django19: Django>=1.9,<1.10
django110: Django>=1.10,<1.11 django110: Django>=1.10,<1.11
django111: Django>=1.11a1,<2.0
djangomaster: https://github.com/django/django/archive/master.tar.gz djangomaster: https://github.com/django/django/archive/master.tar.gz
-rrequirements/requirements-testing.txt -rrequirements/requirements-testing.txt
-rrequirements/requirements-optionals.txt -rrequirements/requirements-optionals.txt