Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions global-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,7 @@ os-testr # Apache-2.0
oslotest # Apache-2.0
ovsdbapp # Apache-2.0
pifpaf # Apache-2.0
playwright # Apache-2.0
psycopg2 # LGPL/ZPL
psycopg2-binary # LGPL/ZPL
pytest # MIT
Expand Down
4 changes: 2 additions & 2 deletions openstack_requirements/tests/test_check.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,11 @@ def test_extras__setup_cfg(self):
test_reqs = req_list.reqs_by_file['setup.cfg (.[test] extra)']
dev_reqs = req_list.reqs_by_file['setup.cfg (.[dev] extra)']

self.assertEqual(len(test_reqs), 2)
self.assertEqual(2, len(test_reqs))
self.assertIn('pytest', test_reqs)
self.assertIn('flake8', test_reqs)

self.assertEqual(len(dev_reqs), 2)
self.assertEqual(2, len(dev_reqs))
self.assertIn('black', dev_reqs)
self.assertIn('mypy', dev_reqs)

Expand Down
12 changes: 6 additions & 6 deletions openstack_requirements/tests/test_check_constraints.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def setUp(self):
)
def test_good_project(self, mock_project_read):
ret = check_exists.main([common.project_fixture.root])
self.assertEqual(ret, 0)
self.assertEqual(0, ret)

@mock.patch(
'openstack_requirements.cmds.check_exists.read_requirements_file',
Expand Down Expand Up @@ -85,7 +85,7 @@ def remove_req_read_reqs_file(filename):
mock.patch(read_req_path, remove_req_read_reqs_file),
):
ret = check_exists.main([common.project_fixture.root])
self.assertEqual(ret, 1)
self.assertEqual(1, ret)
self.assertIn(expected_out, mock_stdout.getvalue())

@mock.patch(
Expand Down Expand Up @@ -115,7 +115,7 @@ def test_project_missing_from_gr(self):
mock.patch('sys.stdout', mock_stdout),
):
ret = check_exists.main([common.project_fixture.root])
self.assertEqual(ret, 1)
self.assertEqual(1, ret)
self.assertIn(expected_out, mock_stdout.getvalue())

@mock.patch(
Expand Down Expand Up @@ -167,7 +167,7 @@ def remove_req_read_reqs_file(filename):
mock.patch(read_req_path, remove_req_read_reqs_file),
):
ret = check_exists.main([common.project_fixture.root])
self.assertEqual(ret, 1)
self.assertEqual(1, ret)
for expected in expected_outs:
self.assertIn(expected, mock_stdout.getvalue())

Expand Down Expand Up @@ -195,7 +195,7 @@ def test_project_req_bigger_then_uc(self):
mock.patch('sys.stdout', mock_stdout),
):
ret = check_exists.main([common.project_fixture.root])
self.assertEqual(ret, 1)
self.assertEqual(1, ret)
self.assertIn(expected_out, mock_stdout.getvalue())

@mock.patch(
Expand Down Expand Up @@ -224,5 +224,5 @@ def test_project_req_not_include_uc_version(self):
mock.patch('sys.stdout', mock_stdout),
):
ret = check_exists.main([common.project_fixture.root])
self.assertEqual(ret, 1)
self.assertEqual(1, ret)
self.assertIn(expected_out, mock_stdout.getvalue())
25 changes: 19 additions & 6 deletions openstack_requirements/tests/test_project.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,31 +28,31 @@ class TestReadProject(testtools.TestCase):
def test_pyproject_toml(self):
root = self.useFixture(common.pep_518_fixture).root
proj = project.read(root)
self.assertEqual(proj['root'], root)
self.assertEqual(root, proj['root'])
self.assertEqual(
list(sorted(proj['requirements'])),
['pyproject.toml'],
list(sorted(proj['requirements'])),
)

def test_setup_cfg(self):
root = self.useFixture(common.pbr_fixture).root
proj = project.read(root)
self.assertEqual(proj['root'], root)
self.assertEqual(root, proj['root'])
self.assertEqual(
list(sorted(proj['requirements'])),
['requirements.txt', 'test-requirements.txt'],
list(sorted(proj['requirements'])),
)

def test_empty(self):
root = self.useFixture(fixtures.TempDir()).path
proj = project.read(root)
self.assertEqual(
proj,
{
'root': root,
'requirements': {},
'extras': {},
},
proj,
)


Expand All @@ -75,6 +75,19 @@ def test_pyproject_toml(self):
expected = {'1': ['foo'], '2': ['foo', 'bar']}
self.assertEqual(expected, project._read_pyproject_toml_extras(root))

def test_pyproject_toml__no_extras(self):
root = self.useFixture(fixtures.TempDir()).path
with open(os.path.join(root, 'pyproject.toml'), 'w') as fh:
fh.write(
textwrap.dedent("""
""")
)
self.assertIsNone(project._read_pyproject_toml_extras(root))

def test_no_pyproject_toml(self):
root = self.useFixture(fixtures.TempDir()).path
self.assertIsNone(project._read_pyproject_toml_extras(root))

def test_setup_cfg(self):
root = self.useFixture(fixtures.TempDir()).path
with open(os.path.join(root, 'setup.cfg'), 'w') as fh:
Expand All @@ -91,7 +104,7 @@ def test_setup_cfg(self):
expected = {'1': ['foo'], '2': ['foo # fred', 'bar']}
self.assertEqual(expected, project._read_setup_cfg_extras(root))

def test_none(self):
def test_setup_cfg__no_extras(self):
root = self.useFixture(fixtures.TempDir()).path
with open(os.path.join(root, 'setup.cfg'), 'w') as fh:
fh.write(
Expand Down
68 changes: 36 additions & 32 deletions upper-constraints.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ tzdata===2026.2
smmap===5.0.3
confget===5.1.2
XStatic-Angular-Bootstrap===2.5.0.1
WebOb===1.8.9
WebOb===1.8.10
sphinxcontrib-actdiag===3.0.0
pecan===1.8.0
os-api-ref===3.2.0
Expand Down Expand Up @@ -58,7 +58,7 @@ python-mistralclient===6.2.0
oslo.context===6.4.0
rcssmin===1.2.2
pycadf===4.0.1
grpcio===1.80.0
grpcio===1.81.0
sniffio===1.3.1
fixtures===4.3.2
neutron-lib===4.0.0
Expand All @@ -69,7 +69,7 @@ storage-interfaces===1.0.5
pydantic===2.13.4
pystache===0.6.8
XStatic-Font-Awesome===6.2.1.2
aiohttp===3.13.5
aiohttp===3.14.0
waitress===3.0.2
os-refresh-config===14.0.1
pysnmp===7.1.27
Expand All @@ -82,7 +82,7 @@ ddt===1.7.2
pyserial===3.5
moto===5.2.1
infi.dtypes.wwn===0.1.1
awscrt===0.33.0
awscrt===0.34.1
pcre2===0.6.0
python-freezerclient===6.3.0
python-vitrageclient===5.4.0
Expand All @@ -94,7 +94,7 @@ cheroot===11.1.2
XStatic-Angular===1.8.2.3
zuul-sphinx===0.8.1
ply===3.11
google-api-core===2.30.3
google-api-core===2.31.0
requests-toolbelt===1.0.0
simplejson===4.1.1
python-swiftclient===4.10.0
Expand All @@ -113,6 +113,7 @@ prometheus_client===0.25.0
jaraco.classes===3.4.0
debtcollector===3.1.0
responses===0.26.1
prompt_toolkit===3.0.52
croniter===6.2.2
horizon===25.7.3
octavia-lib===3.11.0
Expand All @@ -121,7 +122,7 @@ MarkupSafe===3.0.3
doc8===2.0.0
pymongo===4.17.0
python-cloudkittyclient===6.1.0
soupsieve===2.8.3
soupsieve===2.8.4
sqlparse===0.5.5
oslotest===6.1.1
jsonpointer===3.1.1
Expand All @@ -132,7 +133,7 @@ pyghmi===1.6.16
sphinxcontrib-blockdiag===3.0.0
aiosqlite===0.22.1
gnocchiclient===7.2.0
wcwidth===0.7.0
wcwidth===0.8.0
sphinxcontrib.datatemplates===0.11.0
jsonpath-rw===1.4.0
prettytable===3.17.0
Expand All @@ -144,7 +145,7 @@ semantic-version===2.10.0
ConfigArgParse===1.7.5
async-timeout===5.0.1
virtualbmc===3.3.0
SQLAlchemy===2.0.49
SQLAlchemy===2.0.50
pyroute2===0.8.1
google-auth===2.53.0
kazoo===2.11.0
Expand Down Expand Up @@ -190,7 +191,7 @@ gunicorn===26.0.0
storpool===7.3.0
textfsm===2.1.0
python-3parclient===4.4
libvirt-python===12.3.0
libvirt-python===12.4.0
python-zunclient===5.4.0
tzlocal===5.3.1
sysv_ipc===1.2.0
Expand All @@ -212,7 +213,7 @@ XStatic-objectpath===1.2.1.1
python-manilaclient===6.1.0
sphinxcontrib-serializinghtml===2.0.0
requests===2.34.2
snowballstemmer===3.0.1
snowballstemmer===3.1.1
Jinja2===3.1.6
XStatic-Bootstrap-SCSS===3.4.1.1
pyzabbix===1.3.1
Expand Down Expand Up @@ -246,7 +247,7 @@ ldappool===3.0.0
hpack===4.1.0
joblib===1.5.3
roman-numerals===4.1.0
google-api-python-client===2.196.0
google-api-python-client===2.197.0
castellan===5.7.0
oslo.versionedobjects===3.10.2
enmerkar===0.7.1
Expand All @@ -256,7 +257,8 @@ autobahn===25.12.2
SQLAlchemy-Utils===0.42.1
retryz===0.1.9
pluggy===1.6.0
coverage===7.14.0
coverage===7.14.1
pyee===13.0.1
freezegun===1.5.5
mdurl===0.1.2
toml===0.10.2
Expand Down Expand Up @@ -295,10 +297,11 @@ dfs_sdk===1.2.27
sphinxcontrib-seqdiag===3.0.0
os-win===5.9.0
capacity===1.3.14
playwright===1.60.0
markdown-it-py===4.2.0
retrying===1.4.2
python-discovery===1.3.1
platformdirs===4.9.6
python-discovery===1.4.0
platformdirs===4.10.0
pydotplus===2.0.2
boto3===1.35.99
jeepney===0.9.0
Expand Down Expand Up @@ -336,7 +339,7 @@ packaging===26.2
opentelemetry-exporter-otlp-proto-grpc===1.42.1
psutil===7.2.2
txaio===25.12.2
elasticsearch===9.4.0
elasticsearch===9.4.1
asgiref===3.11.1
XStatic-JQuery.TableSorter===2.14.5.3
pifpaf===3.4.0
Expand All @@ -357,7 +360,7 @@ SecretStorage===3.5.0
XStatic-Rickshaw===1.5.1.3
iso8601===2.1.0
tooz===8.1.0
idna===3.16
idna===3.18
yamlloader===1.6.0
protobuf===6.33.6
sushy===5.11.0
Expand All @@ -371,7 +374,7 @@ python-octaviaclient===3.14.0
pysaml2===7.5.4
requests-oauthlib===2.0.0
oslo.reports===3.8.0
bitmath===2.0.1
bitmath===2.1.1
ceilometermiddleware===3.11.0
testrepository===0.0.22
sympy===1.14.0
Expand All @@ -387,26 +390,26 @@ Sphinx===9.0.4
oslo.config===10.4.0
openstackdocstheme===3.6.0
osc-placement===4.8.0
rpds-py===0.30.0
rpds-py===2026.5.1
zake===0.2.2
flux===1.4.0
flexparser===0.4
krb5===0.9.0
PyMySQL===1.2.0
uhashring===2.4
kubernetes===36.0.0
kubernetes===36.0.2
httplib2===0.31.2
betamax===0.9.0
construct===2.10.70
pytest-metadata===3.1.1
pyparsing===3.3.2
geomet===1.1.0
opentelemetry-exporter-otlp-proto-common===1.42.1
distlib===0.4.0
distlib===0.4.1
ast_serialize===0.5.0
dogpile.cache===1.5.0
python-barbicanclient===7.4.0
salt===3007.14
salt===3008.0
opentelemetry-semantic-conventions===0.63b1
blinker===1.9.0
WSME===0.12.1
Expand All @@ -417,14 +420,14 @@ botocore===1.35.99
xmltodict===1.0.4
pyasn1===0.6.3
oslo.rootwrap===7.9.0
Django===5.2.14
Django===5.2.15
pexpect===4.9.0
elastic-transport===9.4.0
cmd2===3.5.1
elastic-transport===9.4.1
cmd2===4.0.0
python-json-logger===4.1.0
redis===7.4.0
redis===8.0.0
jmespath===1.1.0
cbor2===6.1.1
cbor2===6.1.2
click===8.4.1
XStatic-smart-table===1.4.13.3
kuryr-lib===3.4.1
Expand All @@ -439,7 +442,7 @@ openstacksdk===4.14.0
infi.dtypes.nqn===0.1.0
six===1.17.0
h2===4.3.0
dulwich===1.2.4
dulwich===1.2.6
sentinels===1.1.1
kombu===5.6.2
distro===1.9.0
Expand Down Expand Up @@ -535,8 +538,9 @@ greenlet===3.5.1
XStatic-Angular-Vis===4.16.0.1
iniconfig===2.3.0
referencing===0.37.0
confluent-kafka===2.14.0
confluent-kafka===2.14.2
backports.tarfile===1.2.0
narwhals===2.22.1
xvfbwrapper===0.2.23
influxdb-client===1.50.0
tosca-parser===2.14.0
Expand All @@ -551,8 +555,8 @@ fasteners===0.20
importlib_metadata===9.0.0
sortedcontainers===2.4.0
microversion_parse===2.1.0
python-linstor===1.27.1
filelock===3.29.0
python-linstor===1.28.1
filelock===3.29.1
python-tackerclient===2.5.0
python-heatclient===5.2.0
oslo.utils===10.1.0
Expand All @@ -561,7 +565,7 @@ itsdangerous===2.2.0
XStatic-jquery-ui===1.13.0.2
monasca-statsd===2.7.0
python-dateutil===2.9.0.post0
virtualenv===21.3.3
virtualenv===21.4.2
colorama===0.4.6
confetti===2.5.3
ironic-lib===7.0.0
Expand All @@ -571,4 +575,4 @@ opentelemetry-proto===1.42.1
XStatic-D3===3.5.17.1
actdiag===3.0.0
sphinxcontrib-applehelp===2.0.0
scikit-learn===1.8.0
scikit-learn===1.9.0