Skip to content

race condition replacing a setuptools dependency IOError METADATA no such file #951

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

Closed
InbarRose opened this issue Jan 31, 2017 · 25 comments
Labels

Comments

@InbarRose
Copy link

InbarRose commented Jan 31, 2017

This is a strange one.
I have narrowed it down to setuptools new version (patch) as the only thing that has changed recently that causes a flow to break. I have reduced the problem to the bare minimum, but the flow that is actually occurring is a bit more complicated, here are the minimum steps needed to reproduce the problem.

I have been installing junit-xml and zope.interface in a test environment using the following command:

python -m pip install --upgrade --force-reinstall junit-xml zope.interface

This is the output:

Collecting junit-xml
  Using cached junit-xml-1.7.tar.gz
Collecting zope.interface
  Using cached zope.interface-4.3.3-cp27-cp27m-win_amd64.whl
Collecting six (from junit-xml)
  Using cached six-1.10.0-py2.py3-none-any.whl
Collecting setuptools (from zope.interface)
  Using cached setuptools-34.1.0-py2.py3-none-any.whl
Collecting appdirs>=1.4.0 (from setuptools->zope.interface)
  Using cached appdirs-1.4.0-py2.py3-none-any.whl
Collecting packaging>=16.8 (from setuptools->zope.interface)
  Using cached packaging-16.8-py2.py3-none-any.whl
Collecting pyparsing (from packaging>=16.8->setuptools->zope.interface)
  Using cached pyparsing-2.1.10-py2.py3-none-any.whl
Installing collected packages: six, junit-xml, appdirs, pyparsing, packaging, setuptools, zope.interface
  Found existing installation: six 1.10.0
    Uninstalling six-1.10.0:
      Successfully uninstalled six-1.10.0
  Rolling back uninstall of six
Exception:
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\pip\basecommand.py", line 215, in main
    status = self.run(options, args)
  File "C:\Python27\lib\site-packages\pip\commands\install.py", line 342, in run
    prefix=options.prefix_path,
  File "C:\Python27\lib\site-packages\pip\req\req_set.py", line 784, in install
    **kwargs
  File "C:\Python27\lib\site-packages\pip\req\req_install.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "C:\Python27\lib\site-packages\pip\req\req_install.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "C:\Python27\lib\site-packages\pip\wheel.py", line 247, in move_wheel_files
    prefix=prefix,
  File "C:\Python27\lib\site-packages\pip\locations.py", line 140, in distutils_scheme
    d = Distribution(dist_args)
  File "C:\Python27\lib\site-packages\setuptools\dist.py", line 320, in __init__
    _Distribution.__init__(self, attrs)
  File "C:\Python27\lib\distutils\dist.py", line 287, in __init__
    self.finalize_options()
  File "C:\Python27\lib\site-packages\setuptools\dist.py", line 386, in finalize_options
    ep.require(installer=self.fetch_build_egg)
  File "C:\Python27\lib\site-packages\pkg_resources\__init__.py", line 2318, in require
    items = working_set.resolve(reqs, env, installer, extras=self.extras)
  File "C:\Python27\lib\site-packages\pkg_resources\__init__.py", line 862, in resolve
    new_requirements = dist.requires(req.extras)[::-1]
  File "C:\Python27\lib\site-packages\pkg_resources\__init__.py", line 2562, in requires
    dm = self._dep_map
  File "C:\Python27\lib\site-packages\pkg_resources\__init__.py", line 2809, in _dep_map
    self.__dep_map = self._compute_dependencies()
  File "C:\Python27\lib\site-packages\pkg_resources\__init__.py", line 2818, in _compute_dependencies
    for req in self._parsed_pkg_info.get_all('Requires-Dist') or []:
  File "C:\Python27\lib\site-packages\pkg_resources\__init__.py", line 2800, in _parsed_pkg_info
    metadata = self.get_metadata(self.PKG_INFO)
  File "C:\Python27\lib\site-packages\pkg_resources\__init__.py", line 1468, in get_metadata
    value = self._get(self._fn(self.egg_info, name))
  File "C:\Python27\lib\site-packages\pkg_resources\__init__.py", line 1577, in _get
    with open(path, 'rb') as stream:
IOError: [Errno 2] No such file or directory: 'c:\\python27\\lib\\site-packages\\six-1.10.0.dist-info\\METADATA'

However, the file DOES exist. (the path displayed is not the correct case of the actual path though, which is C:\Python27\Lib\site-packages\six-1.10.0.dist-info\metadata

uninstalling everything and then trying the command again yields the same result.
changing the command to remove the upgrade or the force reinstall does not have the same problem.

this is very weird, and the only thing that changed is the new version of setuptools

@jaraco jaraco changed the title strange issue with new setuptools version when installing six as a dependency (missing metadata file) race condition replacing a setuptools dependency IOError METADATA no such file Jan 31, 2017
@jaraco
Copy link
Member

jaraco commented Jan 31, 2017

Thanks for this report. What you have here is a key failure with the new Setuptools 34, and it's affecting a lot of other users as well.

However, the file DOES exist.

Actually, I suspect at the time the traceback occurs, the file does not exist.

Installing collected packages: six, junit-xml, appdirs, pyparsing, packaging, setuptools, zope.interface
  Found existing installation: six 1.10.0
    Uninstalling six-1.10.0:
                       <--- Metadata is removed
      Successfully uninstalled six-1.10.0
                       <--- Here's where the traceback occurs
  Rolling back uninstall of six
                       <--- Old metadata is replaced

The issue is that the forced reinstall of six is creating a momentary condition where six doesn't exist and setuptools is in an invalid state... and in the process of installing six (from a wheel), pip is building a Distribution which is a setuptools construct that attempts to query for that metadata and can't do so.

This issue would likely affect anyone attempting to upgrade or downgrade any of the setuptools dependencies (or force-reinstall).

Someone will need to investigate into the pip logic there and determine if there's a way it can avoid invoking setuptools while dependencies are in flux... or maybe if setuptools can somehow serve this use case while its dependencies are in flux.

@InbarRose
Copy link
Author

This only started happening since the patch a day or two ago.

Probably from Jan 28.

I may be wrong and it's unrelated, but this is where my sleuthing got me.

The problem is that I can't install each dependency individually, because once I run the --force-reinstall, it also reinstall the dependencies.

@thuandt
Copy link

thuandt commented Feb 6, 2017

I got same problem since last days of January

@adangert
Copy link

adangert commented Feb 9, 2017

same problem here.

@jaraco
Copy link
Member

jaraco commented Feb 9, 2017

I think the problem lies with pip, hence why I filed the upstream issue. I did just try replicating the failure but found it's not enough simply to upgrade six:

$ python -m venv ~/.envs/issue-951
$ ~/.envs/issue-951/bin/pip install -U setuptools
Collecting setuptools
  Using cached setuptools-34.1.1-py2.py3-none-any.whl
Collecting packaging>=16.8 (from setuptools)
  Using cached packaging-16.8-py2.py3-none-any.whl
Collecting six>=1.6.0 (from setuptools)
  Using cached six-1.10.0-py2.py3-none-any.whl
Collecting appdirs>=1.4.0 (from setuptools)
  Using cached appdirs-1.4.0-py2.py3-none-any.whl
Collecting pyparsing (from packaging>=16.8->setuptools)
  Using cached pyparsing-2.1.10-py2.py3-none-any.whl
Installing collected packages: six, pyparsing, packaging, appdirs, setuptools
  Found existing installation: setuptools 28.8.0
    Uninstalling setuptools-28.8.0:
      Successfully uninstalled setuptools-28.8.0
Successfully installed appdirs-1.4.0 packaging-16.8 pyparsing-2.1.10 setuptools-34.1.1 six-1.10.0
$ ~/.envs/issue-951/bin/pip install --upgrade --force-reinstall six
Collecting six
  Using cached six-1.10.0-py2.py3-none-any.whl
Installing collected packages: six
  Found existing installation: six 1.10.0
    Uninstalling six-1.10.0:
      Successfully uninstalled six-1.10.0
Successfully installed six-1.10.0

The issue is only triggered if I force-reinstall junit-xml or zope.interface (doesn't require both).

@jaraco
Copy link
Member

jaraco commented Feb 9, 2017

Here's the Python3 traceback, which provides a bit more detail:

$ ~/.envs/issue-951/bin/pip install --upgrade --force-reinstall junit-xml     
Collecting junit-xml
  Using cached junit-xml-1.7.tar.gz
Collecting six (from junit-xml)
  Using cached six-1.10.0-py2.py3-none-any.whl
Installing collected packages: six, junit-xml
  Found existing installation: six 1.10.0
    Uninstalling six-1.10.0:
      Successfully uninstalled six-1.10.0
  Rolling back uninstall of six
Exception:
Traceback (most recent call last):
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2807, in _dep_map
    return self.__dep_map
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2618, in __getattr__
    raise AttributeError(attr)
AttributeError: _DistInfoDistribution__dep_map

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2798, in _parsed_pkg_info
    return self._pkg_info
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2618, in __getattr__
    raise AttributeError(attr)
AttributeError: _pkg_info

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pip/req/req_set.py", line 784, in install
    **kwargs
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pip/req/req_install.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pip/req/req_install.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pip/wheel.py", line 247, in move_wheel_files
    prefix=prefix,
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pip/locations.py", line 140, in distutils_scheme
    d = Distribution(dist_args)
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/setuptools/dist.py", line 320, in __init__
    _Distribution.__init__(self, attrs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/dist.py", line 281, in __init__
    self.finalize_options()
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/setuptools/dist.py", line 386, in finalize_options
    ep.require(installer=self.fetch_build_egg)
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2318, in require
    items = working_set.resolve(reqs, env, installer, extras=self.extras)
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pkg_resources/__init__.py", line 862, in resolve
    new_requirements = dist.requires(req.extras)[::-1]
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2562, in requires
    dm = self._dep_map
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2809, in _dep_map
    self.__dep_map = self._compute_dependencies()
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2818, in _compute_dependencies
    for req in self._parsed_pkg_info.get_all('Requires-Dist') or []:
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2800, in _parsed_pkg_info
    metadata = self.get_metadata(self.PKG_INFO)
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1468, in get_metadata
    value = self._get(self._fn(self.egg_info, name))
  File "/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1577, in _get
    with open(path, 'rb') as stream:
FileNotFoundError: [Errno 2] No such file or directory: '/Users/jaraco/.envs/issue-951/lib/python3.6/site-packages/six-1.10.0.dist-info/METADATA'

If any one else has time to dive into this and try to ascertain the cause of the issue, I welcome it.

@MikeFalowski
Copy link

Temporary solution which worked for me was downgrading setuptools to version 32.

@mateimicu
Copy link

mateimicu commented Feb 10, 2017

Same problem here, I tried to downgrading setuptools to version 32 as @MikeFalowski suggested and it didn't worked for me

@jaraco
Copy link
Member

jaraco commented Feb 11, 2017

I've been able to hone the issue a bit. It can be replicated without any third party packages with a simple reinstall of six or packaging:

pip install --force-reinstall -U --no-binary :all: six

The --no-binary :all: is apparently required to cause setuptools to be invoked as part of the build. If pure wheel installs are used, the issue doesn't occur. Because junitxml dosen't have wheel distributions, it triggers the behavior.

@jaraco
Copy link
Member

jaraco commented Feb 11, 2017

Now this is wild - in an effort to debug, I tried using pdb to launch pip, but when I used pdb to invoke the $env/bin/pip script, the except gets caught by pip and a sys.exit is invoked, so pdb never handles the exception. So in an effort to bypass the sys.exit handler, I threw together a quick script to launch pip directly, but when I did, the error didn't occur:

$ cat > run-pip.py
import pip 
pip.main()       
$ python -m pdb run-pip.py install --force-reinstall -U --no-binary :all: six
> /Users/jaraco/Dropbox/code/public/packaging/run-pip.py(1)<module>()
-> import pip
(Pdb) c
Collecting six
  Using cached six-1.10.0.tar.gz
Installing collected packages: six
  Found existing installation: six 1.10.0
    Uninstalling six-1.10.0:
      Successfully uninstalled six-1.10.0
  Running setup.py install for six ... done
Successfully installed six-1.10.0
The program finished and will be restarted
> /Users/jaraco/Dropbox/code/public/packaging/run-pip.py(1)<module>()
-> import pip

At which point I realized that the issue also doesn't occur when invoking pip via module invocation:

$ python -m pip install --force-reinstall -U --no-binary :all: six
Collecting six
  Using cached six-1.10.0.tar.gz
Installing collected packages: six
  Found existing installation: six 1.10.0
    Uninstalling six-1.10.0:
      Successfully uninstalled six-1.10.0
  Running setup.py install for six ... done
Successfully installed six-1.10.0

@jaraco
Copy link
Member

jaraco commented Feb 11, 2017

Well, scratch all that. My recipe for replicating the failure is no longer triggering the failure.

@jaraco
Copy link
Member

jaraco commented Feb 11, 2017

The issue seems only to happen once per install of six. After the error occurs once, it stops happening:

$ pip uninstall -y six 
Uninstalling six-1.10.0:
  Successfully uninstalled six-1.10.0
$ pip install --force-reinstall -U six                  
Collecting six
  Using cached six-1.10.0-py2.py3-none-any.whl
Installing collected packages: six
Successfully installed six-1.10.0
$ pip install --force-reinstall -U --no-binary :all: six
Collecting six
  Using cached six-1.10.0.tar.gz
Installing collected packages: six
  Found existing installation: six 1.10.0
    Uninstalling six-1.10.0:
      Successfully uninstalled six-1.10.0
  Running setup.py install for six ... done
Exception:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2807, in _dep_map
    return self.__dep_map
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2618, in __getattr__
    raise AttributeError(attr)
AttributeError: _DistInfoDistribution__dep_map

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2798, in _parsed_pkg_info
    return self._pkg_info
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2618, in __getattr__
    raise AttributeError(attr)
AttributeError: _pkg_info

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pip/commands/install.py", line 350, in run
    isolated=options.isolated_mode,
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pip/commands/install.py", line 436, in get_lib_location_guesses
    scheme = distutils_scheme('', *args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pip/locations.py", line 140, in distutils_scheme
    d = Distribution(dist_args)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/setuptools/dist.py", line 320, in __init__
    _Distribution.__init__(self, attrs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/dist.py", line 281, in __init__
    self.finalize_options()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/setuptools/dist.py", line 386, in finalize_options
    ep.require(installer=self.fetch_build_egg)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2318, in require
    items = working_set.resolve(reqs, env, installer, extras=self.extras)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 862, in resolve
    new_requirements = dist.requires(req.extras)[::-1]
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2562, in requires
    dm = self._dep_map
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2809, in _dep_map
    self.__dep_map = self._compute_dependencies()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2818, in _compute_dependencies
    for req in self._parsed_pkg_info.get_all('Requires-Dist') or []:
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2800, in _parsed_pkg_info
    metadata = self.get_metadata(self.PKG_INFO)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1468, in get_metadata
    value = self._get(self._fn(self.egg_info, name))
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1577, in _get
    with open(path, 'rb') as stream:
FileNotFoundError: [Errno 2] No such file or directory: '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/six-1.10.0.dist-info/METADATA'
$ pip install --force-reinstall -U --no-binary :all: six
Collecting six
  Using cached six-1.10.0.tar.gz
Installing collected packages: six
  Found existing installation: six 1.10.0
    Uninstalling six-1.10.0:
      Successfully uninstalled six-1.10.0
  Running setup.py install for six ... done
Successfully installed six-1.10.0
$ pip install --force-reinstall -U --no-binary :all: six
Collecting six
  Using cached six-1.10.0.tar.gz
Installing collected packages: six
  Found existing installation: six 1.10.0
    Uninstalling six-1.10.0:
      Successfully uninstalled six-1.10.0
  Running setup.py install for six ... done
Successfully installed six-1.10.0
$ pip install --force-reinstall -U --no-binary :all: six
Collecting six
  Using cached six-1.10.0.tar.gz
Installing collected packages: six
  Found existing installation: six 1.10.0
    Uninstalling six-1.10.0:
      Successfully uninstalled six-1.10.0
  Running setup.py install for six ... done
Successfully installed six-1.10.0
$ pip install --force-reinstall -U --no-binary :all: six
Collecting six
  Using cached six-1.10.0.tar.gz
Installing collected packages: six
  Found existing installation: six 1.10.0
    Uninstalling six-1.10.0:
      Successfully uninstalled six-1.10.0
  Running setup.py install for six ... done
Successfully installed six-1.10.0
$ pip install --force-reinstall -U --no-binary :all: six
Collecting six
  Using cached six-1.10.0.tar.gz
Installing collected packages: six
  Found existing installation: six 1.10.0
    Uninstalling six-1.10.0:
      Successfully uninstalled six-1.10.0
  Running setup.py install for six ... done
Successfully installed six-1.10.0
$ pip uninstall -y six                                  
Uninstalling six-1.10.0:
  Successfully uninstalled six-1.10.0
$ pip install six                                       
Collecting six
  Using cached six-1.10.0-py2.py3-none-any.whl
Installing collected packages: six
Successfully installed six-1.10.0
$ pip install --force-reinstall -U --no-binary :all: six
Collecting six
  Using cached six-1.10.0.tar.gz
Installing collected packages: six
  Found existing installation: six 1.10.0
    Uninstalling six-1.10.0:
      Successfully uninstalled six-1.10.0
  Running setup.py install for six ... done
Exception:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2807, in _dep_map
    return self.__dep_map
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2618, in __getattr__
    raise AttributeError(attr)
AttributeError: _DistInfoDistribution__dep_map

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2798, in _parsed_pkg_info
    return self._pkg_info
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2618, in __getattr__
    raise AttributeError(attr)
AttributeError: _pkg_info

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pip/commands/install.py", line 350, in run
    isolated=options.isolated_mode,
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pip/commands/install.py", line 436, in get_lib_location_guesses
    scheme = distutils_scheme('', *args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pip/locations.py", line 140, in distutils_scheme
    d = Distribution(dist_args)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/setuptools/dist.py", line 320, in __init__
    _Distribution.__init__(self, attrs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/dist.py", line 281, in __init__
    self.finalize_options()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/setuptools/dist.py", line 386, in finalize_options
    ep.require(installer=self.fetch_build_egg)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2318, in require
    items = working_set.resolve(reqs, env, installer, extras=self.extras)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 862, in resolve
    new_requirements = dist.requires(req.extras)[::-1]
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2562, in requires
    dm = self._dep_map
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2809, in _dep_map
    self.__dep_map = self._compute_dependencies()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2818, in _compute_dependencies
    for req in self._parsed_pkg_info.get_all('Requires-Dist') or []:
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2800, in _parsed_pkg_info
    metadata = self.get_metadata(self.PKG_INFO)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1468, in get_metadata
    value = self._get(self._fn(self.egg_info, name))
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1577, in _get
    with open(path, 'rb') as stream:
FileNotFoundError: [Errno 2] No such file or directory: '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/six-1.10.0.dist-info/METADATA'
$ pip install --force-reinstall -U --no-binary :all: six
Collecting six
  Using cached six-1.10.0.tar.gz
Installing collected packages: six
  Found existing installation: six 1.10.0
    Uninstalling six-1.10.0:
      Successfully uninstalled six-1.10.0
  Running setup.py install for six ... done
Successfully installed six-1.10.0

@jaraco
Copy link
Member

jaraco commented Feb 12, 2017

Ahhh. So looking at the tracebacks I got above, I'm not even replicating the failure. I'm replicating another, essentially known failure, that pip can't build setuptools dependencies from source. Annoyingly, both of these failures fail with the same FileNotFoundError.

I was seeing it in the tracebacks when installing junitxml, however, so I'll see if I can break into pdb in those cases.

ulope added a commit to gridsingularity/gsy-e that referenced this issue Feb 23, 2017
@ulope
Copy link

ulope commented Feb 23, 2017

I've been hitting (what appears to be) the same bug but with appdirs instead of six

@frgtn
Copy link

frgtn commented Feb 23, 2017

appdirs also started breaking our CI builds this morning with the following traceback:

  Found existing installation: appdirs 1.4.1
    Uninstalling appdirs-1.4.1:
      Successfully uninstalled appdirs-1.4.1
  Rolling back uninstall of appdirs

Exception:
Traceback (most recent call last):
  File "virtualenv_path/lib/python3.4/site-packages/pkg_resources/__init__.py", line 2813, in _dep_map
    return self.__dep_map
  File "virtualenv_path/lib/python3.4/site-packages/pkg_resources/__init__.py", line 2624, in __getattr__
    raise AttributeError(attr)
AttributeError: _DistInfoDistribution__dep_map

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "virtualenv_path/lib/python3.4/site-packages/pkg_resources/__init__.py", line 2804, in _parsed_pkg_info
    return self._pkg_info
  File "virtualenv_path/lib/python3.4/site-packages/pkg_resources/__init__.py", line 2624, in __getattr__
    raise AttributeError(attr)
AttributeError: _pkg_info

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "virtualenv_path/lib/python3.4/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "virtualenv_path/lib/python3.4/site-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "virtualenv_path/lib/python3.4/site-packages/pip/req/req_set.py", line 784, in install
    **kwargs
  File "virtualenv_path/lib/python3.4/site-packages/pip/req/req_install.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "virtualenv_path/lib/python3.4/site-packages/pip/req/req_install.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "virtualenv_path/lib/python3.4/site-packages/pip/wheel.py", line 247, in move_wheel_files
    prefix=prefix,
  File "virtualenv_path/lib/python3.4/site-packages/pip/locations.py", line 140, in distutils_scheme
    d = Distribution(dist_args)
  File "virtualenv_path/lib/python3.4/site-packages/setuptools/dist.py", line 320, in __init__
    _Distribution.__init__(self, attrs)
  File "/usr/lib/python3.4/distutils/dist.py", line 280, in __init__
    self.finalize_options()
  File "virtualenv_path/lib/python3.4/site-packages/setuptools/dist.py", line 386, in finalize_options
    ep.require(installer=self.fetch_build_egg)
  File "virtualenv_path/lib/python3.4/site-packages/pkg_resources/__init__.py", line 2324, in require
    items = working_set.resolve(reqs, env, installer, extras=self.extras)
  File "virtualenv_path/lib/python3.4/site-packages/pkg_resources/__init__.py", line 862, in resolve
    new_requirements = dist.requires(req.extras)[::-1]
  File "virtualenv_path/lib/python3.4/site-packages/pkg_resources/__init__.py", line 2568, in requires
    dm = self._dep_map
  File "virtualenv_path/lib/python3.4/site-packages/pkg_resources/__init__.py", line 2815, in _dep_map
    self.__dep_map = self._compute_dependencies()
  File "virtualenv_path/lib/python3.4/site-packages/pkg_resources/__init__.py", line 2824, in _compute_dependencies
    for req in self._parsed_pkg_info.get_all('Requires-Dist') or []:
  File "virtualenv_path/lib/python3.4/site-packages/pkg_resources/__init__.py", line 2806, in _parsed_pkg_info
    metadata = self.get_metadata(self.PKG_INFO)
  File "virtualenv_path/lib/python3.4/site-packages/pkg_resources/__init__.py", line 1468, in get_metadata
    value = self._get(self._fn(self.egg_info, name))
  File "virtualenv_path/lib/python3.4/site-packages/pkg_resources/__init__.py", line 1577, in _get
    with open(path, 'rb') as stream:
FileNotFoundError: [Errno 2] No such file or directory: 'virtualenv_path/lib/python3.4/site-packages/appdirs-1.4.1.dist-info/METADATA'

Upon further investigation I found that the above exception is raised when downgrading from appdirs 1.4.1 down to 1.4.0 (since the latter was pinned automatically by piptools).

@aaugustin
Copy link

aaugustin commented Feb 23, 2017

I'm seeing the exact same problem as @frgtn -- my Circle CI builds started failing with this traceback when building a branch that still used appdirs 1.4.0 after building a branch that used 1.4.1.

@jaraco
Copy link
Member

jaraco commented Feb 23, 2017

I believe pypa/pip#4294 fixes this issue. You can try it out with

pip install git+https://github.com/jaraco/pip@hotfix/issue4264-2

openstack-gerrit pushed a commit to openstack/openstack-ansible that referenced this issue Feb 23, 2017
As per [1] and [2] setuptools 34.0.0-34.2.0 does not handle
re-installs or upgrades properly.

This patch reduces the version we use to the last known
good version.

[1] pypa/setuptools#951
[2] https://review.openstack.org/436948

Change-Id: Ic08f6d0035c4bbaa22412ad5f4176c2fe09cee3b
openstack-gerrit pushed a commit to openstack/openstack-ansible that referenced this issue Feb 23, 2017
As per [1] and [2] setuptools 34.0.0-34.2.0 does not handle
re-installs or upgrades properly.

This patch reduces the version we use to the last known
good version.

[1] pypa/setuptools#951
[2] https://review.openstack.org/436948

Change-Id: Ic08f6d0035c4bbaa22412ad5f4176c2fe09cee3b
(cherry picked from commit 6a8f21d)
openstack-gerrit pushed a commit to openstack/openstack that referenced this issue Feb 24, 2017
Project: openstack/requirements  705628e39674746e4bbeeefb7b5ca0dbe7571b3a

global-requirements: Avoid setuptools 34.0.0-34.2.0

setuptools seems to have some race issues when forcing a package
reinstallation with 'pip install --upgrade --force-reinstall' as
described in pypa/setuptools#951. Restrict
newer setuptools until a fixed package is released.

Change-Id: I8bc3f0e84b2812bbf7f8a9f54c870115ebbb052d
Link: pypa/setuptools#951
openstack-gerrit pushed a commit to openstack/requirements that referenced this issue Feb 24, 2017
setuptools seems to have some race issues when forcing a package
reinstallation with 'pip install --upgrade --force-reinstall' as
described in pypa/setuptools#951. Restrict
newer setuptools until a fixed package is released.

Change-Id: I8bc3f0e84b2812bbf7f8a9f54c870115ebbb052d
Link: pypa/setuptools#951
openstack-gerrit pushed a commit to openstack/openstack that referenced this issue Feb 24, 2017
Project: openstack/requirements  705628e39674746e4bbeeefb7b5ca0dbe7571b3a

global-requirements: Avoid setuptools 34.0.0-34.2.0

setuptools seems to have some race issues when forcing a package
reinstallation with 'pip install --upgrade --force-reinstall' as
described in pypa/setuptools#951. Restrict
newer setuptools until a fixed package is released.

Change-Id: I8bc3f0e84b2812bbf7f8a9f54c870115ebbb052d
Link: pypa/setuptools#951
jtdoepke added a commit to mintel/pytest-localstack that referenced this issue Feb 26, 2018
Seem to be running into [this](pypa/setuptools#951)
with Python 3.4 tests.
murrple-1 pushed a commit to murrple-1/password-hashing-python that referenced this issue Apr 3, 2018
Since it should be installed by default. Also, it was causing issues with the Travis build, related to this issue: pypa/setuptools#951
antonym pushed a commit to antonym/rpc-upgrades that referenced this issue Jul 3, 2018
remove six module to avoid hitting a bug in setuptools 34.1.0
pypa/setuptools#951
this will be reinstalled fresh during the redeploy of ansible
antonym pushed a commit to antonym/rpc-upgrades that referenced this issue Jul 3, 2018
remove six module to avoid hitting a bug in setuptools 34.1.0
pypa/setuptools#951
this will be reinstalled fresh during the redeploy of ansible
antonym pushed a commit to antonym/rpc-upgrades that referenced this issue Jul 5, 2018
remove six module to avoid hitting a bug in setuptools 34.1.0
pypa/setuptools#951
this will be reinstalled fresh during the redeploy of ansible
antonym pushed a commit to antonym/rpc-upgrades that referenced this issue Jul 5, 2018
remove six module to avoid hitting a bug in setuptools 34.1.0
pypa/setuptools#951
this will be reinstalled fresh during the redeploy of ansible
antonym pushed a commit to antonym/rpc-upgrades that referenced this issue Jul 5, 2018
remove six module to avoid hitting a bug in setuptools 34.1.0
pypa/setuptools#951
this will be reinstalled fresh during the redeploy of ansible
openstack-gerrit pushed a commit to openstack/openstack-ansible-ops that referenced this issue Jul 6, 2018
Avoids using setuptools 34.x as using it can hit this bug
when packages are being upgraded:

pypa/setuptools#951

Pinning to setuptools==33.1.1 also aligns to the
global-requirement-pins.txt in newton-eol

Change-Id: Ib33b828751c5a36d61448d148c5941beb6827c73
pomegranited pushed a commit to edx-olive-oc/edx-platform that referenced this issue Jul 17, 2018
stanford-online-robot added a commit to Stanford-Online/edx-platform that referenced this issue Dec 12, 2018
* origin/rc: (1175 commits)
  Update Free Text Response to v0.3.1
  Add timestamp to Get Student Responses Report.
  Move library creator checks to POST-only
  Revert "Revert "Merge pull request openedx#16447 from appsembler/omar/hide-library-button""
  Revert "Merge pull request openedx#16447 from appsembler/omar/hide-library-button"
  Hide the create library for non-staff users when DISABLE_COURSE_CREATION
  Fix inline analytics close button styling.
  Fix eslint errors in account settings js
  Push version of Free Text Response to v0.3.0
  Fix errors with enrollment api.
  Revive account settings fork for uneditable fields
  Check the correct setting to hide login button
  Repatriate test that was erroneously deleted.
  Efficiency improvement for EnrollmentRosterView and helper method.
  Remove spaces for pep8
  Fix syntax error with enrollment filter
  Fix problems with grade reports after removing anonymous|lti
  Remove fake users from Insructor Dash enrollment count.
  Exclude unauthenticated and lti users from the grade reports.
  Add course start date for email context lost in Ficus merge
  Add course start date for email context lost in Ficus merge
  Add missing keywords to validator lost from Ficus merge
  Remove HTML template version of the GradeMe Button
  Update JS translation strings for Ginkgo
  Update translation config for consolidated tos and honor
  Install Stanford ORA2 from master, v1.4.7
  Fix keyword sub to work with new course updates
  Try fix circle
  Unfork grade report
  Cleanup LMS skip decorator
  Pin eslint-config-edx-es5 to older, version
  Bump edx-proctoring to 0.19.1
  Bump ux-pattern-library
  Bump Stanford XBlocks w/ lazy translation
  Bump Peer Instruction XBlock to edX version
  updated correct map when new score is calculated
  Fixed score update on rescore
  EDUCATOR-165 instructor task and UI for overriding learner grades.
  Reroute help link to FAQ marketing link
  Add setting to support ORA2 default django storage
  Remove edx text from Facebook sharing
  Unfork course-about-sidebar to add back facebook
  Force hint notification to take up entire width.
  Stop hard-coding @edxonline twitter username
  Float staff buttons to stop them from disappearing
  Restore "rescore only if score improves" messaging
  Toggle donate/blog footer links
  Remove course about sidebar optional include
  Add sneakpeek tos bar to bottom of course nav
  Center all login/register forms
  Move sneakpeek SASS to separate file
  Fix bulk captions utility
  Add more multi-processor testing
  Unfork privacy policy on registration
  Monkey-patch global footer text and links
  Remove Stanford Research disclaimer from dashboard
  Hide extraneous links from navbar
  Restore Stanford's SOA text in account settings
  Fix progress page
  Use unicode strings in LTI test
  Synchronize query counts
  Import ugettext lazily
  Restore Stanford's age restriction
  Fix python imports post-merge
  Restore Stanford changes to course tile listing
  Reintroduce Stanford navigation changes
  Add Stanford settings for devstack_docker
  Consolidate enrollment_api code
  Remove LTI tests that build on top of flaky permission alert tests.
  Remove flaky lti scenario.
  Upgrade setuptools to avoid bug while installing of OpenStack requirements RE: pypa/setuptools#951
  Fix safe_lxml.  SEC-338
  Force early installs of Django and nltk to avoid pip confusion
  GMT -> UTC in test
  Pin Jasmine version to avoid failing js tests
  A new favicon for Open edX
  Fix i18n for the page title in course tabs
  Pin moment dependency
  Use django storage mechanism to determine file size
  Adds THIRD_PARTY_AUTH_HINT to SiteConfiguration and to site-wide setting.FEATURES
  Allow i18n strings to be scraped from openedx/features
  Host poisoning vulnerability fix
  Strip `c` from `.pyc` for error message comparison
  Dont fetch caption on getting translations This fixes the endless loop of fetchCaptions ajax requests. fetchCaption on error calls fetchAvailableTranslations which again calls fetchCaption on success and so on. We don't see any significance for calling fetchCaption in fetchAvailableTranslations.
  Respect `BATCH_ENROLLMENT_NOTIFY_USERS_DEFAULT` setting for subsequent batches
  Move the user_attribute creation for site from within the user creation transaction to outside learner-1521
  EDUCATOR-1029 | More defensive version of ZeroSubsectionGrade.problem_scores
  EDUCATOR-915: force subsection grades to update when course grade updates
  Collect translation strings from the openedx folder
  Upgrade xblock-lti-consumer
  upgrade jenkins node version to 6.11.1
  Use ORA2 django storage on openstack and devstack.
  Add course import REST API to Studio
  Don't allow any user to create courses by default
  Set the MEDIA_ROOT and MEDIA_URL settings in the cms.envs.aws module
  Switch to forks of certain third-party repos
  Fix styling on non-Bootstrap pages
  Add Ginkgo translation resources on Transifex
  Set the RELEASE_LINE to ginkgo
  Updated Django Waffle to 0.12.0
  ...
msheiny added a commit to freedomofpress/pressfreedomtracker.us that referenced this issue Jan 9, 2019
Our image is not automatically built, updated, or tracked - requiring
manual team intervention. We are getting bit by some setuptools related
issues (pypa/setuptools#951) and I don't see a
good reason to use our image here instead of upstream. The only thing
additional we sprinkled in was `git` which isnt being used here.
phn referenced this issue in phn/jdcal Apr 24, 2019
#17)

* Update Travis CI tests to remove Python 2.6 and 3.3 and add Python 3.7

* Install latest setuptools to avoid race condition https://github.com/pypa/setuptools/issues/951\#issuecomment-299653469

* Remove sudo: true as it's no longer necessary

* Simplify Travis CI builds for Python 3.7

* Fix PyPy versions and add Python 3.7 to the Python list.
kevinkjt2000 added a commit to kevinkjt2000/mcstatus that referenced this issue May 8, 2019
kevinkjt2000 added a commit to Dinnerbone/mcstatus that referenced this issue May 8, 2019
* Run against python 3.4+ on Travis

* Update pip as per pypa/setuptools#951

* Drop support for python 3.3 since pip no longer supports it
stvstnfrd added a commit to stvstnfrd/edx-platform that referenced this issue Aug 16, 2019
* origin/hawthorn/upstream:
  Fixed override due date by limiting scope to selected users
  Convert DATA_DIR to a Path object when fetching from ENV_TOKENS
  load cached npm cache on jenkins workers
  Edit test value to be valid URL format
  Bump RecommenderXBlock version
  undo a hand-modification performed as part of a previous cherry-pick
  Mgmt command to cancel user retirement request.
  Adding user_api call to get retirements by date range and current state
  PLAT-2186 - allow retirement states to be forced by driver script
  PLAT-2217 - fix partner reporting queue 500 errors, reduce log spam
  Update bulk_rehash_retired_usernames
  Fix failures due to creating users during initial migrations
  Upgrade user-util to 0.1.5
  Stop acct creation from using usernames still in the retirement queue
  Update retirement to handle multiple UserRetirementStatus rows returned
  Add forums renaming to bulk username rehash command
  Bulk rehashing of retired usernames
  Update recommender-xblock version
  remove enable_edit_image_modal waffle flag
  Adds a waffle switch which gates access to the CourseEnrollmentAdmin views
  Upgrade Django to 1.11.15 in base.in as well
  Upgrade Django to 1.11.15
  Do not delete course enrollments
  Upgrade recommender xblock to patch the xss risk
  Cherry-pick pr #18639: Escape chemical equation in advanced problems
  Import factories/base.js when using webpack to fix nav
  Configure MathJax when it's loaded by XBlocks in studio
  Add correct answer to response
  Update report generation code to include old state for backwards compatibility Include report data generated by blocks as columns instead of a json dict
  bump user-util to 0.1.4
  Only use export_output_handler if artifact storage is explicitly FileSystemStorage Use StreamingHttpResponse to support larger file downloads
  Bump version of edx-search
  updated header active tab border color
  updated subsection styling to show label on same line as icon, meant to complete EDUCATOR-2535
  Hawthorn-specific translations on Transifex
  Set the RELEASE_LINE to hawthorn
  Remove flaky video test.
  Upgrade to the latest Django 1.11 + `make upgrade`
  bokchoy conversion of advanced settings
  -updated js translations
  Updating migrations
  Updating migrations
  Updating migrations
  Updating migrations
  Updating migrations
  Updating migrations
  TE-2629 Use better field type for applicationaccess.application
  Remove NPM install for unittest runs
  ENT-1052 discount by enterprise catalog
  Update Permissions to use latest edx-drf-extensions and rest_condition
  Upgrade edx-drf-extensions and add rest_condition
  Enable OAuth Scopes for Grades API
  Enable OAuth Scopes for Certificates API
  Override DEFAULT_JWT_ISSUER and RESTRICTED_APPLICATION_JWT_ISSUER settings.
  Add OAuth2 Scopes and Filters to JWTs.
  Remove copied toolbar asset from edx.org theme.
  Resolve transcript migrations issues resulted from running it on stage
  Screen reader issue with structure of LMS course outline
  Enterprise version bump to 0.70.1
  Use the tinymce from vendor without modification
  Reapply the XBlock RequireJS -> Webpack changes
  This resolves VPC-122 and OPS-56
  Add notify_credentials mgmt command
  Refactor retirement endpoints to isolate Sailthru and respect boundaries
  TE-2584 Upgrade XBlock to fix edx-sga warning
  Do not update correctmap if state is invaid.
  ENT-1007 Upgrade edx-enterprise to 0.70.0
  pass relevant links to studio-frontend checklist
  EDUCATOR-3055 clear the enrollment date fields for the rerun of the course
  Files changed by modernize and new gitignore type file.
  Get rid of all code related to the CDN Experiments.
  add python-modernize to development dependencies file.
  add missing stylesheets from studio-frontend
  bump studio-frontend package version to 1.11.1
  Updating migrations
  Video status improvements
  Add a field to transcript migration data model to track number of runs include command run tracking information in logging
  Add initial grade signaling
  migrate video transcripts for both published and draft structure
  Fix celery chord issues, improve logging for splunk reports generations.
  Adjust default of Course Landing Experience to use expected platform defaults
  add delay in score recalculation on enrollment update
  incorporated manual verification
  Update translations
  Fixes EDUCATOR-3042.
  Add url_converter method to storage.py
  Updating migrations
  Add complete on view support to render_xblock view.
  add forum roles to metadata
  Use context help in the LMS for Open edX
  TE-2560 Generate quality results XML files
  Update documentation links that return 404 errors.
  Update the entitlement fulfilment logic to work with enrollment end
  first attempt at adding checklists to tools dropdown in studio
  Make retirement endpoints idempotent.
  Add retirement stage API that adds a user to the partner reporting queue
  Import XBlockMixin from the correct location.
  Remove DataDog enrollment submissions using the deprecated offering.
  Use EnsureJWTAuthSettingsMiddleware middleware.
  Remove unused imports.
  Added search fields to the entitlements admin panel
  Upgrade dependencies.
  Add new custom DOT Application model to support OAuth2 per-application scopes.
  LEARNER-5050: Adds in str serialization for celery tasks
  Fix for header level in new SFE pages
  Change program's course runs to be oldest with open enrollment
  -updated-translations
  update enterprise version
  Add Checklists to new page and to course outline view
  Set max page size for get courses
  TE-2593 Make pip-compile output whitespace consistent
  Add namespaced_name to WaffleSwitch
  Set max page size for get courses
  reorder env sourcing in a11y script
  PLAT-2193: Use correct default user retirement states.
  Add retirement partner reporting queue and APIs
  Add switch to always calculate program price as anon user
  set up tox env var for a11y scripts
  change toxenv checking in ci script
  LEARNER-5050: Adds award course cert job to post to Credentials
  Update translations
  Return task ID and generated filename from backend
  Revert "Merge pull request #18340 from cpennington/fix-studio-xblock-rendering"
  Make a copy of the asset under the edx.org theme
  consume env var to select tox env
  Upgrade SFE to 1.10.8
  Add tests to correct location
  Update tests
  Only pass error to showErrorMessage
  Fix xsslint complaints
  Refactor search error messaging
  Address eslint complaints
  Make response.responseJSON check still more robust
  Do not assume response.responseJSON
  Improve search error messages
  Update UTM params of social sharing buttons
  Course Validation and Course Quality APIs
  Fix unit tests with latest social-auth-* packages
  Actually update social auth packages.
  Update export page to have same text as import page
  Don't treat self-closing tags as context starters
  Fix assorted linting errors
  Limit the length of browser log file names
  Load xblock resources into studio *before* the corresponding xblock html
  Updating migrations
  Enable model-caching of discussions ID mapping.
  Rate limit course list API.
  Use custom get_current_site method
  Update the initial try delay to reduce the occurance of this `DatabaseNotReadyError` due to replica lag. EDUCATOR-3004
  Finalize rate limit for enrollment API
  Don't upgrade py2neo to 4.0.0
  Revert "Rate limit course list API."
  Run `make upgrade` after unpinning the social auth packages.
  Update facebook integration LEARNER-4819
  Update translations
  Rate limit course list API.
  Remove now-unused django_db_models_options.py
  Update translations
  [edxnotes] use the correct url and update the API params
  Change waffle flag for enrollment throttle to switch
  add script to detect dead code
  Bump poll xblock version to 1.5.1 - removes warning.
  version bump 0.69.1
  Ratelimiting registration form validation end point.
  Fix studio xblock failing renders (due to asset hashing loop)
  Reapply "Switch container factory to webpack"
  Revert "Switch container factory to webpack"
  Add require_https to all is_safe_url calls
  Fix tests
  Fix migrations of external video component transcripts and beautify/refatoring
  fixed migrate command's aws settings issues
  Revert "OAuth2 API to call XBlock handlers"
  Change usages of is_safe_url to use new allowed_hosts instead of host
  Fix errant javascript test
  Remove hard-coded codemirror script tags from LMS XBlock pages
  Load CodeMirror from an external
  Add webpack assets directly to xmodule fragments, rather than injecting them in fragment contents
  Re-apply the changes to convert XBlocks to Webpack
  Update translations
  Use Django 1.11 format_lazy instead of allow_lazy
  Upgrade edx-ora2 to 2.1.17
  Remove SessionAuthenticationMiddleware from INSTALLED_APPS
  Remove django 1.8 shim
  Remove unused pytest markers for Django 1.11 upgrade
  Add on_delete kwarg to ForeignKey & OneToOneFields
  Update copy for password compliance message to be more clear.
  OAuth2 API to call XBlock handlers
  s/django.core.urlresolvers/django.urls/g
  Extract course run with highest grades.
  TE-2543 Add tox env for Python 3.5
  Allow scrolling after insert/edit image in Studio
  Removed student entrance test
  Removed GDPR flag and its functionality
  Updating migrations
  Add custom HTML to Course About page sidebar
  Upgrade studio-frontend to latest v1.10.5
  use anonymous user ID when calling the edxnotes retirement endpoint
  Only get program certs from credentials
  Notes retirement endpoint should require trailing slash
  Add new notification email.
  Bump edX Enterprise to 0.69.0.
  Add a configuration option for deleting student accounts.
  Change the log level to info
  Updating migrations
  Exempt csrf on donate LEARNER-5326
  Fix PDF cert gereration/regeneration and URLs.
  Add program UUID in cache key instead passing as resource id.
  Add API endpoint for retiring a user from EdxNotes (edx-notes-api)
  Updating migrations
  Bump edx-enterprise to 0.68.8.
  add email to metadata
  Pass program UUID as resource_id to generate unique cache key.
  EDUCATOR-2927 certificate eligible column will appear with value N for audit-passing learners in grade report
  added radio input fields to pre-requisite selection
  Revert "Switch container factory to webpack"
  LEARNER-5427 Ensure StudentAccountDeletion.jsx checks socialAccountLinks object because reunning .reduce on it
  Consolidate location of word_cloud assets
  Don't check for exceptions after assertRaises unless the exception was actually raised
  Install jasmine-jquery from github to fix a bug in the toContain expectation
  Move word_cloud webpack build back into standard XModule configuration
  Put Require.js in debug mode in LMS acceptance tests
  Upgrade django-webpack-loader (and other recent minor updates)
  Clean up pylint failures
  Ignore specific non-member pylint errors
  Convert WordCloudMain to an es6 class
  Pull AjaxPrefix into any webpack page that uses it
  Clean up eslint failures
  Extract a new webpack-based suite of cms javascript tests
  Delete flakey lettuce tests<
  Retry opening advanced settings if it fails the first time
  Wait for js to finish loading before trying to click on advanced settings
  Wait for specific javascript variables rather than requirejs loading on the unit page
  Wait for the sock to be ready as a proxy for the Studio header being ready
  Explicitly wait for the video editor to have opened when editing
  Log javascript errors during bok_choy tests
  Convert edit_tabs factory to webpack
  Convert webpackified factories to es6 modules with global exports, and remove the invoke_page_factory pattern
  Convert xblock_validation.js to webpack
  Wait for MathJax for tests, rather than MathJax.isReady
  Convert the Studio Library view to webpack
  Load XBlocks with webpack rather than RequireJS
  Remove use of 'with' keyword from schematic.js
  Use conditional blocks for webpack specific code edits
  Include the error message when an XBlock fails to load javascript
  Switch container.js to bundle using webpack
  Remove the done index.
  Updating migrations
  Update translations
  Migration for index removal.
  Update model.
  bump VAL
  Update old transcripts metadata present in video xml with the new transcripts for backward compatibility.
  Adapt tests to work with the presence of generate_report_data Add integrationish test
  Handle NotImplementedError raised by generate_report_data
  Use ``generate_report_data`` for getting report data if the block provides it
  Added chapter blocks to be excluded from report
  Documentation grammar and accuracy fixes
  Filter out sequentials in final report generation stage Fix tests to match code changes
  Only filter out verticals instead of all non-problem blocks Improve documentation
  Unconditionally yield root block so it's always included in the report
  Fix: issue generating reports for single problem code style fixes
  Disable protected access pylint check for TestProblemResponsesReport
  Fix error due to improper problem_key Add tests
  Documentation and PEP8
  Use cls instead of direct class name
  Support setting MAX_PROBLEM_RESPONSES_COUNT to None for unrestricted row count
  Break out bits of generate method into separate method
  Add block id to problem response report
  Include title and location in problem response sheet
  ProblemResponses can now iterate over all the problems in a chapter, sequential or vertical It is now possible to limit the number of rows in the problem response csv
  Allow list_problem_responses to limit the number of responses Allow problem_location to be a UsageKey or string in list_problem_responses
  code refactor to stop creation of duplicate oauth clients with dns-name is changed
  more reforting
  added more tests on suggestion
  throwing exception when user has conflict with username or email
  Fixed code to include special characters in username
  Added a base MessageType for ace
  Implement generate_report_data for capa problems
  Fix inconsistency b/w unit & course outline for word_cloud completion.
  Update translations
  Remove two flaky tests for the studio outline.
  Remove this flaky entrance exam test.
  Remove the expansive category_map call from inline discussion view
  Remove flaky tests
  Revert "Retry upon Sailthru optout timeout."
  Run make upgrade.
  Move off of our fork onto a published fork of the rfc6266.
  Update python requirements
  upgrade cookie-policy-banner to 1.1.10
  Add mgmt command for creating catalog integrations
  Add backoff module as a new requirement. Use backoff when calling Sailthru API to retry upon optout timeouts.
  Fix the GDPR registration form for the mobile app.
  Update translations
  Fix test
  Fixed tests that are flaky on fireFox 59
  fixed typos
  Update edx-enterprise to 0.68.6.
  Move pacing above schedule dates and remove invalid help text
  Added credit as an option to change_enrollment command
  EDUCATOR-2802: P2 gdpr endpoint
  Use edx-ace for password reset email
  fix TypeError: cannot concatenate 'str' and 'NoneType' objects LEARNER-5369
  updated TOS
  fix tests
  Added enrollment API test for throttle rates
  Fixup!  refactor email_exists, and handle many more cases
  Upgrades to avoid sure install bug
  Changed comment in recalculate_learner_grades
  Fixed tests that are flaky on fireFox 59.
  Updating migrations
  version bump enterprise
  Fixed tests that are flaky with firefox 59.
  update api request form
  Quality fix
  Fixes test failures
  Shows the account activation message in the main content area
  Adds EMPTY_DASHBOARD_MESSAGE Site Configuration flag
  Adds HIDE_DASHBOARD_COURSES_UNTIL_ACTIVATED
  Shows the account activation message in the sidebar
  Revert "Learner Dashboard improvements to assist with the Account Activation process"
  Display error message if account is inactive.
  Fix throttle rate for 'staff' user
  Fixup! pivot to treating retired emails as banned forever
  Disallow registration when the proposed email is half-retired
  Upgrade using pip-tools.
  upgrade django-wiki
  Clean up enrollment rate limit waffles
  Allow solutions to be displayed on showanswer=attempted if not attempted but past due
  Make recalculate_course_and_subsection_grades_for_user task logged.
  Add a warning message when there are social auth links connected.
  Remove cookies when retiring user
  Bubble up 404s from the forum service on user retirement
  Management command to force enrollment regrade
  Upgrade SFE, unscrollable body when modal is open.
  Create GDPR test user command fix for password and meta
  Pass retired_username to forums retirement endpoint instead of original username.
  LEARNER-5273 Update how the mobile menu interacts with the cookie policy banner
  Fix program marketing to use newest course run
  enterprise version bump
  Unpublished course run displaying in entitlements LEARNER-5247
  Improves XBlock i18n by allowing template translations
  Add migrations missing from previous PR.
  LEARNER-5123 | Cache VisibleBlocks per course AND user, only fetch the ones the user needs for subsection scoring.
  fix broken test
  Fix two deprecation warnings.
  PLAT-2115: Refuse password reset for retired user.
  Fix failing test by passing string to expected_verification_status
  LEARNER-5185 Fix bug in cert generation for passing users who become approved
  Fix disabled login/register buttons after failed attempt
  Update translations
  Centers all login-register forms
  Update student records buttons
  Call count() when you want a count.
  EDUCAOTR-2870: move oauth token retirement to dea deactivation endpoint
  Create the retire_user method on ApiAccessRequest model
  Fix PLAT-2123- Bug with retiring user's original_email being hashed
  update cookie policy banner package to 1.1.7
  mark email sent events as non-interactions
  EDUCAOTR-2870: move oauth token retirement to dea deactivation endpoint
  fix ie11 account deletion
  Create the retire_user method on ApiAccessRequest model
  Fix PLAT-2123- Bug with retiring user's original_email being hashed
  LEARNER-5123 | Hotfix - don't regrade everything for a user in a course with too many visible blocks.
  mark units as graded if subsection is graded
  Fix issues with Sailthru retirement
  Revert "Use edx-ace for the password reset email"
  Fix incorrect rate limit settings
  Revert "Clean up enrollment rate limit waffles"
  EDUCATOR-2618 | Add more function_trace() to inline discussion view.
  Upgrade lettuce and other dependencies
  Correction for incorrect conditional error logic and wrong channel
  Update requirements.
  Update OAuth decision 7: including organizations in tokens
  Create GDPR test user management command fix for optional arguments
  Remove flaky test_progress_page_has_view_certificate_button test.
  Remove flaky tests.
  Revert "Merge pull request #18150 from edx/efischer/last_one_i_swear"
  Clean up enrollment rate limit waffles
  Fix issues with retirement state population and unenrollment
  Correctly passing course key in the JSON object to async
  download correct transcript content file
  Management command to create GDPR test user
  Add API documentation with django-rest-swagger.
  Fix sequence title error in courseware
  Upgrade requirements to use edx-ace==0.1.7
  Use edx-ace for password reset email
  updates studio-frontend to 1.9.9 and fix tests
  Moving the update course and subsection grades to async task
  Fix inconsistency progress between Unit and Course Outline.
  Use Omar's personal email instead of QRF's
  Remove more unneeded 'namespace=' params.
  Bok Choy tests for account deletion workflow.
  Don't barf during debug logging, that's silly
  TE-2545 Restrict AutoAuth for load tests
  only check access of asked-for threads
  Run make upgrade to get latest version of xblock-lti-consumer (and others).
  Fix issues with retirement state population and update view
  Exclude video upload token - EDUCATOR-2532
  Upgraded edx-enterprise version from 0.67.7 to 0.67.8
  Send verification status email through sailthru
  EDUCATOR-2516 | Bump xblock-lti-consumer to 1.1.8
  Add Jenkinsfile for python pr tests
  Revert "Merge pull request #18125 from edx/efischer/the_code_also_gazes_into_you"
  Add password_policy checks to login views
  VAL version bump
  Fix that when usage key none is not raise error.
  Store Discussions ID Map on CourseDiscussionSettings model when course publish signal is fired.
  Fix heading structure
  Prefetch user group data for bulk access checks
  Fix more Django 2.0 deprecation warnings around URLconfs.
  swap page names for entitlement session analytics
  V1 Grades API with added support for bulk read of all user grades in a course. URL patterns changed to follow edx API conventions
  cache results of thread authorship check
  Remove activation keys upon logout of retired user.
  EDUCATOR-2753 | Add calls to retire secondary user data to the /accounts/retire endpoint.
  OC-3995 Moved the ID string used in the google-site-verification meta tag to settings so that it can be overridden from site_configuration.
  rebalance python unittests onto new shards
  Add VNC info to testing docs
  emit ga events for user entitlement session actions
  Adds "retire_user" to CreditRequest.
  Bump studio-frontend to v1.9.4 and fix bokchoy
  EDUCATOR-2689: retire ManualEnrollmentAudit
  Creates oauth2_retirement_utils file, used it to retire oauth2 data.
  Fix extracting i18n from jsx code
  add base factory into textbooks factory
  EDUCATOR-2771 | Adds an LMS API endpoint to retire a user account.
  fix is_authenticated mocks
  Upgrade Django to 1.11.13
  EDUCATOR-2690 bugfix
  Silence deprecation warnings
  address review and add test
  basic tab attach uploads with edx_video_id
  add check transcript ajax for edx_video_id
  LEARNER-4717 Have delete account modal button make request to deactivation endpoint
  Update rate limit for enrollment api
  Create deletion method for the PendingNameChange model to comply with GDPR
  Add simulate_publish management command
  remove tests also
  make password history retirable
  This isn't used when rendering inline
  Updating db cache
  EDUCATOR-2774 add new condition for cert eligible column in grade report
  Add a test for multiple learner states.
  Implement retire users function in the SurveyAnswer model for GDPR
  EDUCATOR-2770: Update logout endpoint
  Process states param to gather all passed-in states.
  ENT-945 Using SSOVerifications in ID Verification flow
  add has_staff_access to course metadata
  Update models to 'Retire' not delete data
  remove video transcript enabled flag
  Update translations
  Fix course selection on single support form.
  Avoid fetching full group list repeatedly
  Remove unused META_UNIVERSITIES setting
  pass courseDetails to editImageModal
  Unlink CreditRequirementStatus PII for retired users
  Remove these tests because they are flaky.
  Add some links to student records
  Hide SSO related messages on login page if user is not in the SSO pipeline.
  Remove unused VIRTUAL_UNIVERSITIES setting
  Get MKTG_URL_LINK_MAP from ENV_TOKENS in CMS
  Properly clean up a wrapped function
  rate limit
  Add a management command and settings to populate RetirementState models
  TE-2551 Fix commons.js optimization reliability
  cache list of partitions in a course
  Fix refundable status for audit orders
  upgrade cookie policy banner version
  added exception decorator
  Catch HttpError thrown by Python Social Auth.
  TE-2528 Upgrade testing dependencies
  fix pylint
  Remove this flaky test.
  Partial revert of "ENT-945 Update IDVerification interfaces to accountfor SSOVerification"
  EDUCATOR-2618 request cache some more stuff
  Optimize dictionary combinations
  update studio-frontend version to 1.8.0
  retrap focus for seat unenroll survey a11y
  Stop hitting mongo so much, cache this result
  add tests
  Updates to use the is_anonymous flag of basket calculate
  LEARNER-4700: Converts credentials to plugin
  Update the get_transcript util with html5_sources - EDUCATOR-2651
  Unlink SoftwareSecure PII for GDPR
  LEARNER-4880 added confirmation modal for account deletion
  make userorgtag deletable
  Allows UnregisteredLearnerCohortAssignments to delete_by_user_value.
  Changes the mixin's delete algorithm.
  EDUCATOR-2632 | Management command for creating new DOT application model.
  support cross domain ajax requests to the experiments APIs
  delete transcript from advance tab
  version bump
  Prepend unicode signature (BOM) to csv reports for MS Excel 2013 compatibility
  Update support form to make course required.
  Changing the contact-us link
  Update retirement APIs to match spec
  Add Notes Delete User API endpoint
  TE-2546 Remove obsolete requirements files
  Updating migrations
  ENT-945 Update IDVerification interfaces to accountfor SSOVerification
  added admin site settings
  ENT-944 Create SSOVerifications for users in tpa pipeline based on provider's settings
  fix outline progress
  updload/download/replace transcripts
  Revert "Revert "Show Enterprise display name if we should hide sensitive user…"
  transcripts rendering on advanced tab
  remove sub from editable metadata fields
  Refactor download, update, choose, rename and replace handlers to use DS as primary storage. Add/refactor relevent unit/acceptance/jasmine tests.
  disable subs field syncying
  Upload transcript to basic tab, add/fix unit and acceptance tests
  update check_transcripts handler
  Deprecate Contentstore for Mobile Video Outline API
  update available translations retrieval interface
  Deprecate Contentstore for Video Component Preview LMS/CMS
  ENT-960 Fix catalogs creation bug due to request data format
  Update translations
  Add Enterprise middleware that injects customer data.
  Remove Course Structure API
  Updating migrations
  update edx-proctoring version from 1.3.9 to 1.4.0.
  Add default retirement states to settings
  Adds DeletableByUserValue to CourseEnrollmentAllowed model.
  prevent loading both production and development CSS from the studio-frontend container
  add image accessibility best practice documentation URL and pass through to studio-frontend edit image modal
  EDUCATOR-2693 | Delete PendingEmailChanges for retired users.
  Use s3 db cache on devstack
  Updated the messages when a learner leave an organization.
  Implement iter_all_for_block and iter_all_for_course for DjangoUserStateClient
  Send email for the failed verification status
  Report the RELEASE_LINE in a meta tag
  Clean up some warnings to get enough headroom to pass tests
  Add a model and associated API to help control the user retirement flow
  TE-2547 Add dependency analysis scripts
  Adds retire_user mixin.
  bump studio-frontend version to 1.7.3
  Add entitlement unenrollment survey
  Deleted SAML Identity provider appears in the Enterprise customer IdPs list.
  update cookie policy banner
  TE-2527 Move test and dev dependencies out of base.in
  Add passthrough for context_title and context_label LTI parameters
  Revert "pass title/label to LTI consumers"
  EDUCATOR-2628: deactivate and logout user
  Changed the author info.
  updated correct map when new score is calculated
  WL-1518 | Get decline notification context from enterprise.
  Remove Completion's usage of Course Structures API
  add cookie policy banner with feature flag
  Remove failing js test
  Remove unused imports in user_api.models
  Revert "Show Enterprise display name if we should hide sensitive username."
  Discussion moderators, TA's and admins see the posts according to cohorts.
  VAL version bump
  Fix styling of button on certificate & membership page.
  Fix program type logos.
  Import video transcripts - EDUCATOR-2173
  Update translations
  VAL version bump
  Remove the flaky bokchoy test We want to unblock this PR from merging. Created EDUCATOR-2728 to track
  TE-2515 Fix occasional help link test failures
  Remove CourseStructure usage in CourseGraph
  Fix existing quality errors.
  Reject acct creation when using a retired username. Change from specifying a retired username/email format to specifying   a retired username prefix and a retired email prefix/domain,   preventing possible config errors due to unexpected/bad formats.
  Update and refactor random password generator
  Added completion mode to discussion XBlock
  Drop remaining coffee use
  Move all our coffee files
  Add DISABLE_START_DATES setting to CMS
  Update list of supported browsers
  Removes the new course outline waffle flag.
  Remove merge conflict cruft from github.txt
  catch duplicate course error
  PLAT-2060 Use pip-tools to manage requirements files (take 2)
  Drop underscore from learner_dashboard
  bump ora2 release to 2.1.15 to fix EDUCATOR-2634
  Create new auth endpoint for checking user password.
  mark support (re)issued entitlements as unrefundable
  Show Enterprise display name if we should hide sensitive username.
  Updating migrations
  New command to migrate transcripts to S3
  Fix 500 error on new contact us form.
  Edit email acknowledging photo-submission
  Send verification email status
  fetch poll component to check for completion
  Updates after review feedback.
  Remove use of the deprecated course_structures module.
  ENT-943 refactor PhotoVerification model
  Fix 500 error when adding viewers to catalog.
  [PLAT-1109] Suppress IntegrityErrors caused by race condition
  Add align buttons to test check
  Add alignment options to the TinyMCE platform plugin
  correct mention of old course ID in description of bulk email django tool
  move Create Entitlement button up and shrink username search bar
  Update studio-frontend version
  Revert "PLAT-2060 Use pip-tools to manage requirements files"
  ENT-943 Cleanup of old third_party_auth provider slug fields
  PLAT-2060 Use pip-tools to manage requirements files
  LEARNER-4578: Adds in password validation on Studio
  Remove search settings and add test to validate search visibility
  Create API endpoint to unenroll user from all courses; EDUCATOR-2603
  Move to the latest python newrelic agent.
  Remove uses of the course_structure API.
  Use unicode passwords when validating
  Update translations
  fix failing test
  Increase the number of bok-choy shards
  Revert "Send email to learners to inform verification status"
  Delete visual_progress_enabled waffle flag.
  Update to latest 2.x which includes a security fix.
  Hide experiment courses from dashboard if enrolled but not paid
  Upgrade edx-enterprise package to 0.67.3.
  bump version of edx-ora2 to 2.1.14
  Change in-context waffle switch to a flag
  PLAT-2028 - Create mailing list retirement API endpoint
  ENT-942 Implement an abstraction layer for SoftwareSecurePhotoVerification class methods
  EDUCATOR-2451 | Add expand/collapse all button to course outline.
  ENT-943 Refactoring third_party_auth models
  WIP: Refactor registration to improve reliability
  add test coverage for entitlement course run retrieval
  Add live validation to password reset
  Update fix_ungraded_certs to Django 1.11 spec
  permit staff role to rescore, override and delete problem scores for individual learners
  Fix "admin/auth/user/add "username" missing field.
  Send email to learners to inform verification status
  Studio-frontend in-context image selection modal
  Exclude the default site from UserAttribute 'created_on_site'
  Updating migrations
  Upgrade edx-enterprise package to 0.67.1.
  Revert "Logging: Error getting the course from modulestore"
  Revert "Use get or create rather than create"
  Fix enabling debug allows api access without authentication.
  add note on for logged out users on support form LEARNER-3783
  Fixes test failures
  Shows the account activation message in the main content area
  Adds EMPTY_DASHBOARD_MESSAGE Site Configuration flag
  Adds HIDE_DASHBOARD_COURSES_UNTIL_ACTIVATED
  Shows the account activation message in the sidebar
  studio-frontend 1.6.3
  Updating migrations
  Upgrade Django to 1.11.12
  Border Appearing on wiki and Progress page.
  Fix due date display format according to set in advanced settings.
  Add an API endpoint for retiring a user from the cs_comments_service
  Add some common functionality for retiring users
  Reverting celery task kwarg name.
  Account for Django block on DDL in transactions
  Set SWIFT_CONTENT_LENGTH_FROM_FD=False
  Bump bok-choy to v0.7.2
  Update TOS and Privacy Policy field on registration from for GDPR.
  Fixed error: ImportError: No module named notmigrations
  Update translations
  EDUCATOR-1290 | Remove over-limit block keys randomly for library content blocks.
  Remove deprecated make_option from certificates management commands
  fix REV-19 experiment check for refunds
  allow site and mode to be nullable in admin form
  reorder 0017_auto_20180327_1631 to be after the other 0017
  Corrects issue with Entitlement Auto upgrade and Soft Upgrade deadline issues
  EDUCATOR-2553 | Bump edx-completion to 0.1.4; Add feature-gating tests for completion.
  Add chapter index to dom
  Moved to a try catch block
  Protection for when there is no CourseOverview data available.
  Fix styling of Discover new and Sysadmin tabs of navbar.
  Route sailthru tasks to lms ace queue instead of default.
  remove showbydefault
  Add a link to the LMS from Studio footer.
  ENT-936 Allow TPA providers to be configured to not send a welcome email upon registration.
  add mode field to entitlement policy model and set custom policy on entitlement create
  Update lettuce db cache
  Revert "Watch assets on specific system."
  EDUCATOR-2535 | Small style cleanup for course outline.
  Modify Enterprise API to accept list of course_ids for consent_required endpoint WL-1491
  adjust bug-causing variable name
  quality
  COURSE_LOADING_ERROR
  fix js issue with video uploads
  Update lettuce db cache
  bump django to 1.11.11
  Refer to new sfe file names in templates
  EDUCATOR-2584
  Upgrade edx-enterprise to 0.67.0.
  Updating migrations
  Footer Chinese Language Dupluication Issue
  bump version of ora2 to 2.1.13
  small nit
  use library summary to fetch metadata
  Discovery for pdf cert generation LEARNER-4520
  Use get or create rather than create
  Revert "Watch assets on specific system."
  EDUCATOR-2582 | Inspect waffle switch model to find completion tracking date start.
  Updating migrations
  ENT-934 Remove deprecated models in verify_student
  adds entitlment tool to support tool home
  Update newrelic agent.
  move global status messages from the header to the user notification area
  Disable course enrollments admin page OPS-2943
  Bump edx-completion to 0.1.1
  Changed 'instructor' django app to follow plugin pattern
  Changes needed to bump to ff59
  Remove a11y test
  Added ability to change header and content of static pages in two ways. 1. Using the pageheader and pagecontent block names. 2. Setting SiteConfiguration settings for each individual html page.
  add entitlement support creation and reissue
  Define XSS-linter rules on Linter classes.
  Remove test_bad_import
  add missing maintenance banner settings
  Remove test_about_me_field
  Remove test_restricted_sections_for_enrollment_track_users_in_lms
  Remove test_upload
  Remove test_course_updated
  Remove test_library_updated
  remove test_landing_page
  remove test_as_specific_student
  Use updated packages to avoid installing unwanted stuff
  Remove PRUNE_OLD_VERSIONS waffle flag
  Remove test_register_failure
  Remove test_multiple_course_import_message
  Remove test_import_timestamp
  Remove test_bad_filename_error
  Remove test_locked_subsections_do_not_appear_in_lms
  Upgrading edx-enterprise to 0.66.1.
  include created datetime in entitlement support detail serializer
  Clean up unused settings
  Remove test_task_list
  Footer Design Implementation without using bootstrap WIP
  remove test_enroll_unregister_student
  remove test_video_end_time_wo_default_start_time
  Remove test_country_field
  Remove test_course_updated_with_entrance_exam
  move support actions to existing entitlement api
  remove test_register_success
  remove test_third_party_register
  remove test_archived_course
  Remove test_create_library test
  remove test_language_field
  Remove test_login_redirect
  Remove test_if_captions_are_draggable
  Remove test_locked_sections_do_not_appear_in_lms
  Revert "EDUCATOR-2540 | Bump edx-completion to 0.1.0"
  Send all update_aggregators task to LMS.
  Revert "Revert "Track viewing of individual blocks.""
  Control refund message with optimizely flag
  Adding migration to update the expiration_period default
  Updated tests to use new 24 months
  Updating the default long term expiration to be 730 days for entitlements
  EDUCATOR-2540 | Bump edx-completion to 0.1.0
  Increase the Throttle on the enrollments API to allow ecommerce to request more frequently
  remove physical constants and suffixes
  EDUCATOR-2428 add acceptance criteria for certificate delivered column in grade report
  Improve password complexity messaging
  Fix incorrect message feedback in discussion feature.
  add the maintenance banner to the student dashboard and course homepage
  Maintenance banner functionality, including a new waffle switch and setting
  Encodes staff profile names as they can be unicode
  Upgrade studio-frontend to 1.6.1
  Enables disabling of auth urls for program cert linkings.
  Bump completion requirements to 0.0.11
  Drop student_account/account.js
  Send password requirements to mobile
  pass title/label to LTI consumers
  ENT-894 Upgrade python-saml package
  Update translations
  Update the other requirements to use pyparsing 2.2.0 as well.
  Reduce requirements complexity.
  Fix formatting of error
  Remove flaky page re-ordering lettuce tests.
  Check policy during pw live validation
  Fix None type entitlement passing.
  add role and expose reason field to Instructor Dashboard Manual Enrollment WL-1473
  EDUCATOR 2506 Drag and drop xblock completion not showing in course outline.
  Add Table to entitlement support app
  Removing flaky test test_can_add_remove_allowance.
  EDUCATOR-1290 | Create a new random.Random instance when selecting from library content blocks.
  bump studio-frontend package version to 1.5.0
  Remove flaky test and commented-out tests.
  Add docs for handling default values.
  update get_transcript util
  Allow staff to see all units when viewing the course outline.
  Watch assets on specific system.
  Use try-except-else instead of continue
  Updating migrations
  Add missing continue in loop exception
  Use Levenshtein not nltk
  stop using deprecated single item basket view LEARNER-4428
  Uses the entitlements course run enrollment to get the course key when available
  Add extra Webpack config for RequireJS compat.
  Register course start signal receiver in CMS too
  Add Store and Search Component
  Remove module level translations files We needed those files for the push translation jenkins job as job has been updated to run without commiting any changes to reo. we no longer need those files in repo.
  Updates to still retrieve the course Key when sessions are not available
  update LoginWithAccessTokenView to only support DIT type accesstoken LEARNER-3552
  Updated message for content with prerequisites
  update eslint config edx to 3.0.1
  Test fixes to prepare for firefox upgrade on jenkins
  LEARNER-4423: Adds in PCI compliance checks for alphabetic and numeric characters
  Remove NewAssets config model & create migration file
  Convert date to lower if language is spainish.
  Enable HLS video encodings for mobile.
  Update translations
  Adds EntitlementSupportView, Template, and base react element
  Do not show Currencies: usd in bulk email task history Sent To:
  make use of to_locale in studiofrontend templating
  corrected another enrollment edge case
  Updates to filter out Entitlements by Site
  Add new waffle flag for toggling GDPR work.
  correct check for enrollment on an entitlement
  Revert "PLAT-1957 Better memory leak diagnostic tooling"
  Fix bok-choy tests
  Add client api for entitlement support page
  Remove old assets page from mako template, tests, & config model references
  Remove LTI tests that build on top of flaky permission alert tests.
  Remove flaky lti scenario.
  Bump SFE to 1.4.1
  PLAT-1957 Better memory leak diagnostic tooling
  Bump studio-frontend to 1.4.0
  guard against missing setting
  Add bundle key to program purchase button
  transcript util
  Updating migrations
  Add "last completed block" to dropdown
  customize course info title
  Add convenience functions for Entitlement Support Tool
  Add tests for create_user / create_random_users management commands
  fix linting errors and un-vendor backbone-associations
  Move the context course and sock into require_page compatible forms
  fix page_bundle
  Move pattern-replacement file lists into a separate file
  Fix all text!*.underscore import issues in webpack
  Remove reference to reason field, add action field
  Fail js tests if dirty package-lock
  Auto-open first unit in course outline if user has no completion data
  Update to take new security fix.
  Process pending enrollments when a user is activated or changes their email address
  VAL version bump
  Export video transcripts - EDUCATOR-1789
  Add resume buttons to the edx.org dashboard.
  Update translations
  Upgrade edx-enterprise to 0.66.0.
  EDUCATOR-2231 remove course run enrollment dates references from studio
  Update translations
  These changes add a resume button to course cards on the student dashboard.
  Bump SFE to 1.3.5 (increase file upload count)
  Update base.txt
  Convert learner_dashboard to es2015
  Update min length of financial assisstance LEARNER-2945
  Add config module for xsslint
  PLAT-1989 Upgrade django-openid-auth for Django 1.11 fix
  Course outline styling
  Update translations
  Refactor XSS linter into smaller files
  Replace main tag with div to compliance HTML5 standard
  updated-translations
  update edx-proctoring package
  PLAT-1976 Add waffle switch to block auth_user write attempts
  Return expected Dict when Discovery API fails or returns nothing
  Assume the cookie is set and don't try to get it again.
  Revert "Revert "Revert "Merge pull request #17325 from cpennington/switch-ass…"
  add ConfigurationModelFixture for Studio Frontend Assets Page and add Bok Choy tests for Studio Frontend Assets Page
  EDUCATOR-1290 | Make sure we have a key with a course id in it before library content logging call.
  catch mismatched parens
  Add a regression test
  Revert "Revert "Merge pull request #17325 from cpennington/switch-asset-index-factory-to-webpack""
  No dynamic_upgrade_deadline in prof. courses
  remove fsevents from package-lock.json
  Fixup logging statement for randomized blocks.
  Check that a user enrollment exists in the course outline
  Provide i18n data to SFE in DOM
  Fix course home page bug
  reduce escaping on sandbox errors returned to learners
  Add self to AUTHORS
  zendesk proxy plugin
  Bump studio-frontend version
  Removed self-paced feature flag from code
  Update create_sites_and_configurations for devstack wl tests
  Add template block to allow redefining the details section in themes
  Find html files of django-wiki under templates directory
  Revert "Reduce requirements complexity."
  Revert "Update setup.py for calc module."
  Bump drf-extensions for pagination move
  Update setup.py for calc module.
  Discssions as a plugin
  Make sure user is login in credential when redirected from lms LEARNER-3729
  Remove requirements that should be a part of the venv definition.
  Move pyparsing to base.txt
  With wheels this statement is no longer true.
  Fixed unthemed error pages in Studio and LMS
  Added entitlement redeemability method to the check for fulfillable entitlements
  Revert "Merge pull request #17325 from cpennington/switch-asset-index-factory-to-webpack"
  Added waffle switch for files & uploads search UI
  Incorrect position of the label "Receive course emails"
  Fix tests that expected unified_course_tab to be off
  make unified_course_tab on by default
  updated translations
  updated translations
  fix css issues on oauth authorization page to make it responsive LEARNER-4068
  Renamed contentstore waffle namespace to "studio"
  Pin regexes to the start of the matched strings.
  Remove flaky studio test.
  Add visual progress checkmarks to course outline
  Adding Sass/CSS overview from wiki.
  Changes to auto enroll users using their entitlement if they have one available.
  Move pattern-replacement file lists into a separate file
  fix discussion submit button
  Fix all text!*.underscore import issues in webpack
  Move the context course and sock into require_page compatible forms
  Convert cms/static/js/factories/asset_index.js to be bundled using webpack
  fix-topic-select-with
  Updates tests: adding middleware increased the number of CMS database queries by 1
  don't link to API endpoint from support page
  Revert "Track viewing of individual blocks."
  Add Support endpoint for Course Entitlements
  Auto-open course outline to last viewed block
  Adds redirect middleware to Studio
  Add search for courses API
  Create generic support ticket interface (remove zendesk specific code)
  limit bundling code to users with less than 4 enrollments
  Loosen login lockout text check
  Moved paginators to edx_rest_framework_extensions package
  Assign new sailthru var upon signup.
  bump edxval version.
  Integrate with the updated VAL api utils.
  Footer Bootstrap new design fixes WIP
  Fixed edX block structure api to load override data
  Fix Stylelint errors
  Track viewing of individual blocks.
  Fix pylint error
  Upgrade SFE to 1.2.5
  Fix borked rebase conflict resolution
  Upgrade SFE to 1.2.4
  Upgrade SFE to 1.2.3
  Upgrade SFE to 1.2.2
  Add class=SFE to AccessibilityPage root div
  Remove loading spinner in new assets page
  Update SFE to 1.2.1
  Fix waffle flag switch on old assets JS block
  Allow copying whole vendor library folder
  Migrate StatusBarAlert to pargaon static build
  Update package-lock and remove unused webpack conf
  Upgrade studio-frontend to 1.2.0
  Add class=SFE to root div to increase specificity
  Fix integration of accessibility policy page
  Dev in sfe container & prod use /dist of sfe
  Add instructor modal to program marketing page
  JAWS a11y fixes
  WL-1444 | Added optional argument "start date" in management command.
  Update to django-storage-swift v1.2.18
  Install edx-user-state-client from PyPI, move xblock-review.
  allow prime and tensor notation
  Get edx-platform working with external completion lib, add integration tests.
  Updating migrations
  Fix broken link in comment
  Fix syntax typos in README
  ENT-833 Updating edx-enterprise version to the 0.65.7
  Fix user creation management commands
  bump enterprise version to 0.65.6
  Fixes error caused by invalid Anonymous User passed to a view.
  updated-translations
  bump edx-sga to 0.8.0
  Install edx-milestones from PyPI instead of GitHub.
  increase limit for staff users
  Revert "Made the certificates section on the user profile page site aware. WL-1289"
  add context to 'enroll' word
  Move to PyPI version of edx-analytics-data-api-client
  Simplify the content enrollment tab in the CCX Dashboard.
  Make missing parts of Enrollment tab in CCX dashboard translatable.
  pass language to mako template
  Add the visual indicator to the sequence horizontal nav bar to mark verticals completed EDUCATOR-2189
  Surface vertical units in the course outline
  Updating migrations
  Add CourseEntitlementSupportDetail model and related admin model
  Use new PyPI package for django-splash
  Use the same ordering for LA dashboard as progress page.
  Update lti iframe in platform & xblock github version
  Fix xss-linter.py failing test.
  update CourseGoalViewSet to return status=400 if no goal key is provided LEARNER-3342
  fix typo in program marketing page
  PLAT-1948 Update the cached lettuce test databases
  Move to PyPI install of edx-proctoring.
  Temporarily comment bad index in ensure_indexes
  Shard the quality tasks on jenkins
  Updating migrations
  Making honor code not eligible for Certificate LEARNER-4117
  Update chem version to force new nltk requirement to be picked up
  addressing comments
  Stop using our fork of paver and use PyPI
  handle exceptions and create the necessary html in optimizely
  update edxval to 0.1.10
  EDUCATOR-2224 Discussion Topic with no posts have message.
  PLAT-1949 Less cluttered management command output
  PLAT-1945 Better management command ergonomics
  Upgrade NLTK to 3.2.5, fixup usage and tests
  PLAT-1947 Fix bok-choy test that failed under Django 1.11
  portfolio project readme
  implement portfolio project test upsell modal
  add video pipeline integration management command
  WIP stab at the plan for static assets in edx-platform
  Force bootstrap on for this page.
  Give paver timing logs a unique name always
  Version bump edx-enterprise to 0.65.3
  update edxval to 0.1.9
  Adding the new argument "name" (course_display_name) in create_course management command.
  Changing the service users for default clients.
  translations-6-feb
  PLAT-1943 Fix more naive datetime warnings
  Swap out exception class
  PLAT-1942 Handle xmodule_django field deprecations
  Version bump for edx-enterprise
  Update query for flag.
  Create new djangoapp and a new blank tab view.
  Add Jira ticket number to TODO comment
  Fix modulestore mongo tests
  Handle no assets results case properly
  Don't sort when sort is None
  Use Mongo aggregate hack to sort case-insensitive
  Also fix displayname typo in ensure_index comment
  Fix typos in contentstore's mongo index keys
  restoring tests to demonstrate correct library is loaded
  remove uncessary tests
  update functions to work in complex plane
  OAuth docs: minor fixes
  fix layout in learner profile
  OAuth docs, including decisions
  PLAT-1917 Stop using deprecated Location and AssetLocation
  PLAT-1916 Ignore existing usage of deprecated field_data
  clean grades service
  Update resume button functionality
  Changed 'bookmarks' django app to follow plugin pattern
  Updates to allow leaving a session on entitlements with only 1 run available
  Fix pep8 violation.
  Update comment.
  Remove unnecessary var.
  Consolidate overrides into base config.
  console_loglevel never used, remove it.
  syslog_addr config never used.
  Remove dev_env specific settings.
  Remove tracking_filename override.
  The dev_env parameter is never used in any of our configs.
  Remove un-necessary conditional.
  Move LOG_DIR setting next to LOGGING setting.
  Remove the debug override.
  On course run create request, validate course team user and raise validation error
  PLAT-1915 Stop using deprecated BaseException.message
  Update video record handling defensiveness
  Move extra links import into new file
  Revert "Fix layout in learner profile"
  Handle Exception in getting cookies from Sailthru
  update link of "Contact" in lms footer to lead new support form LEARNER-4041
  translate string on support form LEARNER-3962
  Clean up link list coalescence
  Always use a fresh tox env in Jenkins
  bump version of studio-frontend
  Add new waffle for modals.
  Remove a flaky html5 video test.
  more complete catch
  Add migration for removing old edx-enterprise password fields from the database.
  Updates the Branch IO Mobile App banner to not show in the web app
  ENT-839 Add ability to configure SP metadata for an IdP
  Rename require_page to invoke_page_bundle
  Migrate login.js to webpack
  Updating migrations
  edx-ora2 2.1.11
  Used the incorrect version of the Course Key when building Course Entitlements list
  Updates to the Course Entitlement API to block Learners from enrolling in runs that are not available.
  Revert "Aj/learner 3800"
  fix layout in learner profile
  Added print media in css
  Add Manage User Feature to Support Tool
  Add file to allow simple extension of sock links
  Test that video is only completed upon being watched
  PLAT-1350 Log Python warnings in production
  ENT-854 Remove references to old EnterpriseCustomerReportingConfiguration model fields.
  Define Studio sock links in separate themable file
  test fix
  Fixed for courses which have url_names with colons, e.g. problem:question1
  PR updates
  pr
  Updating migrations
  Lowering xss thresholds
  PR and quality updates
  update val version and clean external video export tests
  updated-translations-29-jan
  Set default value of pipeline_user_details to empty dict instead of None.
  Include forum status in LMS heartbeat service.
  Add tiny bar for 0 posts in My Stats.
  Fix title to My Stats with lock.
  Add ENTERPRISE_REPORTING_SECRET to cms settings.
  Allow inactive users to authenticate in Django 1.10+
  Drop due date section of Learner Analytics and fix grading section.
  Updating migrations
  Delete SAML Provider Configurations
  updated translations
  fix gating api exception handling
  Move request_cache to openedx.core.djangoapps
  PLAT-1834 Support running a11y tests in tox
  Allows insertion of content above Files & Uploads
  PR feedback (added docstring notes, cleared up log messages)
  changed 'course code lib' references to 'python lib' to maintain consistency
  Enabled python code lib import with GIT_IMPORT_STATIC set to False
  Updates to the Course Entitlement API to block Learners from enrolling in runs that are not available.
  Extends <head> in Studio course outline
  Update edx-ora2 to version 2.1.10
  Upgrade edx-enterprise package to 0.63.0.
  Shim query count assertions due to added SAVEPOINTs
  avoid unnecessary attempt to update an immutable dict
  Replace all clean_course_id form methods with common method.
  Pylint fixes to move number below allowed threshold.
  Convert course id to locator differently to accomodate Django 1.11
  Enable cache isolation for test_email tests
  Handle different cookie processing for Django 1.11
  Create course mode in one line without extra save.
  Move param addition for POST request to creation.
  Change POST request upon creation only.
  Change str conversion to text_type.
  Bump query counts for grading in Django 1.11.
  ENT-854 Add django-fernet-fields to requirements.
  render discussion_profile_page as a fragment
  Fix invalid certificate page for a11y and translation.
  Remove order dependencies in test_assets.py
  Update to week streak display logic
  PLAT-1900 Remove dependency on abandoned django-pipeline-forgiving package
  Updates course about date conditionals
  PLAT-1899 Fix some issues running under Django 1.10+
  deprecate html setting for web certs and set to true by default
  Refactor of the CourseEntitlement Refund API to handle refund failures
  PLAT-1890 Fixed assorted ModifyingEnforceTypeWarning warnings
  SFE version bump
  Fixing some violations to assuage pylint and get a bit of overhead
  Refactor student login  for readability and fix Django 1.11 issues
  Ensuring div and not button inside link tag for a11y.
  Fix styling of enterprise sidebar on registration page.
  Upgrade setuptools to avoid bug while installing of OpenStack requirements RE: pypa/setuptools#951
  update help link in header LEARNER-2437
  Allow public read and handle write errors for db cache
  Add screenshots
  fix list price on bundle button
  Teach the xss_linter about the require_page tag
  fix mobile responsive modal
  add condition for when no assets are found in the database
  Fixes to CMS failures in Django 1.11 tests
  LEARNER-3935 Style updates
  add try/catch for analytics api calls
  Last minute updates
  add grade information
  strip_all_tags_but_br_filter would return HTML safe string.
  EDUCATOR-2147 update message info for Community TA's in Membership Dashboard
  Add text_search param for searching by displayname
  Update github.txt
  Add price and url to context
  Fix crash using create_user
  a11y issues on upgrade footer.
  Fixing alignment of View Course button on course dashboard.
  Disable optimizely for xblocks for the mobile app
  upgrade jenkins node version to 8.9.3
  Request correct program for bundling test
  PLAT-1888 Update edx-proctoring to fix URL reversal in Django 1.10
  Increase rate-limit rate LEARNER-3858
  set default course visibility in catalog
  Fix modules[moduleId] error when running JS tests
  Removing flaky tests
  Move default Promo Video html to themable file
  Move default overlay content to themable file
  Quiet quality
  Move COURSE_PACING_CHANGED signal
  Fix Certificates import and signals code
  update edx-proctoring version
  Video completion marked at end of video
  Add FA loading spinner to each problem
  Updated the CourseEnrollment Admin form to correctly handle Course
  EDUCATOR-2016 In proctored exams, learner will not receive certificate when marked suspicious
  Updating migrations
  reducing logging for EDUCATOR-1290
  PLAT-1889 Fix URL config and reversal issues
  Allow space-separate xsslint pragrma disabling
  Add some more data for debugging bundling test and try potential fix
  Fix staff override score
  Add modal to track selection and dashboard
  Put Require.js in debug mode in acceptance tests, because they don't run with optimized assets
  Convert cms login.html to the require_page pattern in preparation for webpack
  PLAT-1831 Install prereqs for tox-based bok-choy and lettuce runs
  SFE Version bump
  Conditionally display gated content in courseware
  Move COURSE_START_DATE_CHANGED signal
  Update Schedules to use Plugin Signals
  Django App Plugins: Support for Signal Receivers
  Upgrade edx-enterprise package to 0.62.0.
  Enable Learner Analytics for staff users.
  Increased the page size for the entitlements API
  Add a form of static:require_module that assumes that the factory is self-initializing
  update package-lock file
  LEARNER-3429 Learner Analytics Dashboard Style updates
  Add logging to better understanding why skip activation email is not working as expected.
  auto certs for non-verfied enrollment modes
  add additional info to dom for debugging purposes
  Upgrade SFE to 0.8.3
  Upgrade SFE to 0.8.2
  If SFE enabled, hide sidebar and upload button
  Disable Learner Analytics for non-verified users.
  ENT-851 TPA Registry.get should return None if passed None.
  Adding in 8.370 to review Xblock
  Add empty npmignore file, override gitignore for NPM deps.
  Add util method for localizing catalog pricing
  Fix naive datetime warnings in CCX view tests
  implement upsell modal
  LEARNER-3661: Removes sessions a user has already claimed an entitlement for from list of available sessions
  update translations
  Append dashboard url with slash to improve user experience
  Update program detail fragment.
  show correct course info on instructor dashboard
  Update Registration/Signin Page to include static message
  bump all npm packages to latest and pin
  Add Learner Analytics dashboard.
  paver flag to run unittests without coverage
  Remove obsolete files
  move edx-private.txt requirements into configuration
  Refactor Django App Plugins to allow for additional features
  Allow customizing heartbeat checks
  PLAT-1858 Better capture of deprecation warnings
  PLAT-1885 Stop using deprecated BlockUsageLocator properties
  OAuth: support for auto_even_if_expired REQUEST_APPROVAL_PROMPT
  OAuth: update text for profile, email scopes as shown to SSO users
  LMS collectstatic now runs under Django 1.11
  Add babel-polyfill to fix IE11 bug
  Changes the Program Details page to show the most recently purchased entitlement data
  Remove accidental commit
  Revert "jaebradley/learner 3600 upsell modal"
  dummy test
  Improve documentation for the Open edX features
  ENT-678 Fix enterprise logo stretching in enterprise sidebar
  Add delete js tests
  Added field description for accessibility In account settings page when language changes the page is refreshed to apply changes. But user is not advised about this change before using the field. So added description so user knows about reload beforehand. LEARNER-3832
  implement modal and carousel
  Remove skipped testcases
  Quiet quality
  Update theming app to be a Django App Plugin
  Update schedules app to be a Django App Plugin
  Update grades app to be a Django App Plugin
  Update ace_common app to be a Django App Plugin
  Update setup.py with few Django App Plugins
  Enable Django App Plugins in LMS
  Enable Django App Plugins in CMS
  Support for Django App Plugins
  Rename schedules/docs/img to schedules/docs/images
  README docs for lms/envs directory
  PLAT-1884 Replace deprecated xblock.fragment usage
  Sort available sessions by start date.
  ENT-838 Management command to change an enterprise user's username
  Allow to override CERT_NAME_SHORT and CERT_NAME_LONG default values
  WL-1289 Made the certificates section on the user profile page site aware. Only the certificates earned that the user earned on that site will be visible.
  Transcript delete on Video Upload Page - EDUCATOR-1961
  Use percentage widths to fix flex-box bug
  check in package-lock.json [FEDX-399]
  Disable migration-checking test in Django 1.9+
  Ensure npm install before static asset pipeline tests.
  PLAT-1881 Fix datetimes lacking timezone information
  temporarily include pattern library node modules for sass builds [FEDX-498]
  Ensure entitlement session select initializes to enrolled session.
  use db cache in jenkins bok choy builds move migration calculation to reset test-db script
  Update program detail fragment url for mobile apps.
  Improve trancript sorting - EDUCATOR-2030
  Changed the secret key for ecommerce and discovery clients.
  updated-translations
  Fix course upsell styling when bootstrap is enabled
  make course actions an inline flexbox
  Show more sessions coming soon on course dashboard.
  Remove deprecated enabled field
  edx-enterprise version bump to 0.61.2 from 0.60.0
  Change upload button text
  Fix download transcript bug - EDUCATOR-2071
  Bump VAL version to 0.1.7
  Update user strings
  Transcript file upload - EDUCATOR-2029
  Refactor transcript upload handler to add language-overwrite support - EDUCATOR-2022
  Transcript upload backend for Video Upload Page – EDUCATOR-1854
  Download transcript on video upload page - EDUCATOR-1853
  Show transcripts on video uploads page - EDUCATOR-1662
  ENT-768 Display friendly error message for third party auth error
  Fix webcam not loading in safari.
  Move PluginManager out of api folder
  PLAT-1873 to_deprecated_string() cleanup part 2
  PLAT-1873 to_deprecated_string() cleanup part 1
  convert course/library listing to use reactrenderer
  Paver flag to update local bokchoy fingerprint
  Small fixes to LMS unit 1 failures in Django 1.11 tests
  move bootstrap doc from developer docs
  Rate limited /oauth2/access_token/ There has been some reports about attack on /oauth2/access_token/. This cause LMS to be down. This is being resolved by rate limiting the endpoint. LEARNER-3393
  Updated subsections grade percentage to start rounding Changed subsection gating on course outline to consider rounded off grade instead of absolute grade to decide whether to show a subsection which has a prerequisite or not. EDUCATOR-1676
  Ignore deprecated progress event for blocks with new Completion API.
  first stab at a js doc
  Delete unneeded Django Settings files
  Fix expire_old_entitlements celery task
  Test fixes for student Django app for v1.9
  Remove edx-private requirements from tox env.
  Form expected test redirect urls properly.
  course title link to course home when enrolled
  Update SFE & Paragon versions
  add tests for paver db cache command
  Small fixes to LMS unit 2 failures in Django 1.11 tests
  fix analytics docs for the schedules app
  remove backend_name
  UI Updates to Support Ent Data Synchronization
  Revert "Revert "ENT-779 Remove ProviderConfig.drop_existing_session field from DB.""
  Corrected incorrect refund data in refund logic
  Revert "Refactor of the CourseEntitlement Refund API to handle refund failures"
  Revert "ENT-779 Remove ProviderConfig.drop_existing_session field from DB."
  Pass serializable data to celery
  EDUCATOR-2055: resolving error causing upgrades to verified to fail
  Refactor of the CourseEntitlement Refund API to handle refund failures
  Mark sock strings for translation.
  Add some blocks to course_about.html
  WL-1395 | Added User profile for service users.
  Delete old development config files
  EDUCATOR-1290: logging
  Pass max_file_size_in_mbs to studio frontend
  move course upsell
  Convert weekly highlights exception to warning.
  ENT-775 Upgrade edx-enterprise to 0.60.0
  Schedules: Fix date translation of upsell messaging
  Add enrollment_course_run to entitlementserializer
  Wrap strings in gettext for graders file
  updated translations
  remove compilejsi18n commands
  Revert "temporary logs to check if anonymous user is accessing courseware"
  add update link on name field for django admin SAMLProviderConfigAdmin ENT-403
  Make target for pulling translations
  fix course staff ability to perform operations on instructor dashboard
  Remove username from force syncing in third party auth pipeline
  M…
rylanhall33 added a commit to rylanhall33/WebSocket-for-Python that referenced this issue Jun 15, 2022
It seems setuptools has an issue as reported by pypa/setuptools#951
keeneyetact added a commit to keeneyetact/python-webSocket that referenced this issue May 10, 2023
It seems setuptools has an issue as reported by pypa/setuptools#951
tanaypf9 pushed a commit to tanaypf9/pf9-requirements that referenced this issue May 20, 2024
setuptools seems to have some race issues when forcing a package
reinstallation with 'pip install --upgrade --force-reinstall' as
described in pypa/setuptools#951. Restrict
newer setuptools until a fixed package is released.

Change-Id: I8bc3f0e84b2812bbf7f8a9f54c870115ebbb052d
Link: pypa/setuptools#951
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests