Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BOM-1538 : Add Python 3.8 to testing #123

Merged
merged 8 commits into from
Apr 30, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 5 additions & 19 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,15 @@
language: python
python:
- "2.7"
- "3.5"
- "3.8"

env:
- TOXENV=django111
- TOXENV=django20
- TOXENV=django21
- TOXENV=django22

matrix:
exclude:
- python: "2.7"
env: TOXENV=django20
- python: "2.7"
env: TOXENV=django21
- python: "2.7"
env: TOXENV=django22
include:
- python: "3.5"
env: TOXENV=quality
- python: "3.5"
env: TOXENV=without-django
- TOXENV=quality
- TOXENV=without-django

install:
- pip install pip==20.0.2
- make requirements
- pip install coveralls
script:
Expand All @@ -38,6 +24,6 @@ deploy:
on:
tags: true
python: "3.5"
condition: "$TOXENV = django111"
condition: "$TOXENV = django22"
distributions: sdist bdist_wheel
repo: edx/opaque-keys
4 changes: 2 additions & 2 deletions opaque_keys/edx/django/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
log = logging.getLogger(__name__)


class _Creator(object):
class _Creator:
"""
DO NOT REUSE THIS CLASS. Provided for backwards compatibility only!

Expand All @@ -42,7 +42,7 @@ def __set__(self, obj, value):


# pylint: disable=missing-docstring,unused-argument
class CreatorMixin(object):
class CreatorMixin:
"""
Mixin class to provide SubfieldBase functionality to django fields.
See: https://docs.djangoproject.com/en/1.11/releases/1.8/#subfieldbase
Expand Down
2 changes: 1 addition & 1 deletion opaque_keys/edx/django/tests/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
)


class Container(object):
class Container:
"""A simple wrapper class for string-like objects."""

def __init__(self, text):
Expand Down
2 changes: 1 addition & 1 deletion opaque_keys/edx/keys.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ def block_type(self): # pragma: no cover
raise NotImplementedError()


class CourseObjectMixin(object):
class CourseObjectMixin:
"""
An abstract :class:`opaque_keys.OpaqueKey` mixin
for keys that belong to courses.
Expand Down
2 changes: 1 addition & 1 deletion opaque_keys/edx/locations.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def replace(self, **kwargs):
)


class LocationBase(object):
class LocationBase:
"""Deprecated. Base class for :class:`Location` and :class:`AssetLocation`"""

DEPRECATED_TAG = None # Subclasses should define what DEPRECATED_TAG is
Expand Down
10 changes: 5 additions & 5 deletions opaque_keys/edx/locator.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import re
from uuid import UUID
import warnings
from abc import abstractproperty

from bson.errors import InvalidId
from bson.objectid import ObjectId
Expand All @@ -23,7 +22,7 @@
log = logging.getLogger(__name__)


class LocalId(object):
class LocalId:
"""
Class for local ids for non-persisted xblocks (which can have hardcoded block_ids if necessary)
"""
Expand All @@ -48,7 +47,7 @@ class Locator(OpaqueKey):
ALLOWED_ID_CHARS = r'[\w\-~.:]'
DEPRECATED_ALLOWED_ID_CHARS = r'[\w\-~.:%]'

@abstractproperty
@property
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why changing this from abstractproperty to property

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

abstractproperty is depracated since Python 3.3. This was a failing in quality.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add documentation link.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

def version(self): # pragma: no cover
"""
Returns the ObjectId referencing this specific location.
Expand All @@ -72,7 +71,7 @@ def as_object_id(cls, value):
raise InvalidKeyError(cls, u'"%s" is not a valid version_guid' % value)


class CheckFieldMixin(object):
class CheckFieldMixin:
"""
Mixin that provides handy methods for checking field types/values.
"""
Expand Down Expand Up @@ -1220,14 +1219,15 @@ def _from_string(cls, serialized):

return cls(**{key: parse.get(key) for key in cls.KEY_FIELDS})

@property
def version(self):
"""
Returns the ObjectId referencing this specific location.
"""
return self.definition_id


class VersionTree(object):
class VersionTree:
"""
Holds trees of Locators to represent version histories.
"""
Expand Down
2 changes: 1 addition & 1 deletion opaque_keys/edx/tests/test_locators.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def test_description_locator_url(self):
def test_description_locator_version(self):
object_id = '{:024x}'.format(random.randrange(16 ** 24))
definition_locator = DefinitionLocator('html', object_id)
self.assertEqual(object_id, str(definition_locator.version()))
self.assertEqual(object_id, str(definition_locator.version))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why you made this change ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

quality failure
definition_locator.version is not callable (not-callable)
we are accessing a property here.



@ddt.ddt
Expand Down
3 changes: 1 addition & 2 deletions opaque_keys/tests/strategies.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@
``hypothesis`` strategies for generating OpaqueKey objects.
"""

from functools import update_wrapper
from functools import singledispatch, update_wrapper
import string
from six import text_type

from hypothesis import strategies, assume
from hypothesis.strategies._internal.core import cacheable
from singledispatch import singledispatch

from opaque_keys.edx.block_types import BlockTypeKeyV1, XBLOCK_V1, XMODULE_V1
from opaque_keys.edx.asides import (
Expand Down
9 changes: 6 additions & 3 deletions requirements/constraints.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
# pin when possible. Writing an issue against the offending project and
# linking to it here is good.

# These packages are backports which can only be installed on Python 2.7
functools32 ; python_version == "2.7"
futures ; python_version == "2.7"
# pytest command fails if pytest > 5.3 is used
# Look into https://github.com/pytest-dev/pytest/issues/6925
pytest<=5.3

# version >= 0.16 requires pytest >= 5.4
pytest-pylint<0.16
63 changes: 27 additions & 36 deletions requirements/dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,90 +7,81 @@
alabaster==0.7.12 # via -r requirements/doc.txt, sphinx
apipkg==1.5 # via -r requirements/doc.txt, execnet
appdirs==1.4.3 # via -r requirements/travis.txt, virtualenv
astroid==1.6.6 # via -r requirements/doc.txt, pylint, pylint-celery
atomicwrites==1.3.0 # via -r requirements/doc.txt, pytest
astroid==2.3.3 # via -r requirements/doc.txt, pylint, pylint-celery
attrs==19.3.0 # via -r requirements/doc.txt, hypothesis, pytest
babel==2.8.0 # via -r requirements/doc.txt, sphinx
backports.functools-lru-cache==1.6.1 # via -r requirements/doc.txt, astroid, isort, pylint
bleach==3.1.4 # via -r requirements/doc.txt, readme-renderer
certifi==2020.4.5.1 # via -r requirements/doc.txt, -r requirements/travis.txt, requests, urllib3
cffi==1.14.0 # via -r requirements/travis.txt, cryptography
certifi==2020.4.5.1 # via -r requirements/doc.txt, -r requirements/travis.txt, requests
chardet==3.0.4 # via -r requirements/doc.txt, -r requirements/travis.txt, requests
click-log==0.3.2 # via -r requirements/doc.txt, edx-lint
click==7.1.1 # via -r requirements/doc.txt, -r requirements/pip-tools.txt, click-log, edx-lint, pip-tools
configparser==4.0.2 # via -r requirements/doc.txt, -r requirements/travis.txt, importlib-metadata, pylint
contextlib2==0.6.0.post1 # via -r requirements/doc.txt, -r requirements/travis.txt, importlib-metadata, importlib-resources, virtualenv, zipp
click==7.1.2 # via -r requirements/doc.txt, -r requirements/pip-tools.txt, click-log, edx-lint, pip-tools
coverage==5.1 # via -r requirements/doc.txt, -r requirements/travis.txt, coveralls, pytest-cov
coveralls==1.11.1 # via -r requirements/travis.txt
cryptography==2.9.2 # via -r requirements/travis.txt, pyopenssl, urllib3
coveralls==2.0.0 # via -r requirements/travis.txt
ddt==1.3.1 # via -r requirements/doc.txt
distlib==0.3.0 # via -r requirements/travis.txt, virtualenv
docopt==0.6.2 # via -r requirements/travis.txt, coveralls
docutils==0.16 # via -r requirements/doc.txt, readme-renderer, sphinx
edx-lint==1.4.1 # via -r requirements/doc.txt
edx-sphinx-theme==1.5.0 # via -r requirements/doc.txt
enum34==1.1.10 # via -r requirements/doc.txt, -r requirements/travis.txt, astroid, cryptography, hypothesis
execnet==1.7.1 # via -r requirements/doc.txt, pytest-cache, pytest-xdist
filelock==3.0.12 # via -r requirements/travis.txt, tox, virtualenv
funcsigs==1.0.2 # via -r requirements/doc.txt, mock, pytest
futures==3.3.0 ; python_version == "2.7" # via -c requirements/constraints.txt, -r requirements/doc.txt, isort
hypothesis==4.57.1 # via -r requirements/doc.txt
idna==2.9 # via -r requirements/doc.txt, -r requirements/travis.txt, requests, urllib3
hypothesis==5.10.4 # via -r requirements/doc.txt
idna==2.9 # via -r requirements/doc.txt, -r requirements/travis.txt, requests
imagesize==1.2.0 # via -r requirements/doc.txt, sphinx
importlib-metadata==1.6.0 # via -r requirements/doc.txt, -r requirements/travis.txt, importlib-resources, pluggy, pytest, tox, virtualenv
importlib-resources==1.4.0 # via -r requirements/travis.txt, virtualenv
ipaddress==1.0.23 # via -r requirements/travis.txt, cryptography, urllib3
importlib-resources==1.5.0 # via -r requirements/travis.txt, virtualenv
isort==4.3.21 # via -r requirements/doc.txt, pylint
jinja2==2.11.2 # via -r requirements/doc.txt, sphinx
lazy-object-proxy==1.4.3 # via -r requirements/doc.txt, astroid
markupsafe==1.1.1 # via -r requirements/doc.txt, jinja2
mccabe==0.6.1 # via -r requirements/doc.txt, pylint
mock==3.0.5 # via -r requirements/doc.txt
more-itertools==5.0.0 # via -r requirements/doc.txt, pytest
more-itertools==8.2.0 # via -r requirements/doc.txt, pytest
packaging==20.3 # via -r requirements/doc.txt, -r requirements/travis.txt, pytest, sphinx, tox
pathlib2==2.3.5 # via -r requirements/doc.txt, -r requirements/travis.txt, importlib-metadata, importlib-resources, pytest, virtualenv
pathlib2==2.3.5 # via -r requirements/doc.txt, pytest
pbr==5.4.5 # via -r requirements/doc.txt, stevedore
pep8==1.7.1 # via -r requirements/doc.txt, pytest-pep8
pip-tools==5.0.0 # via -r requirements/pip-tools.txt
pip-tools==5.1.0 # via -r requirements/pip-tools.txt
pluggy==0.13.1 # via -r requirements/doc.txt, -r requirements/travis.txt, pytest, tox
py==1.8.1 # via -r requirements/doc.txt, -r requirements/travis.txt, pytest, tox
pycodestyle==2.5.0 # via -r requirements/doc.txt
pycparser==2.20 # via -r requirements/travis.txt, cffi
pygments==2.5.2 # via -r requirements/doc.txt, readme-renderer, sphinx
pygments==2.6.1 # via -r requirements/doc.txt, readme-renderer, sphinx
pylint-celery==0.3 # via -r requirements/doc.txt, edx-lint
pylint-django==0.11.1 # via -r requirements/doc.txt, edx-lint
pylint-django==2.0.11 # via -r requirements/doc.txt, edx-lint
pylint-plugin-utils==0.6 # via -r requirements/doc.txt, pylint-celery, pylint-django
pylint==1.9.5 # via -r requirements/doc.txt, edx-lint, pylint-celery, pylint-django, pylint-plugin-utils, pytest-pylint
pylint==2.4.2 # via -r requirements/doc.txt, edx-lint, pylint-celery, pylint-django, pylint-plugin-utils, pytest-pylint
pymongo==3.10.1 # via -r requirements/doc.txt
pyopenssl==19.1.0 # via -r requirements/travis.txt, urllib3
pyparsing==2.4.7 # via -r requirements/doc.txt, -r requirements/travis.txt, packaging
pytest-cache==1.0 # via -r requirements/doc.txt, pytest-pep8
pytest-cov==2.8.1 # via -r requirements/doc.txt
pytest-forked==1.1.3 # via -r requirements/doc.txt, pytest-xdist
pytest-pep8==1.0.6 # via -r requirements/doc.txt
pytest-pylint==0.14.1 # via -r requirements/doc.txt
pytest-pylint==0.15.1 # via -c requirements/constraints.txt, -r requirements/doc.txt
pytest-xdist==1.31.0 # via -r requirements/doc.txt
pytest==4.6.9 # via -r requirements/doc.txt, pytest-cache, pytest-cov, pytest-forked, pytest-pep8, pytest-pylint, pytest-xdist
pytz==2019.3 # via -r requirements/doc.txt, babel
pytest==5.3.0 # via -c requirements/constraints.txt, -r requirements/doc.txt, pytest-cache, pytest-cov, pytest-forked, pytest-pep8, pytest-pylint, pytest-xdist
pytz==2020.1 # via -r requirements/doc.txt, babel
readme-renderer==26.0 # via -r requirements/doc.txt
requests==2.23.0 # via -r requirements/doc.txt, -r requirements/travis.txt, coveralls, sphinx
scandir==1.10.0 # via -r requirements/doc.txt, -r requirements/travis.txt, pathlib2
singledispatch==3.4.0.3 # via -r requirements/doc.txt, -r requirements/travis.txt, astroid, importlib-resources, pylint
six==1.14.0 # via -r requirements/doc.txt, -r requirements/pip-tools.txt, -r requirements/travis.txt, astroid, bleach, cryptography, edx-lint, edx-sphinx-theme, mock, more-itertools, packaging, pathlib2, pip-tools, pylint, pyopenssl, pytest, pytest-pylint, pytest-xdist, readme-renderer, singledispatch, sphinx, stevedore, tox, virtualenv
six==1.14.0 # via -r requirements/doc.txt, -r requirements/pip-tools.txt, -r requirements/travis.txt, astroid, bleach, edx-lint, edx-sphinx-theme, mock, packaging, pathlib2, pip-tools, pytest-xdist, readme-renderer, stevedore, tox, virtualenv
snowballstemmer==2.0.0 # via -r requirements/doc.txt, sphinx
sortedcontainers==2.1.0 # via -r requirements/doc.txt, hypothesis
sphinx==1.8.5 # via -r requirements/doc.txt, edx-sphinx-theme
sphinxcontrib-websupport==1.1.2 # via -r requirements/doc.txt, sphinx
sphinx==3.0.3 # via -r requirements/doc.txt, edx-sphinx-theme
sphinxcontrib-applehelp==1.0.2 # via -r requirements/doc.txt, sphinx
sphinxcontrib-devhelp==1.0.2 # via -r requirements/doc.txt, sphinx
sphinxcontrib-htmlhelp==1.0.3 # via -r requirements/doc.txt, sphinx
sphinxcontrib-jsmath==1.0.1 # via -r requirements/doc.txt, sphinx
sphinxcontrib-qthelp==1.0.3 # via -r requirements/doc.txt, sphinx
sphinxcontrib-serializinghtml==1.1.4 # via -r requirements/doc.txt, sphinx
stevedore==1.32.0 # via -r requirements/doc.txt
toml==0.10.0 # via -r requirements/travis.txt, tox
tox-battery==0.5.2 # via -r requirements/travis.txt
tox==3.14.6 # via -r requirements/travis.txt, tox-battery
typing==3.7.4.1 # via -r requirements/doc.txt, -r requirements/travis.txt, importlib-resources, sphinx
urllib3[secure]==1.25.9 # via -r requirements/doc.txt, -r requirements/travis.txt, coveralls, requests
typed-ast==1.4.1 # via -r requirements/doc.txt, astroid
urllib3==1.25.9 # via -r requirements/doc.txt, -r requirements/travis.txt, requests
virtualenv==20.0.18 # via -r requirements/travis.txt, tox
wcwidth==0.1.9 # via -r requirements/doc.txt, pytest
webencodings==0.5.1 # via -r requirements/doc.txt, bleach
wrapt==1.12.1 # via -r requirements/doc.txt, astroid
wrapt==1.11.2 # via -r requirements/doc.txt, astroid
zipp==1.2.0 # via -r requirements/doc.txt, -r requirements/travis.txt, importlib-metadata, importlib-resources

# The following packages are considered to be unsafe in a requirements file:
Expand Down
35 changes: 14 additions & 21 deletions requirements/django-test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,55 +5,48 @@
# make upgrade
#
apipkg==1.5 # via -r requirements/test.txt, execnet
astroid==1.6.6 # via -r requirements/test.txt, pylint, pylint-celery
atomicwrites==1.3.0 # via -r requirements/test.txt, pytest
astroid==2.3.3 # via -r requirements/test.txt, pylint, pylint-celery
attrs==19.3.0 # via -r requirements/test.txt, hypothesis, pytest
backports.functools-lru-cache==1.6.1 # via -r requirements/test.txt, astroid, isort, pylint
click-log==0.3.2 # via -r requirements/test.txt, edx-lint
click==7.1.1 # via -r requirements/test.txt, click-log, edx-lint
configparser==4.0.2 # via -r requirements/test.txt, importlib-metadata, pylint
contextlib2==0.6.0.post1 # via -r requirements/test.txt, importlib-metadata, zipp
click==7.1.2 # via -r requirements/test.txt, click-log, edx-lint
coverage==5.1 # via -r requirements/test.txt, pytest-cov
ddt==1.3.1 # via -r requirements/test.txt
edx-lint==1.4.1 # via -r requirements/test.txt
enum34==1.1.10 # via -r requirements/test.txt, astroid, hypothesis
execnet==1.7.1 # via -r requirements/test.txt, pytest-cache, pytest-xdist
funcsigs==1.0.2 # via -r requirements/test.txt, mock, pytest
futures==3.3.0 ; python_version == "2.7" # via -c requirements/constraints.txt, -r requirements/test.txt, isort
hypothesis==4.57.1 # via -r requirements/test.txt
hypothesis==5.10.4 # via -r requirements/test.txt
importlib-metadata==1.6.0 # via -r requirements/test.txt, pluggy, pytest
isort==4.3.21 # via -r requirements/test.txt, pylint
lazy-object-proxy==1.4.3 # via -r requirements/test.txt, astroid
mccabe==0.6.1 # via -r requirements/test.txt, pylint
mock==3.0.5 # via -r requirements/test.txt
more-itertools==5.0.0 # via -r requirements/test.txt, pytest
more-itertools==8.2.0 # via -r requirements/test.txt, pytest
packaging==20.3 # via -r requirements/test.txt, pytest
pathlib2==2.3.5 # via -r requirements/test.txt, importlib-metadata, pytest, pytest-django
pathlib2==2.3.5 # via -r requirements/test.txt, pytest
pbr==5.4.5 # via -r requirements/test.txt, stevedore
pep8==1.7.1 # via -r requirements/test.txt, pytest-pep8
pluggy==0.13.1 # via -r requirements/test.txt, pytest
py==1.8.1 # via -r requirements/test.txt, pytest
pycodestyle==2.5.0 # via -r requirements/test.txt
pylint-celery==0.3 # via -r requirements/test.txt, edx-lint
pylint-django==0.11.1 # via -r requirements/test.txt, edx-lint
pylint-django==2.0.11 # via -r requirements/test.txt, edx-lint
pylint-plugin-utils==0.6 # via -r requirements/test.txt, pylint-celery, pylint-django
pylint==1.9.5 # via -r requirements/test.txt, edx-lint, pylint-celery, pylint-django, pylint-plugin-utils, pytest-pylint
pylint==2.4.2 # via -r requirements/test.txt, edx-lint, pylint-celery, pylint-django, pylint-plugin-utils, pytest-pylint
pymongo==3.10.1 # via -r requirements/test.txt
pyparsing==2.4.7 # via -r requirements/test.txt, packaging
pytest-cache==1.0 # via -r requirements/test.txt, pytest-pep8
pytest-cov==2.8.1 # via -r requirements/test.txt
pytest-django==3.9.0 # via -r requirements/django-test.in
pytest-forked==1.1.3 # via -r requirements/test.txt, pytest-xdist
pytest-pep8==1.0.6 # via -r requirements/test.txt
pytest-pylint==0.14.1 # via -r requirements/test.txt
pytest-pylint==0.15.1 # via -c requirements/constraints.txt, -r requirements/test.txt
pytest-xdist==1.31.0 # via -r requirements/test.txt
pytest==4.6.9 # via -r requirements/test.txt, pytest-cache, pytest-cov, pytest-django, pytest-forked, pytest-pep8, pytest-pylint, pytest-xdist
pytz==2019.3 # via -r requirements/django.txt, django
scandir==1.10.0 # via -r requirements/test.txt, pathlib2
singledispatch==3.4.0.3 # via -r requirements/test.txt, astroid, pylint
six==1.14.0 # via -r requirements/test.txt, astroid, edx-lint, mock, more-itertools, packaging, pathlib2, pylint, pytest, pytest-pylint, pytest-xdist, singledispatch, stevedore
pytest==5.3.0 # via -c requirements/constraints.txt, -r requirements/test.txt, pytest-cache, pytest-cov, pytest-django, pytest-forked, pytest-pep8, pytest-pylint, pytest-xdist
pytz==2020.1 # via -r requirements/django.txt, django
six==1.14.0 # via -r requirements/test.txt, astroid, edx-lint, mock, packaging, pathlib2, pytest-xdist, stevedore
sortedcontainers==2.1.0 # via -r requirements/test.txt, hypothesis
sqlparse==0.3.1 # via -r requirements/django.txt, django
stevedore==1.32.0 # via -r requirements/test.txt
typed-ast==1.4.1 # via -r requirements/test.txt, astroid
wcwidth==0.1.9 # via -r requirements/test.txt, pytest
wrapt==1.12.1 # via -r requirements/test.txt, astroid
wrapt==1.11.2 # via -r requirements/test.txt, astroid
zipp==1.2.0 # via -r requirements/test.txt, importlib-metadata
2 changes: 1 addition & 1 deletion requirements/django.in
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
-c base.txt


Django>=1.11
Django>=2.2,<3.0
5 changes: 3 additions & 2 deletions requirements/django.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@
#
# make upgrade
#
django==1.11.29 # via -r requirements/django.in
pytz==2019.3 # via django
django==2.2.12 # via -r requirements/django.in
pytz==2020.1 # via django
sqlparse==0.3.1 # via django
Loading