internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: scikit-hep/pyhf

Issue:
pyhf commandline tools requires uproot extra
# Description

just issuing `pyhf --help` requires the uproot extra since `commandline.py` imports `writexml`.

# Expected Behavior

I don't need uproot if I don't want to use json2xml or xml2json

# Actual Behavior

I can't use `pyhf` without installing uproot.

# Steps to Reproduce

install master and run pyhf

# Checklist

- [x] Run `git fetch` to get the most up to date version of `master`
- [x] Searched through existing Issues to confirm this is not a duplicate issue
- [x] Filled out the Description, Expected Behavior, Actual Behavior, and Steps to Reproduce sections above or have edited/removed them in a way that fully describes the issue



Discussion:

Resolving patch:
diff --git a/pyhf/commandline.py b/pyhf/commandline.py
--- a/pyhf/commandline.py
+++ b/pyhf/commandline.py
@@ -4,7 +4,6 @@
 import json
 import os
 
-from . import writexml
 from .utils import hypotest
 from .pdf import Workspace
 from .version import __version__
@@ -81,6 +80,7 @@ def json2xml(workspace, output_dir, specroot, dataroot, resultprefix):
             "xmlio extra: pip install pyhf[xmlio] or install uproot "
             "manually: pip install uproot"
         )
+    from . import writexml
 
     ensure_dirs(output_dir)
     with click.open_file(workspace, 'r') as specstream:


Test patch:
Repository: scikit-hep/pyhf

Issue:
Determine if papermill v1.0 API change is a problem
# Description

The [papermill `v1.0` release will introduce API breaking changes](https://github.com/nteract/papermill/blob/d554193bc458797b63af1f94964883d5dcca2418/README.md). It would be good to determine if these changes will matter for pyhf testing and require the addition of [scrapbook](https://nteract-scrapbook.readthedocs.io/en/latest/) or if the API change doesn't affect pyhf.


Discussion:

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -37,7 +37,8 @@
         'jupyter',
         'nbdime',
         'uproot~=3.3',
-        'papermill~=0.16',
+        'papermill~=1.0',
+        'nteract-scrapbook~=0.2',
         'graphviz',
         'bumpversion',
         'sphinx',


Test patch:
diff --git a/tests/test_notebooks.py b/tests/test_notebooks.py
--- a/tests/test_notebooks.py
+++ b/tests/test_notebooks.py
@@ -1,6 +1,7 @@
 import sys
 import os
 import papermill as pm
+import scrapbook as sb
 
 
 def test_notebooks(tmpdir):
@@ -39,5 +40,5 @@ def test_notebooks(tmpdir):
         **common_kwargs
     )
 
-    nb = pm.read_notebook(str(outputnb))
-    assert nb.data['number_2d_successpoints'] > 200
+    nb = sb.read_notebook(str(outputnb))
+    assert nb.scraps['number_2d_successpoints'].data > 200
Repository: scikit-hep/pyhf

Issue:
TensorFlow einsum behavior change
# Description

In the test suite the `test_einsum[tensorflow]` [test is failing](https://travis-ci.org/diana-hep/pyhf/jobs/548493214#L689-L714) for `tensorflow` `v1.14.0`.

# Expected Behavior

`test_einsum[tensorflow]` passes

# Actual Behavior

```
backend = (<pyhf.tensor.tensorflow_backend.tensorflow_backend object at 0x7f11de50be10>, None)
    def test_einsum(backend):
        tb = pyhf.tensorlib
        x = np.arange(20).reshape(5, 4).tolist()
    
        if isinstance(pyhf.tensorlib, pyhf.tensor.mxnet_backend):
            with pytest.raises(NotImplementedError):
                assert tb.einsum('ij->ji', [1, 2, 3])
        else:
>           assert np.all(tb.tolist(tb.einsum('ij->ji', x)) == np.asarray(x).T.tolist())
tests/test_tensor.py:200: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pyhf/tensor/tensorflow_backend.py:260: in einsum
    return tf.einsum(subscripts, *operands)
../../../virtualenv/python3.6.3/lib/python3.6/site-packages/tensorflow/python/ops/special_math_ops.py:255: in einsum
    input_shapes = [x.get_shape() for x in inputs]
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.0 = <list_iterator object at 0x7f11cc06bb38>
>   input_shapes = [x.get_shape() for x in inputs]
E   AttributeError: 'list' object has no attribute 'get_shape'
```

# Steps to Reproduce

Run the test suite.

```
pytest -s tests/test_tensor.py
```

# Checklist

- [x] Run `git fetch` to get the most up to date version of `master`
- [x] Searched through existing Issues to confirm this is not a duplicate issue
- [x] Filled out the Description, Expected Behavior, Actual Behavior, and Steps to Reproduce sections above or have edited/removed them in a way that fully describes the issue



Discussion:

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -12,7 +12,7 @@
 
 extras_require = {
     'tensorflow': [
-        'tensorflow~=1.13',
+        'tensorflow~=1.14',
         'tensorflow-probability~=0.5',
         'numpy<=1.14.5,>=1.14.0',  # Lower of 1.14.0 instead of 1.13.3 to ensure doctest pass
         'setuptools<=39.1.0',


Test patch:
diff --git a/tests/test_tensor.py b/tests/test_tensor.py
--- a/tests/test_tensor.py
+++ b/tests/test_tensor.py
@@ -197,7 +197,9 @@ def test_einsum(backend):
         with pytest.raises(NotImplementedError):
             assert tb.einsum('ij->ji', [1, 2, 3])
     else:
-        assert np.all(tb.tolist(tb.einsum('ij->ji', x)) == np.asarray(x).T.tolist())
+        assert np.all(
+            tb.tolist(tb.einsum('ij->ji', tb.astensor(x))) == np.asarray(x).T.tolist()
+        )
         assert (
             tb.tolist(
                 tb.einsum('i,j->ij', tb.astensor([1, 1, 1]), tb.astensor([1, 2, 3]))
Repository: scikit-hep/pyhf

Issue:
Remove six from install requires
# Description

At the moment [`six` is a required library](https://github.com/scikit-hep/pyhf/blob/c61b7e8da9d951d11e01a0f4e3e1c2a880521486/setup.py#L100). However, (as noted on [`six`'s PyPI page](https://pypi.org/project/six/1.14.0/))

> Six is a Python 2 and 3 compatibility library. It provides utility functions for smoothing over the differences between the Python versions with the goal of writing Python code that is compatible on both Python versions.

As pyhf is Python 3 only as of PR #704, `six` should no longer be used and shouldn't be required. At the moment its only use is in [`src/pyhf/modifiers/__init__.py`](https://github.com/scikit-hep/pyhf/blob/c61b7e8da9d951d11e01a0f4e3e1c2a880521486/src/pyhf/modifiers/__init__.py) to use `string_types`.


Discussion:

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -97,7 +97,6 @@
         'scipy',  # requires numpy, which is required by pyhf and tensorflow
         'click>=6.0',  # for console scripts,
         'tqdm',  # for readxml
-        'six',  # for modifiers
         'jsonschema>=v3.0.0a2',  # for utils, alpha-release for draft 6
         'jsonpatch',
         'pyyaml',  # for parsing CLI equal-delimited options
diff --git a/src/pyhf/modifiers/__init__.py b/src/pyhf/modifiers/__init__.py
--- a/src/pyhf/modifiers/__init__.py
+++ b/src/pyhf/modifiers/__init__.py
@@ -1,4 +1,3 @@
-from six import string_types
 import logging
 
 from .. import exceptions
@@ -147,7 +146,7 @@ def wrapper(cls):
     if kwargs:
         raise ValueError('Unparsed keyword arguments {}'.format(kwargs.keys()))
     # check to make sure the given name is a string, if passed in one
-    if not isinstance(name, string_types) and name is not None:
+    if not isinstance(name, str) and name is not None:
         raise TypeError(
             '@modifier must be given a string. You gave it {}'.format(type(name))
         )


Test patch:
Repository: scikit-hep/pyhf

Issue:
bump jsonschema to v3.2.0+ to support draft 6
Currently on alpha release 3.0.x but can bump to 3.2.0 which was released.


Discussion:

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -96,7 +96,7 @@
         'scipy',  # requires numpy, which is required by pyhf and tensorflow
         'click>=6.0',  # for console scripts,
         'tqdm',  # for readxml
-        'jsonschema>=v3.0.0a2',  # for utils, alpha-release for draft 6
+        'jsonschema>=3.2.0',  # for utils
         'jsonpatch',
         'pyyaml',  # for parsing CLI equal-delimited options
     ],


Test patch:
Repository: scikit-hep/pyhf

Issue:
Add Python 3.8 to CI
# Description

The branch [`ci/add-Python-3.8-to-CI`](https://github.com/diana-hep/pyhf/compare/ci/add-Python-3.8-to-CI) adds Python 3.8 to the CI. However, as [PyTorch won't have a Python 3.8 wheel until the next release](https://github.com/pytorch/pytorch/issues/21741#issuecomment-541242504) this won't be able to happen until around December 2019.


Discussion:

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -87,6 +87,7 @@
         "Programming Language :: Python :: 3",
         "Programming Language :: Python :: 3.6",
         "Programming Language :: Python :: 3.7",
+        "Programming Language :: Python :: 3.8",
     ],
     package_dir={'': 'src'},
     packages=find_packages(where='src'),


Test patch:
diff --git a/.github/workflows/release_tests.yml b/.github/workflows/release_tests.yml
--- a/.github/workflows/release_tests.yml
+++ b/.github/workflows/release_tests.yml
@@ -14,11 +14,11 @@ jobs:
     strategy:
       matrix:
         os: [ubuntu-latest, macos-latest]
-        python-version: [3.7]
+        python-version: [3.7, 3.8]
 
     steps:
     - uses: actions/checkout@v2
-    - name: Set up Python 3.7
+    - name: Set up Python ${{ matrix.python-version }}
       uses: actions/setup-python@v1
       with:
         python-version: ${{ matrix.python-version }}
Repository: scikit-hep/pyhf

Issue:
Update PyPI keywords and classifies in setup.py
# Description

As JAX is now a supported backend then it should additionally be added to the [list of keywords in `setup.py`](https://github.com/scikit-hep/pyhf/blob/917bd5127c1da023b279c076bb41614fbb859487/setup.py#L85). Additionally, the [classifies](https://packaging.python.org/guides/distributing-packages-using-setuptools/#classifiers) should be updated as well to include a `Development Status`, `License`, `Intended Audience`, and `Topic`.


Discussion:
Working from the [full list of PyPI recognized classifiers](https://pypi.org/classifiers/):

**Development Status**

As far as `Development Status` goes, we are not at a `v1.0.0` release so we could be a `Development Status :: 4 - Beta` but at the same time `pyhf` is definitely being used so I would lean towards it being put under `Development Status :: 5 - Production/Stable`.

**License**

`License :: OSI Approved :: Apache Software License`

**Intended Audience**

`Intended Audience :: Science/Research`

**Topic**

- `Topic :: Scientific/Engineering`
- `Topic :: Scientific/Engineering :: Physics`

Likewise, for [Project URLS](https://packaging.python.org/guides/distributing-packages-using-setuptools/#project-urls)

```python
project_urls={
    'Documentation': 'https://scikit-hep.org/pyhf/',
    'Source': 'https://github.com/scikit-hep/pyhf',
    'Tracker': 'https://github.com/scikit-hep/pyhf/issues',
},
```

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -79,11 +79,21 @@
     long_description=long_description,
     long_description_content_type='text/x-rst',
     url='https://github.com/scikit-hep/pyhf',
+    project_urls={
+        "Documentation": "https://scikit-hep.org/pyhf/",
+        "Source": "https://github.com/scikit-hep/pyhf",
+        "Tracker": "https://github.com/scikit-hep/pyhf/issues",
+    },
     author='Lukas Heinrich, Matthew Feickert, Giordon Stark',
     author_email='lukas.heinrich@cern.ch, matthew.feickert@cern.ch, gstark@cern.ch',
     license='Apache',
-    keywords='physics fitting numpy scipy tensorflow pytorch',
+    keywords='physics fitting numpy scipy tensorflow pytorch jax',
     classifiers=[
+        "Development Status :: 4 - Beta",
+        "License :: OSI Approved :: Apache Software License",
+        "Intended Audience :: Science/Research",
+        "Topic :: Scientific/Engineering",
+        "Topic :: Scientific/Engineering :: Physics",
         "Programming Language :: Python :: 3",
         "Programming Language :: Python :: 3.6",
         "Programming Language :: Python :: 3.7",


Test patch:
Repository: scikit-hep/pyhf

Issue:
Docs build broken with Sphinx v3.1.0
# Description

Today (2020-06-08) [Sphinx `v3.1.0`](https://github.com/sphinx-doc/sphinx/releases/tag/v3.1.0) was released which now classifies pyhf's particular usages of the "autoclass" directive as an Error in the docs generated for [`interpolators/code0.py`](https://github.com/scikit-hep/pyhf/blob/62becc2e469f89babf75534a2decfb3ace6ff179/src/pyhf/interpolators/code0.py)

```
Warning, treated as error:
/home/runner/work/pyhf/pyhf/docs/_generated/pyhf.interpolators.code0.rst:8:Error in "autoclass" directive:
1 argument(s) required, 0 supplied.

.. autoclass::
   :show-inheritance:







   .. rubric:: Methods



   .. automethod:: .__init__
##[error]Process completed with exit code 1.
```


Discussion:
I'm going to escalate this to an Sphinx Issue as it seems that `Sphinx v3.1.0` broke things for a lot of projects. :(

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -46,7 +46,7 @@
 extras_require['docs'] = sorted(
     set(
         [
-            'sphinx',
+            'sphinx!=3.1.0',
             'sphinxcontrib-bibtex',
             'sphinx-click',
             'sphinx_rtd_theme',


Test patch:
Repository: scikit-hep/pyhf

Issue:
Remove cloudpickle constraints when updating to TensorFlow Probability v0.11
# Description

Once TensorFlow Probability `v0.11.0` is released there will no longer be the need for PR #915, and so that should be reverted.

Related Issues: #815 



Discussion:

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -3,8 +3,7 @@
 extras_require = {
     'tensorflow': [
         'tensorflow~=2.0',
-        'tensorflow-probability~=0.8',
-        'cloudpickle!=1.5.0',  # TODO: Temp patch until tfp v0.11
+        'tensorflow-probability~=0.10',  # TODO: Temp patch until tfp v0.11
     ],
     'torch': ['torch~=1.2'],
     'jax': ['jax~=0.1,>0.1.51', 'jaxlib~=0.1,>0.1.33'],


Test patch:
Repository: scikit-hep/pyhf

Issue:
Docs build broken with Sphinx v3.1.1
# Description

After the new Sphinx patch release [`v3.1.1`](https://github.com/sphinx-doc/sphinx/releases/tag/v3.1.1) was released there is an error with building the docs due to `autodocumenting`:

```

WARNING: don't know which module to import for autodocumenting 'optimize.opt_jax.jax_optimizer' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name)
WARNING: don't know which module to import for autodocumenting 'optimize.opt_minuit.minuit_optimizer' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name)
WARNING: don't know which module to import for autodocumenting 'optimize.opt_pytorch.pytorch_optimizer' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name)
WARNING: don't know which module to import for autodocumenting 'optimize.opt_scipy.scipy_optimizer' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name)
WARNING: don't know which module to import for autodocumenting 'optimize.opt_tflow.tflow_optimizer' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name)
WARNING: don't know which module to import for autodocumenting 'tensor.jax_backend.jax_backend' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name)
WARNING: don't know which module to import for autodocumenting 'tensor.numpy_backend.numpy_backend' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name)
WARNING: don't know which module to import for autodocumenting 'tensor.pytorch_backend.pytorch_backend' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name)
WARNING: don't know which module to import for autodocumenting 'tensor.tensorflow_backend.tensorflow_backend' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name)
```


Discussion:
This is escalated to [Sphinx Issue 7844](https://github.com/sphinx-doc/sphinx/issues/7844).

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -47,7 +47,7 @@
 extras_require['docs'] = sorted(
     set(
         [
-            'sphinx~=3.0.0',  # Sphinx v3.1.X regressions break docs
+            'sphinx>=3.1.2',
             'sphinxcontrib-bibtex',
             'sphinx-click',
             'sphinx_rtd_theme',


Test patch:
Repository: scikit-hep/pyhf

Issue:
Document simplemodels API
# Description

In discussion today with @coolalexzb, I realized that the [`pyhf.simplemodels`](https://github.com/scikit-hep/pyhf/blob/79984be837ef6e53bdd12a82163c34d47d507dba/src/pyhf/simplemodels.py) API is not documented in our docs. Even thought this isn't something we want people to really use, we still show it in our examples and so it needs documentation.


Discussion:

Resolving patch:
diff --git a/src/pyhf/simplemodels.py b/src/pyhf/simplemodels.py
--- a/src/pyhf/simplemodels.py
+++ b/src/pyhf/simplemodels.py
@@ -2,6 +2,38 @@
 
 
 def hepdata_like(signal_data, bkg_data, bkg_uncerts, batch_size=None):
+    """
+    Construct a simple single channel :class:`~pyhf.pdf.Model` with a
+    :class:`~pyhf.modifiers.shapesys` modifier representing an uncorrelated
+    background uncertainty.
+
+    Example:
+        >>> import pyhf
+        >>> pyhf.set_backend("numpy")
+        >>> model = pyhf.simplemodels.hepdata_like(
+        ...     signal_data=[12.0, 11.0], bkg_data=[50.0, 52.0], bkg_uncerts=[3.0, 7.0]
+        ... )
+        >>> model.schema
+        'model.json'
+        >>> model.config.channels
+        ['singlechannel']
+        >>> model.config.samples
+        ['background', 'signal']
+        >>> model.config.parameters
+        ['mu', 'uncorr_bkguncrt']
+        >>> model.expected_data(model.config.suggested_init())
+        array([ 62.        ,  63.        , 277.77777778,  55.18367347])
+
+    Args:
+        signal_data (`list`): The data in the signal sample
+        bkg_data (`list`): The data in the background sample
+        bkg_uncerts (`list`): The statistical uncertainty on the background sample counts
+        batch_size (`None` or `int`): Number of simultaneous (batched) Models to compute
+
+    Returns:
+        ~pyhf.pdf.Model: The statistical model adhering to the :obj:`model.json` schema
+
+    """
     spec = {
         'channels': [
             {


Test patch:
Repository: scikit-hep/pyhf

Issue:
use short URL for better help message
The current help msg has a long url, but this includes line breaks
which makes it hard to copy. 

```
pyhf cls --help 
Usage: pyhf cls [OPTIONS] [WORKSPACE]

  Compute CLs value(s) for a given pyhf workspace.

  Example:

  .. code-block:: shell

      $ curl -sL https://raw.githubusercontent.com/scikit-
      hep/pyhf/master/docs/examples/json/2-bin_1-channel.json | pyhf cls
      {         "CLs_exp": [             0.07807427911686156,
      0.17472571775474618,             0.35998495263681285,
      0.6343568235898907,             0.8809947004472013         ],
      "CLs_obs": 0.3599845631401915     }

Options:
  --output-file TEXT              The location of the output json file. If not
                                  specified, prints to screen.

  --measurement TEXT
  -p, --patch TEXT
  --testpoi FLOAT
  --teststat [q|qtilde]
  --backend [numpy|pytorch|tensorflow|jax|np|torch|tf]
                                  The tensor backend used for the calculation.
  --optimizer TEXT
  --optconf EQUAL-DELIMITED OPTION
  -h, --help                      Show this message and exit.

```


Discussion:
tried to fix this, but it makes the docs look even wonkier?

```
Usage: pyhf cls [OPTIONS] [WORKSPACE]

  Compute CLs value(s) for a given pyhf workspace.

  Example:

  .. code-block:: shell

     $ curl -sL https://git.io/JJYDE | pyhf cls    {        "CLs_exp": [
     0.07807427911686156,            0.17472571775474618,
     0.35998495263681285,            0.6343568235898907,
     0.8809947004472013        ],        "CLs_obs": 0.3599845631401915    }

```

Resolving patch:
diff --git a/src/pyhf/cli/infer.py b/src/pyhf/cli/infer.py
--- a/src/pyhf/cli/infer.py
+++ b/src/pyhf/cli/infer.py
@@ -54,7 +54,9 @@ def cls(
 
     .. code-block:: shell
 
-        $ curl -sL https://raw.githubusercontent.com/scikit-hep/pyhf/master/docs/examples/json/2-bin_1-channel.json | pyhf cls
+        $ curl -sL https://git.io/JJYDE | pyhf cls
+
+        \b
         {
             "CLs_exp": [
                 0.07807427911686156,


Test patch:
Repository: scikit-hep/pyhf

Issue:
Documentation: meaning of value for return_fitted_val=True
# Description

In this code snippet from the documentation 

```python
>>> pyhf.infer.mle.fixed_poi_fit(test_poi, data, model, return_fitted_val=True)
(array([1.        , 0.97224597, 0.87553894]), array([28.92218013]))
```

it isn't clear what the meaning of `array([28.92218013])` is. Is it likelihood, log likelihood, -log likelihood, -2 log likelihood?
It is the latter, but that is not clear.

Applies to 

https://scikit-hep.org/pyhf/_generated/pyhf.infer.mle.fixed_poi_fit.html
or
https://scikit-hep.org/pyhf/_generated/pyhf.infer.mle.fit.html

## Is your feature request related to a problem? Please describe.

I wasn't sure, so I had to try a few things to figure it out.

### Describe the solution you'd like

Add a note to the documentation for the convention.

### Describe alternatives you've considered

banging my head against the wall.

# Relevant Issues and Pull Requests




Discussion:
Another note... it's not obvious what the return order will be when both return_fitted and return_tail_prob are both true

Resolving patch:
diff --git a/src/pyhf/infer/mle.py b/src/pyhf/infer/mle.py
--- a/src/pyhf/infer/mle.py
+++ b/src/pyhf/infer/mle.py
@@ -22,6 +22,10 @@ def fit(data, pdf, init_pars=None, par_bounds=None, **kwargs):
     """
     Run a unconstrained maximum likelihood fit.
 
+    .. note::
+
+        :func:`twice_nll` is the objective function.
+
     Example:
         >>> import pyhf
         >>> pyhf.set_backend("numpy")
@@ -54,6 +58,10 @@ def fixed_poi_fit(poi_val, data, pdf, init_pars=None, par_bounds=None, **kwargs)
     """
     Run a maximum likelihood fit with the POI value fixed.
 
+    .. note::
+
+        :func:`twice_nll` is the objective function.
+
     Example:
         >>> import pyhf
         >>> pyhf.set_backend("numpy")


Test patch:
Repository: scikit-hep/pyhf

Issue:
Keep tighter version constraints on TensorFlow releases
# Description

As Issue #997 makes it clear that minor releases might as well be major releases for TensorFlow, then it is probably worth keeping tighter version constraints on them and just watching the releases of TensorFlow and TensorFlow Probability to see when we can relax these.


Discussion:

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -3,8 +3,8 @@
 extras_require = {
     'shellcomplete': ['click_completion'],
     'tensorflow': [
-        'tensorflow~=2.0',
-        'tensorflow-probability~=0.10',  # TODO: Temp patch until tfp v0.11
+        'tensorflow~=2.2.0',  # TensorFlow minor releases are as volatile as major
+        'tensorflow-probability~=0.10.0',
     ],
     'torch': ['torch~=1.2'],
     'jax': ['jax~=0.1,>0.1.51', 'jaxlib~=0.1,>0.1.33'],


Test patch: