prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Add CodeMeta JSON-LD Context File
  # Description
  
  As part of an IRIS-HEP initiative to improve the citation quality/ease for all software it has been recommended by @danielskatz that projects:
  - Track authors/contributors to software as it is developed
  - Create a citation metadata file in the software repo and keep it up to date
  - Link Github and Zenodo to get DOIs for major releases
  - In the README and docs clearly says how to cite the software
  
  `pyhf` already does all of this, as:
  - [x] There is an [`AUTHORS` file](https://github.com/scikit-hep/pyhf/blob/31d34a0edd91593d75181cc3ad71563a52600793/AUTHORS) as well as a [listing of the authors in the docs](https://scikit-hep.org/pyhf/index.html#authors)
  - [x] There is a [`.zenodo.json`](https://github.com/scikit-hep/pyhf/blob/2b0a1e2ba41a2aa1233511524e3aa78e696ead34/.zenodo.json) that formats Zenodo with the correct metadata and adds the ORCID of the authors
  - [x] There is a Zenodo DOI that is kept in sync with our release schedule (almost) fully automatically (almost as it requires 1 button click). [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1169739.svg)](https://doi.org/10.5281/zenodo.1169739)
  - [x] There is a Citation section in both the [`README`](https://github.com/scikit-hep/pyhf/blob/2b0a1e2ba41a2aa1233511524e3aa78e696ead34/README.rst#citation) and the [docs webpage](https://scikit-hep.org/pyhf/citations.html) with the preferred citation
  
  It has been pointed out though that we should also look into adding a [CodeMeta Project JSON-LD Context File](https://codemeta.github.io/jsonld/) as with it
  
  > zenodo will read [it] and will be basically the same as [schema.org](http://schema.org/) so that this will help google index software, and tools be able to use the metadata file in [softwareheritage.org](http://softwareheritage.org/) to automatically build a citation for a particular commit.
  
  (cc @gordonwatts as this might be of interest)
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `setup.py`
  Content:
  ```
  1 from setuptools import setup
  2 
  3 extras_require = {
  4     'shellcomplete': ['click_completion'],
  5     'tensorflow': [
  6         'tensorflow~=2.2.0',  # TensorFlow minor releases are as volatile as major
  7         'tensorflow-probability~=0.10.0',
  8     ],
  9     'torch': ['torch~=1.2'],
  10     'jax': ['jax~=0.1,>0.1.51', 'jaxlib~=0.1,>0.1.33'],
  11     'xmlio': ['uproot~=3.6'],  # Future proof against uproot4 API changes
  12     'minuit': ['iminuit~=1.4.3'],  # v1.5.0 breaks pyhf for 32b TensorFlow and PyTorch
  13 }
  14 extras_require['backends'] = sorted(
  15     set(
  16         extras_require['tensorflow']
  17         + extras_require['torch']
  18         + extras_require['jax']
  19         + extras_require['minuit']
  20     )
  21 )
  22 extras_require['contrib'] = sorted(set(['matplotlib', 'requests']))
  23 extras_require['lint'] = sorted(set(['pyflakes', 'black']))
  24 
  25 extras_require['test'] = sorted(
  26     set(
  27         extras_require['backends']
  28         + extras_require['xmlio']
  29         + extras_require['contrib']
  30         + extras_require['shellcomplete']
  31         + [
  32             'pytest~=6.0',
  33             'pytest-cov>=2.5.1',
  34             'pytest-mock',
  35             'pytest-benchmark[histogram]',
  36             'pytest-console-scripts',
  37             'pytest-mpl',
  38             'pydocstyle',
  39             'coverage>=4.0',  # coveralls
  40             'papermill~=2.0',
  41             'nteract-scrapbook~=0.2',
  42             'jupyter',
  43             'uproot~=3.3',
  44             'graphviz',
  45             'jsonpatch',
  46         ]
  47     )
  48 )
  49 extras_require['docs'] = sorted(
  50     set(
  51         [
  52             'sphinx>=3.1.2',
  53             'sphinxcontrib-bibtex',
  54             'sphinx-click',
  55             'sphinx_rtd_theme',
  56             'nbsphinx',
  57             'ipywidgets',
  58             'sphinx-issues',
  59             'sphinx-copybutton>0.2.9',
  60         ]
  61     )
  62 )
  63 extras_require['develop'] = sorted(
  64     set(
  65         extras_require['docs']
  66         + extras_require['lint']
  67         + extras_require['test']
  68         + ['nbdime', 'bump2version', 'ipython', 'pre-commit', 'check-manifest', 'twine']
  69     )
  70 )
  71 extras_require['complete'] = sorted(set(sum(extras_require.values(), [])))
  72 
  73 
  74 setup(
  75     extras_require=extras_require,
  76     use_scm_version=lambda: {'local_scheme': lambda version: ''},
  77 )
  78
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/setup.py b/setup.py
  --- a/setup.py
  +++ b/setup.py
  @@ -65,7 +65,15 @@
           extras_require['docs']
           + extras_require['lint']
           + extras_require['test']
  -        + ['nbdime', 'bump2version', 'ipython', 'pre-commit', 'check-manifest', 'twine']
  +        + [
  +            'nbdime',
  +            'bump2version',
  +            'ipython',
  +            'pre-commit',
  +            'check-manifest',
  +            'codemetapy>=0.3.4',
  +            'twine',
  +        ]
       )
   )
   extras_require['complete'] = sorted(set(sum(extras_require.values(), [])))
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -65,7 +65,15 @@\n         extras_require['docs']\n         + extras_require['lint']\n         + extras_require['test']\n-        + ['nbdime', 'bump2version', 'ipython', 'pre-commit', 'check-manifest', 'twine']\n+        + [\n+            'nbdime',\n+            'bump2version',\n+            'ipython',\n+            'pre-commit',\n+            'check-manifest',\n+            'codemetapy>=0.3.4',\n+            'twine',\n+        ]\n     )\n )\n extras_require['complete'] = sorted(set(sum(extras_require.values(), [])))\n", "issue": "Add CodeMeta JSON-LD Context File\n# Description\r\n\r\nAs part of an IRIS-HEP initiative to improve the citation quality/ease for all software it has been recommended by @danielskatz that projects:\r\n- Track authors/contributors to software as it is developed\r\n- Create a citation metadata file in the software repo and keep it up to date\r\n- Link Github and Zenodo to get DOIs for major releases\r\n- In the README and docs clearly says how to cite the software\r\n\r\n`pyhf` already does all of this, as:\r\n- [x] There is an [`AUTHORS` file](https://github.com/scikit-hep/pyhf/blob/31d34a0edd91593d75181cc3ad71563a52600793/AUTHORS) as well as a [listing of the authors in the docs](https://scikit-hep.org/pyhf/index.html#authors)\r\n- [x] There is a [`.zenodo.json`](https://github.com/scikit-hep/pyhf/blob/2b0a1e2ba41a2aa1233511524e3aa78e696ead34/.zenodo.json) that formats Zenodo with the correct metadata and adds the ORCID of the authors\r\n- [x] There is a Zenodo DOI that is kept in sync with our release schedule (almost) fully automatically (almost as it requires 1 button click). [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1169739.svg)](https://doi.org/10.5281/zenodo.1169739)\r\n- [x] There is a Citation section in both the [`README`](https://github.com/scikit-hep/pyhf/blob/2b0a1e2ba41a2aa1233511524e3aa78e696ead34/README.rst#citation) and the [docs webpage](https://scikit-hep.org/pyhf/citations.html) with the preferred citation\r\n\r\nIt has been pointed out though that we should also look into adding a [CodeMeta Project JSON-LD Context File](https://codemeta.github.io/jsonld/) as with it\r\n\r\n> zenodo will read [it] and will be basically the same as [schema.org](http://schema.org/) so that this will help google index software, and tools be able to use the metadata file in [softwareheritage.org](http://softwareheritage.org/) to automatically build a citation for a particular commit.\r\n\r\n(cc @gordonwatts as this might be of interest)\n", "before_files": [{"content": "from setuptools import setup\n\nextras_require = {\n    'shellcomplete': ['click_completion'],\n    'tensorflow': [\n        'tensorflow~=2.2.0',  # TensorFlow minor releases are as volatile as major\n        'tensorflow-probability~=0.10.0',\n    ],\n    'torch': ['torch~=1.2'],\n    'jax': ['jax~=0.1,>0.1.51', 'jaxlib~=0.1,>0.1.33'],\n    'xmlio': ['uproot~=3.6'],  # Future proof against uproot4 API changes\n    'minuit': ['iminuit~=1.4.3'],  # v1.5.0 breaks pyhf for 32b TensorFlow and PyTorch\n}\nextras_require['backends'] = sorted(\n    set(\n        extras_require['tensorflow']\n        + extras_require['torch']\n        + extras_require['jax']\n        + extras_require['minuit']\n    )\n)\nextras_require['contrib'] = sorted(set(['matplotlib', 'requests']))\nextras_require['lint'] = sorted(set(['pyflakes', 'black']))\n\nextras_require['test'] = sorted(\n    set(\n        extras_require['backends']\n        + extras_require['xmlio']\n        + extras_require['contrib']\n        + extras_require['shellcomplete']\n        + [\n            'pytest~=6.0',\n            'pytest-cov>=2.5.1',\n            'pytest-mock',\n            'pytest-benchmark[histogram]',\n            'pytest-console-scripts',\n            'pytest-mpl',\n            'pydocstyle',\n            'coverage>=4.0',  # coveralls\n            'papermill~=2.0',\n            'nteract-scrapbook~=0.2',\n            'jupyter',\n            'uproot~=3.3',\n            'graphviz',\n            'jsonpatch',\n        ]\n    )\n)\nextras_require['docs'] = sorted(\n    set(\n        [\n            'sphinx>=3.1.2',\n            'sphinxcontrib-bibtex',\n            'sphinx-click',\n            'sphinx_rtd_theme',\n            'nbsphinx',\n            'ipywidgets',\n            'sphinx-issues',\n            'sphinx-copybutton>0.2.9',\n        ]\n    )\n)\nextras_require['develop'] = sorted(\n    set(\n        extras_require['docs']\n        + extras_require['lint']\n        + extras_require['test']\n        + ['nbdime', 'bump2version', 'ipython', 'pre-commit', 'check-manifest', 'twine']\n    )\n)\nextras_require['complete'] = sorted(set(sum(extras_require.values(), [])))\n\n\nsetup(\n    extras_require=extras_require,\n    use_scm_version=lambda: {'local_scheme': lambda version: ''},\n)\n", "path": "setup.py"}], "after_files": [{"content": "from setuptools import setup\n\nextras_require = {\n    'shellcomplete': ['click_completion'],\n    'tensorflow': [\n        'tensorflow~=2.2.0',  # TensorFlow minor releases are as volatile as major\n        'tensorflow-probability~=0.10.0',\n    ],\n    'torch': ['torch~=1.2'],\n    'jax': ['jax~=0.1,>0.1.51', 'jaxlib~=0.1,>0.1.33'],\n    'xmlio': ['uproot~=3.6'],  # Future proof against uproot4 API changes\n    'minuit': ['iminuit~=1.4.3'],  # v1.5.0 breaks pyhf for 32b TensorFlow and PyTorch\n}\nextras_require['backends'] = sorted(\n    set(\n        extras_require['tensorflow']\n        + extras_require['torch']\n        + extras_require['jax']\n        + extras_require['minuit']\n    )\n)\nextras_require['contrib'] = sorted(set(['matplotlib', 'requests']))\nextras_require['lint'] = sorted(set(['pyflakes', 'black']))\n\nextras_require['test'] = sorted(\n    set(\n        extras_require['backends']\n        + extras_require['xmlio']\n        + extras_require['contrib']\n        + extras_require['shellcomplete']\n        + [\n            'pytest~=6.0',\n            'pytest-cov>=2.5.1',\n            'pytest-mock',\n            'pytest-benchmark[histogram]',\n            'pytest-console-scripts',\n            'pytest-mpl',\n            'pydocstyle',\n            'coverage>=4.0',  # coveralls\n            'papermill~=2.0',\n            'nteract-scrapbook~=0.2',\n            'jupyter',\n            'uproot~=3.3',\n            'graphviz',\n            'jsonpatch',\n        ]\n    )\n)\nextras_require['docs'] = sorted(\n    set(\n        [\n            'sphinx>=3.1.2',\n            'sphinxcontrib-bibtex',\n            'sphinx-click',\n            'sphinx_rtd_theme',\n            'nbsphinx',\n            'ipywidgets',\n            'sphinx-issues',\n            'sphinx-copybutton>0.2.9',\n        ]\n    )\n)\nextras_require['develop'] = sorted(\n    set(\n        extras_require['docs']\n        + extras_require['lint']\n        + extras_require['test']\n        + [\n            'nbdime',\n            'bump2version',\n            'ipython',\n            'pre-commit',\n            'check-manifest',\n            'codemetapy>=0.3.4',\n            'twine',\n        ]\n    )\n)\nextras_require['complete'] = sorted(set(sum(extras_require.values(), [])))\n\n\nsetup(\n    extras_require=extras_require,\n    use_scm_version=lambda: {'local_scheme': lambda version: ''},\n)\n", "path": "setup.py"}]}