diff --git a/requirements/constraints.txt b/requirements/constraints.txt
index ac979ed3b8fe491ed272154ef556d93a5fd10a9c..055f7867c18eddaf7ed04da8ea6cef6d447b2817 100644
--- a/requirements/constraints.txt
+++ b/requirements/constraints.txt
@@ -13,9 +13,6 @@
 # (although it is advertised in the changelog as 3.1.26.)
 celery>=3.1.25,<4.0.0
 
-# Constrain until https://github.com/datadriventests/ddt/issues/83 is fixed.
-ddt<1.4.0
-
 # Stay on the latest LTS release of Django
 Django<2.3
 
diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt
index 2ef50186964f43ea5127e969c728f70379291d9b..45016127b7870b254e762929c46c2e4d7b2f6436 100644
--- a/requirements/edx/base.txt
+++ b/requirements/edx/base.txt
@@ -46,7 +46,7 @@ coreschema==0.0.4         # via coreapi, drf-yasg
 crowdsourcehinter-xblock==0.6  # via -r requirements/edx/base.in
 cryptography==2.9.2       # via -r requirements/edx/../edx-sandbox/shared.txt, django-fernet-fields, edx-enterprise, social-auth-core
 cssutils==1.0.2           # via pynliner
-ddt==1.3.1                # via -c requirements/edx/../constraints.txt, xblock-drag-and-drop-v2, xblock-poll
+ddt==1.4.1                # via xblock-drag-and-drop-v2, xblock-poll
 decorator==4.4.2          # via pycontracts
 defusedxml==0.6.0         # via -r requirements/edx/base.in, djangorestframework-xml, ora2, python3-openid, python3-saml, safe-lxml, social-auth-core
 django-appconf==1.0.4     # via -r requirements/edx/base.in, django-statici18n
diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt
index 0cb613eb2c775a29f66e4f2169a6b1371e4dcef0..c6a7c11984c8f9f805f44f12fea299b602b5d369 100644
--- a/requirements/edx/development.txt
+++ b/requirements/edx/development.txt
@@ -55,7 +55,7 @@ crowdsourcehinter-xblock==0.6  # via -r requirements/edx/testing.txt
 cryptography==2.9.2       # via -r requirements/edx/testing.txt, django-fernet-fields, edx-enterprise, social-auth-core
 cssselect==1.1.0          # via -r requirements/edx/testing.txt, pyquery
 cssutils==1.0.2           # via -r requirements/edx/testing.txt, pynliner
-ddt==1.3.1                # via -c requirements/edx/../constraints.txt, -r requirements/edx/testing.txt, xblock-drag-and-drop-v2, xblock-poll
+ddt==1.4.1                # via -r requirements/edx/testing.txt, xblock-drag-and-drop-v2, xblock-poll
 decorator==4.4.2          # via -r requirements/edx/testing.txt, pycontracts
 defusedxml==0.6.0         # via -r requirements/edx/testing.txt, djangorestframework-xml, ora2, python3-openid, python3-saml, safe-lxml, social-auth-core
 diff-cover==3.0.1         # via -r requirements/edx/testing.txt
diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt
index 6195d7e920b344b35ff99832e54a3df2f347b6a6..3445218e45578dafe65ca639cab88c1d363493c1 100644
--- a/requirements/edx/testing.txt
+++ b/requirements/edx/testing.txt
@@ -54,7 +54,7 @@ crowdsourcehinter-xblock==0.6  # via -r requirements/edx/base.txt
 cryptography==2.9.2       # via -r requirements/edx/base.txt, django-fernet-fields, edx-enterprise, social-auth-core
 cssselect==1.1.0          # via -r requirements/edx/testing.in, pyquery
 cssutils==1.0.2           # via -r requirements/edx/base.txt, pynliner
-ddt==1.3.1                # via -c requirements/edx/../constraints.txt, -r requirements/edx/base.txt, -r requirements/edx/testing.in, xblock-drag-and-drop-v2, xblock-poll
+ddt==1.4.1                # via -r requirements/edx/base.txt, -r requirements/edx/testing.in, xblock-drag-and-drop-v2, xblock-poll
 decorator==4.4.2          # via -r requirements/edx/base.txt, pycontracts
 defusedxml==0.6.0         # via -r requirements/edx/base.txt, djangorestframework-xml, ora2, python3-openid, python3-saml, safe-lxml, social-auth-core
 diff-cover==3.0.1         # via -r requirements/edx/coverage.txt