Hello community,
here is the log from the commit of package python-debtcollector for
openSUSE:Factory checked in at 2019-03-20 13:18:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-debtcollector (Old)
and /work/SRC/openSUSE:Factory/.python-debtcollector.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-debtcollector"
Wed Mar 20 13:18:18 2019 rev:12 rq:682295 version:1.20.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-debtcollector/python-debtcollector.changes
2018-09-07 15:37:02.750688445 +0200
+++
/work/SRC/openSUSE:Factory/.python-debtcollector.new.28833/python-debtcollector.changes
2019-03-20 13:18:20.841357075 +0100
@@ -1,0 +2,16 @@
+Mon Oct 8 19:13:30 UTC 2018 - [email protected]
+
+- update to version 1.20.0
+ - set default python to python3
+ - fix tox python3 overrides
+ - Update reno for stable/queens
+ - pypy is not checked at gate
+ - Trivial: Update pypi url to new url
+ - Update links in README
+ - Remove setting of version/release from releasenotes
+ - remove obsolete tox environments
+ - Switch to stestr
+ - Updated from global requirements
+ - add lower-constraints job
+
+-------------------------------------------------------------------
Old:
----
debtcollector-1.19.0.tar.gz
New:
----
debtcollector-1.20.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-debtcollector.spec ++++++
--- /var/tmp/diff_new_pack.oqQSZy/_old 2019-03-20 13:18:21.505356929 +0100
+++ /var/tmp/diff_new_pack.oqQSZy/_new 2019-03-20 13:18:21.509356928 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-debtcollector
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,13 +12,13 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global pypi_name debtcollector
Name: python-debtcollector
-Version: 1.19.0
+Version: 1.20.0
Release: 0
Summary: A collection of Python deprecation patterns and strategies
License: Apache-2.0
@@ -32,14 +32,14 @@
BuildRequires: python2-pbr >= 2.0.0
BuildRequires: python2-python-subunit
BuildRequires: python2-setuptools
-BuildRequires: python2-testrepository
+BuildRequires: python2-stestr
BuildRequires: python2-wrapt >= 1.7.0
BuildRequires: python3-devel
BuildRequires: python3-fixtures
BuildRequires: python3-pbr >= 2.0.0
BuildRequires: python3-python-subunit
BuildRequires: python3-setuptools
-BuildRequires: python3-testrepository
+BuildRequires: python3-stestr
BuildRequires: python3-wrapt >= 1.7.0
Requires: python-pbr >= 2.0.0
Requires: python-six >= 1.10.0
@@ -95,9 +95,7 @@
rm -rf html/.{doctrees,buildinfo}
%check
-%{python_expand rm -rf .testrepository
-$python setup.py test
-}
+%python_exec -m stestr.cli run
%install
%python_install
++++++ debtcollector-1.19.0.tar.gz -> debtcollector-1.20.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/.stestr.conf
new/debtcollector-1.20.0/.stestr.conf
--- old/debtcollector-1.19.0/.stestr.conf 1970-01-01 01:00:00.000000000
+0100
+++ new/debtcollector-1.20.0/.stestr.conf 2018-07-20 03:07:38.000000000
+0200
@@ -0,0 +1,3 @@
+[DEFAULT]
+test_path=./debtcollector/tests
+top_dir=./
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/.testr.conf
new/debtcollector-1.20.0/.testr.conf
--- old/debtcollector-1.19.0/.testr.conf 2017-12-04 11:30:27.000000000
+0100
+++ new/debtcollector-1.20.0/.testr.conf 1970-01-01 01:00:00.000000000
+0100
@@ -1,7 +0,0 @@
-[DEFAULT]
-test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
- OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \
- OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-60} \
- ${PYTHON:-python} -m subunit.run discover -t ./ . $LISTOPT
$IDOPTION
-test_id_option=--load-list $IDFILE
-test_list_option=--list
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/.zuul.yaml
new/debtcollector-1.20.0/.zuul.yaml
--- old/debtcollector-1.19.0/.zuul.yaml 1970-01-01 01:00:00.000000000 +0100
+++ new/debtcollector-1.20.0/.zuul.yaml 2018-07-20 03:07:38.000000000 +0200
@@ -0,0 +1,7 @@
+- project:
+ check:
+ jobs:
+ - openstack-tox-lower-constraints
+ gate:
+ jobs:
+ - openstack-tox-lower-constraints
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/AUTHORS
new/debtcollector-1.20.0/AUTHORS
--- old/debtcollector-1.19.0/AUTHORS 2017-12-04 11:32:51.000000000 +0100
+++ new/debtcollector-1.20.0/AUTHORS 2018-07-20 03:11:59.000000000 +0200
@@ -1,5 +1,6 @@
Akihiro Motoki <[email protected]>
Andreas Jaeger <[email protected]>
+Anusree <[email protected]>
Brant Knudson <[email protected]>
ChangBo Guo(gcb) <[email protected]>
Davanum Srinivas <[email protected]>
@@ -23,7 +24,9 @@
Tony Xu <[email protected]>
Vu Cong Tuan <[email protected]>
Wei Li <[email protected]>
+Zuul <[email protected]>
caoyue <[email protected]>
howardlee <[email protected]>
janonymous <[email protected]>
kavithahr <[email protected]>
+melissaml <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/ChangeLog
new/debtcollector-1.20.0/ChangeLog
--- old/debtcollector-1.19.0/ChangeLog 2017-12-04 11:32:51.000000000 +0100
+++ new/debtcollector-1.20.0/ChangeLog 2018-07-20 03:11:59.000000000 +0200
@@ -1,10 +1,28 @@
CHANGES
=======
+1.20.0
+------
+
+* Switch to stestr
+* fix tox python3 overrides
+* Trivial: Update pypi url to new url
+* remove obsolete tox environments
+* set default python to python3
+* add lower-constraints job
+* pypy is not checked at gate
+* Updated from global requirements
+* Updated from global requirements
+* Update links in README
+* Update reno for stable/queens
+* Updated from global requirements
+* Updated from global requirements
+
1.19.0
------
* Avoid tox\_install.sh for constraints support
+* Remove setting of version/release from releasenotes
* Updated from global requirements
1.18.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/PKG-INFO
new/debtcollector-1.20.0/PKG-INFO
--- old/debtcollector-1.19.0/PKG-INFO 2017-12-04 11:32:52.000000000 +0100
+++ new/debtcollector-1.20.0/PKG-INFO 2018-07-20 03:11:59.000000000 +0200
@@ -1,18 +1,17 @@
Metadata-Version: 1.1
Name: debtcollector
-Version: 1.19.0
+Version: 1.20.0
Summary: A collection of Python deprecation patterns and strategies that help
you collect your technical debt in a non-destructive manner.
Home-page: https://docs.openstack.org/debtcollector/latest
Author: OpenStack
Author-email: [email protected]
License: UNKNOWN
-Description-Content-Type: UNKNOWN
Description: ========================
Team and repository tags
========================
- .. image:: http://governance.openstack.org/badges/debtcollector.svg
- :target: http://governance.openstack.org/reference/tags/index.html
+ .. image:: https://governance.openstack.org/tc/badges/debtcollector.svg
+ :target:
https://governance.openstack.org/tc/reference/tags/index.html
.. Change things from this point on
@@ -20,11 +19,11 @@
=============
.. image:: https://img.shields.io/pypi/v/debtcollector.svg
- :target: https://pypi.python.org/pypi/debtcollector/
+ :target: https://pypi.org/project/debtcollector/
:alt: Latest Version
.. image:: https://img.shields.io/pypi/dm/debtcollector.svg
- :target: https://pypi.python.org/pypi/debtcollector/
+ :target: https://pypi.org/project/debtcollector/
:alt: Downloads
A collection of Python deprecation patterns and strategies that help
you
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/README.rst
new/debtcollector-1.20.0/README.rst
--- old/debtcollector-1.19.0/README.rst 2017-12-04 11:30:27.000000000 +0100
+++ new/debtcollector-1.20.0/README.rst 2018-07-20 03:07:38.000000000 +0200
@@ -2,8 +2,8 @@
Team and repository tags
========================
-.. image:: http://governance.openstack.org/badges/debtcollector.svg
- :target: http://governance.openstack.org/reference/tags/index.html
+.. image:: https://governance.openstack.org/tc/badges/debtcollector.svg
+ :target: https://governance.openstack.org/tc/reference/tags/index.html
.. Change things from this point on
@@ -11,11 +11,11 @@
=============
.. image:: https://img.shields.io/pypi/v/debtcollector.svg
- :target: https://pypi.python.org/pypi/debtcollector/
+ :target: https://pypi.org/project/debtcollector/
:alt: Latest Version
.. image:: https://img.shields.io/pypi/dm/debtcollector.svg
- :target: https://pypi.python.org/pypi/debtcollector/
+ :target: https://pypi.org/project/debtcollector/
:alt: Downloads
A collection of Python deprecation patterns and strategies that help you
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/RELEASENOTES.rst
new/debtcollector-1.20.0/RELEASENOTES.rst
--- old/debtcollector-1.19.0/RELEASENOTES.rst 1970-01-01 01:00:00.000000000
+0100
+++ new/debtcollector-1.20.0/RELEASENOTES.rst 2018-07-20 03:11:59.000000000
+0200
@@ -0,0 +1,3 @@
+=============
+debtcollector
+=============
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/debtcollector.egg-info/PKG-INFO
new/debtcollector-1.20.0/debtcollector.egg-info/PKG-INFO
--- old/debtcollector-1.19.0/debtcollector.egg-info/PKG-INFO 2017-12-04
11:32:51.000000000 +0100
+++ new/debtcollector-1.20.0/debtcollector.egg-info/PKG-INFO 2018-07-20
03:11:59.000000000 +0200
@@ -1,18 +1,17 @@
Metadata-Version: 1.1
Name: debtcollector
-Version: 1.19.0
+Version: 1.20.0
Summary: A collection of Python deprecation patterns and strategies that help
you collect your technical debt in a non-destructive manner.
Home-page: https://docs.openstack.org/debtcollector/latest
Author: OpenStack
Author-email: [email protected]
License: UNKNOWN
-Description-Content-Type: UNKNOWN
Description: ========================
Team and repository tags
========================
- .. image:: http://governance.openstack.org/badges/debtcollector.svg
- :target: http://governance.openstack.org/reference/tags/index.html
+ .. image:: https://governance.openstack.org/tc/badges/debtcollector.svg
+ :target:
https://governance.openstack.org/tc/reference/tags/index.html
.. Change things from this point on
@@ -20,11 +19,11 @@
=============
.. image:: https://img.shields.io/pypi/v/debtcollector.svg
- :target: https://pypi.python.org/pypi/debtcollector/
+ :target: https://pypi.org/project/debtcollector/
:alt: Latest Version
.. image:: https://img.shields.io/pypi/dm/debtcollector.svg
- :target: https://pypi.python.org/pypi/debtcollector/
+ :target: https://pypi.org/project/debtcollector/
:alt: Downloads
A collection of Python deprecation patterns and strategies that help
you
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/debtcollector-1.19.0/debtcollector.egg-info/SOURCES.txt
new/debtcollector-1.20.0/debtcollector.egg-info/SOURCES.txt
--- old/debtcollector-1.19.0/debtcollector.egg-info/SOURCES.txt 2017-12-04
11:32:52.000000000 +0100
+++ new/debtcollector-1.20.0/debtcollector.egg-info/SOURCES.txt 2018-07-20
03:11:59.000000000 +0200
@@ -1,6 +1,7 @@
.coveragerc
.mailmap
-.testr.conf
+.stestr.conf
+.zuul.yaml
AUTHORS
CONTRIBUTING.rst
ChangeLog
@@ -8,6 +9,7 @@
LICENSE
README.rst
babel.cfg
+lower-constraints.txt
requirements.txt
setup.cfg
setup.py
@@ -44,6 +46,7 @@
releasenotes/source/index.rst
releasenotes/source/ocata.rst
releasenotes/source/pike.rst
+releasenotes/source/queens.rst
releasenotes/source/unreleased.rst
releasenotes/source/_static/.placeholder
releasenotes/source/_templates/.placeholder
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/debtcollector.egg-info/pbr.json
new/debtcollector-1.20.0/debtcollector.egg-info/pbr.json
--- old/debtcollector-1.19.0/debtcollector.egg-info/pbr.json 2017-12-04
11:32:51.000000000 +0100
+++ new/debtcollector-1.20.0/debtcollector.egg-info/pbr.json 2018-07-20
03:11:59.000000000 +0200
@@ -1 +1 @@
-{"git_version": "e1271aa", "is_release": true}
\ No newline at end of file
+{"git_version": "d3165af", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/debtcollector-1.19.0/debtcollector.egg-info/requires.txt
new/debtcollector-1.20.0/debtcollector.egg-info/requires.txt
--- old/debtcollector-1.19.0/debtcollector.egg-info/requires.txt
2017-12-04 11:32:51.000000000 +0100
+++ new/debtcollector-1.20.0/debtcollector.egg-info/requires.txt
2018-07-20 03:11:59.000000000 +0200
@@ -1,4 +1,6 @@
pbr!=2.1.0,>=2.0.0
six>=1.10.0
wrapt>=1.7.0
+
+[:(python_version=='2.7' or python_version=='2.6')]
funcsigs>=1.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/lower-constraints.txt
new/debtcollector-1.20.0/lower-constraints.txt
--- old/debtcollector-1.19.0/lower-constraints.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/debtcollector-1.20.0/lower-constraints.txt 2018-07-20
03:07:38.000000000 +0200
@@ -0,0 +1,39 @@
+alabaster==0.7.10
+Babel==2.3.4
+chardet==3.0.4
+coverage==4.0
+doc8==0.6.0
+docutils==0.11
+dulwich==0.15.0
+extras==1.0.0
+fixtures==3.0.0
+flake8==2.2.4
+funcsigs==1.0.0
+hacking==0.10.3
+imagesize==0.7.1
+Jinja2==2.10
+linecache2==1.0.0
+MarkupSafe==1.0
+mccabe==0.2.1
+openstackdocstheme==1.18.1
+pbr==2.0.0
+pep8==1.5.7
+pyflakes==0.8.1
+Pygments==2.2.0
+python-mimeparse==1.6.0
+python-subunit==1.0.0
+pytz==2013.6
+PyYAML==3.12
+reno==2.5.0
+requests==2.14.2
+restructuredtext-lint==1.1.1
+six==1.10.0
+snowballstemmer==1.2.1
+Sphinx==1.6.5
+sphinxcontrib-websupport==1.0.1
+stevedore==1.20.0
+stestr==2.0.0
+testtools==2.2.0
+traceback2==1.4.0
+unittest2==1.1.0
+wrapt==1.7.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/releasenotes/notes/reno.cache
new/debtcollector-1.20.0/releasenotes/notes/reno.cache
--- old/debtcollector-1.19.0/releasenotes/notes/reno.cache 1970-01-01
01:00:00.000000000 +0100
+++ new/debtcollector-1.20.0/releasenotes/notes/reno.cache 2018-07-20
03:11:59.000000000 +0200
@@ -0,0 +1,3 @@
+---
+file-contents: {}
+notes: []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/releasenotes/source/conf.py
new/debtcollector-1.20.0/releasenotes/source/conf.py
--- old/debtcollector-1.19.0/releasenotes/source/conf.py 2017-12-04
11:30:27.000000000 +0100
+++ new/debtcollector-1.20.0/releasenotes/source/conf.py 2018-07-20
03:07:38.000000000 +0200
@@ -60,16 +60,12 @@
project = u'debtcollector Release Notes'
copyright = u'2016, debtcollector Developers'
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
+# Release notes do not need a version number in the title, they
+# cover multiple releases.
# The full version, including alpha/beta/rc tags.
-import pkg_resources
-release = pkg_resources.get_distribution('debtcollector').version
+release = ''
# The short X.Y version.
-version = release
+version = ''
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/releasenotes/source/index.rst
new/debtcollector-1.20.0/releasenotes/source/index.rst
--- old/debtcollector-1.19.0/releasenotes/source/index.rst 2017-12-04
11:30:27.000000000 +0100
+++ new/debtcollector-1.20.0/releasenotes/source/index.rst 2018-07-20
03:07:38.000000000 +0200
@@ -6,5 +6,6 @@
:maxdepth: 1
unreleased
+ queens
pike
ocata
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/releasenotes/source/queens.rst
new/debtcollector-1.20.0/releasenotes/source/queens.rst
--- old/debtcollector-1.19.0/releasenotes/source/queens.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/debtcollector-1.20.0/releasenotes/source/queens.rst 2018-07-20
03:07:38.000000000 +0200
@@ -0,0 +1,6 @@
+===================================
+ Queens Series Release Notes
+===================================
+
+.. release-notes::
+ :branch: stable/queens
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/test-requirements.txt
new/debtcollector-1.20.0/test-requirements.txt
--- old/debtcollector-1.19.0/test-requirements.txt 2017-12-04
11:30:27.000000000 +0100
+++ new/debtcollector-1.20.0/test-requirements.txt 2018-07-20
03:07:38.000000000 +0200
@@ -6,9 +6,9 @@
coverage!=4.4,>=4.0 # Apache-2.0
python-subunit>=1.0.0 # Apache-2.0/BSD
-sphinx>=1.6.2 # BSD
-openstackdocstheme>=1.17.0 # Apache-2.0
-testrepository>=0.0.18 # Apache-2.0/BSD
+sphinx!=1.6.6,!=1.6.7,>=1.6.5 # BSD
+openstackdocstheme>=1.18.1 # Apache-2.0
+stestr>=2.0.0 # Apache-2.0
testtools>=2.2.0 # MIT
fixtures>=3.0.0 # Apache-2.0/BSD
doc8>=0.6.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/debtcollector-1.19.0/tox.ini
new/debtcollector-1.20.0/tox.ini
--- old/debtcollector-1.19.0/tox.ini 2017-12-04 11:30:27.000000000 +0100
+++ new/debtcollector-1.20.0/tox.ini 2018-07-20 03:07:38.000000000 +0200
@@ -1,6 +1,6 @@
[tox]
minversion = 2.0
-envlist = py35,py27,pypy,pep8
+envlist = py35,py27,pep8
[testenv]
setenv =
@@ -12,38 +12,42 @@
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt
-commands = python setup.py testr --slowest --testr-args='{posargs}'
+commands = stestr run --slowest {posargs}
[testenv:debug]
+basepython = python3
commands = oslo_debug_helper {posargs}
[testenv:debug-py27]
basepython = python2.7
commands = oslo_debug_helper {posargs}
-[testenv:debug-py34]
-basepython = python3.4
-commands = oslo_debug_helper {posargs}
-
-[testenv:debug-py35]
-basepython = python3.5
-commands = oslo_debug_helper {posargs}
-
[testenv:pep8]
+basepython = python3
commands = flake8
[testenv:venv]
+basepython = python3
commands = {posargs}
[testenv:cover]
-commands = python setup.py testr --coverage --testr-args='{posargs}'
+basepython = python3
+setenv =
+ PYTHON=coverage run --source $project --parallel-mode
+commands =
+ stestr run '{posargs}'
+ coverage combine
+ coverage html -d cover
+ coverage xml -o cover/coverage.xml
[testenv:docs]
+basepython = python3
commands = python setup.py build_sphinx
[testenv:py27]
+basepython = python2.7
commands =
- python setup.py testr --slowest --testr-args='{posargs}'
+ stestr run --slowest {posargs}
sphinx-build -b doctest doc/source doc/build
doc8 --ignore-path "doc/source/history.rst" doc/source
@@ -54,4 +58,12 @@
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build
[testenv:releasenotes]
+basepython = python3
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html
releasenotes/source releasenotes/build/html
+
+[testenv:lower-constraints]
+basepython = python3
+deps =
+ -c{toxinidir}/lower-constraints.txt
+ -r{toxinidir}/test-requirements.txt
+ -r{toxinidir}/requirements.txt