Update requirements.txt and add specific requirements for tests.
Consequence of crossbar support in tests.
--- a/requirements.txt Fri Feb 28 16:53:33 2025 +0100
+++ b/requirements.txt Fri Feb 28 16:56:53 2025 +0100
@@ -1,42 +1,43 @@
aiofiles==24.1.0
-aiosqlite==0.20.0
+aiosqlite==0.21.0
asyncua @ git+https://github.com/FreeOpcUa/opcua-asyncio.git@98a64897a2d171653353de2f36d33085aef65e82
-attrs==24.2.0
-autobahn==24.4.2
+attrs==25.1.0
+autobahn @ git+https://github.com/crossbario/autobahn-python.git@7bc85b34e200640ab98a41cfddb38267f39bc92e
Automat==24.8.1
Brotli==1.1.0
cffi==1.17.1
-click==8.1.7
+click==8.1.8
constantly==23.10.4
contourpy==1.3.1
-cryptography==44.0.0
+cryptography==44.0.1
cycler==0.12.1
erpc @ git+https://git@github.com/beremiz/erpc.git@d8fff72b15274b5f2a8f7895d9bc5c91eef584ec#subdirectory=erpc_python
-fonttools==4.55.3
+fonttools==4.56.0
hyperlink==21.0.0
idna==3.10
ifaddr==0.2.0
incremental==24.7.2
-kiwisolver==1.4.7
-lxml==5.3.0
-matplotlib==3.9.3
+kiwisolver==1.4.8
+lxml==5.3.1
+matplotlib==3.10.1
msgpack==1.1.0
Nevow @ git+https://git@github.com/beremiz/nevow-py3.git@81c2eaeaaa20022540a98a3106f72e0199fbcc1b
-numpy==2.2.0
+numpy==2.2.3
packaging==24.2
-pillow==11.0.0
+pillow==11.1.0
pycountry==24.6.1
pycparser==2.22
-pyparsing==3.2.0
+pyOpenSSL==25.0.0
+pyparsing==3.2.1
python-dateutil==2.9.0.post0
-pytz==2024.2
-setuptools==75.6.0
+pytz==2025.1
six==1.17.0
sortedcontainers==2.4.0
sslpsk @ git+https://git@github.com/beremiz/sslpsk.git@9cb31986629b382f7427eec29ddc168ad21c7d7c
+tomli==2.2.1
Twisted==24.11.0
txaio==23.1.1
typing_extensions==4.12.2
wxPython==4.2.2
-zeroconf==0.136.2
+zeroconf==0.145.1
zope.interface==7.2
--- a/requirements_latest.txt Fri Feb 28 16:53:33 2025 +0100
+++ b/requirements_latest.txt Fri Feb 28 16:56:53 2025 +0100
@@ -8,6 +8,7 @@
matplotlib
msgpack
Nevow @ git+https://git@github.com/beremiz/nevow-py3.git@81c2eaeaaa20022540a98a3106f72e0199fbcc1b
+pyOpenSSL
pycountry
# pyserial
sslpsk @ git+https://git@github.com/beremiz/sslpsk.git@9cb31986629b382f7427eec29ddc168ad21c7d7c
--- a/tests/tools/Docker/Dockerfile Fri Feb 28 16:53:33 2025 +0100
+++ b/tests/tools/Docker/Dockerfile Fri Feb 28 16:56:53 2025 +0100
@@ -85,17 +85,35 @@
RUN virtualenv ~/beremizenv
+# beremiz python requirements
+# file is placed here by build_docker_image.sh
COPY requirements.txt /home/$UNAME
-
-# beremiz python requirements
RUN ~/beremizenv/bin/pip install -r /home/$UNAME/requirements.txt
-# tests python requirements
-RUN ~/beremizenv/bin/pip install \
- pytest pytest-timeout ddt
-
-#TODO sslpsk posix_spawn
+# tests specific python requirements : pytest pytest-timeout ddt crossbar
+
+## How to upgrade requirements and test requirements together:
+# pip install -r beremiz/requirements_latest.txt
+# pip freeze > beremiz/requirements.txt
+# pip install pytest pytest-timeout ddt crossbar
+# pip freeze > requirements_all.txt
+# sort requirements_all.txt -o requirements_all_sorted.txt
+# sort beremiz/requirements.txt -o requirements_sorted.txt
+# comm -13 requirements_sorted.txt requirements_all_sorted.txt > beremiz/tests/tools/Docker/test_requirements.txt
+# rm requirements_all.txt requirements_sorted.txt requirements_all_sorted.txt
+
+COPY test_requirements.txt /home/$UNAME
+RUN ~/beremizenv/bin/pip install -r /home/$UNAME/test_requirements.txt --no-deps
+# Why --no-deps :
+# - Mandatory because crossbar's dependencies are expressed with github url,
+# targeting master branch or specific tags. This is not reproducable, and
+# test has to be reproducible.
+# - pip freeze generates dependencies pointing to particular commity hash,
+# the way to go for reproducible test
+# - because of broken crossbar requirements, 'pip install -r' fails meeting
+# requirement expressed on a branch or tag with a commit hash based install
+
RUN set -xe && \
cd /home/$UNAME && mkdir tessdata && \
wget -q https://github.com/tesseract-ocr/tessdata/archive/refs/tags/4.1.0.tar.gz \
@@ -108,4 +126,6 @@
# Points to python binary that test will use
ENV BEREMIZPYTHONPATH /home/$UNAME/beremizenv/bin/python
+# use venv python and installed command by default
+ENV PATH="/home/$UNAME/beremizenv/bin:$PATH"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/tools/Docker/test_requirements.txt Fri Feb 28 16:56:53 2025 +0100
@@ -0,0 +1,130 @@
+aiohappyeyeballs==2.4.6
+aiohttp==3.11.13
+aiosignal==1.3.2
+annotated-types==0.7.0
+appdirs==1.4.4
+argon2-cffi==23.1.0
+argon2-cffi-bindings==21.2.0
+arrow==1.3.0
+async-timeout==5.0.1
+base58==2.1.1
+bcrypt==4.3.0
+binaryornot==0.4.4
+bitarray==3.0.0
+bitstring==4.3.0
+blinker==1.9.0
+cached-property==2.0.1
+cbor2==5.6.5
+certifi==2025.1.31
+cfxdb @ git+https://github.com/crossbario/cfxdb.git@c54a8043865abb29726daf6565693265e8830e33
+chardet==5.2.0
+charset-normalizer==3.4.1
+ckzg==2.0.1
+colorama==0.4.6
+cookiecutter==2.6.0
+cramjam==2.9.1
+crossbar @ git+https://git@github.com/crossbario/crossbar.git@c1a78363866be39e9e624226980bbe2d90e9fd65
+cytoolz==1.0.1
+ddt==1.7.2
+docker==7.1.0
+ecdsa==0.19.0
+eth_abi==5.0.1
+eth-account==0.13.5
+eth-hash==0.7.1
+eth-keyfile==0.8.1
+eth-keys==0.6.1
+eth-rlp==2.2.0
+eth-typing==5.2.0
+eth-utils==5.2.0
+exceptiongroup==1.2.2
+Flask==3.1.0
+flatbuffers==25.2.10
+frozenlist==1.5.0
+h2==3.2.0
+hexbytes==1.3.0
+hkdf==0.0.3
+hpack==3.0.0
+humanize==4.12.1
+hyperframe==5.2.0
+importlib_resources==6.5.2
+iniconfig==2.0.0
+iso8601==2.1.0
+itsdangerous==2.2.0
+Jinja2==3.1.5
+jinja2-highlight==0.6.1
+jsonschema==4.23.0
+jsonschema-specifications==2024.10.1
+lmdb==1.6.2
+markdown-it-py==3.0.0
+MarkupSafe==3.0.2
+mdurl==0.1.2
+mistune==3.1.2
+mnemonic==0.21
+morphys==1.0
+multidict==6.1.0
+netaddr==1.3.0
+parsimonious==0.9.0
+passlib==1.7.4
+pluggy==1.5.0
+priority==1.3.0
+prompt_toolkit==3.0.50
+propcache==0.3.0
+psutil==7.0.0
+pyasn1==0.6.1
+pyasn1_modules==0.4.1
+py-cid @ git+https://github.com/crossbario/py-cid.git@e1dc52a43ced53845679405f78d92fb18f093653
+pycryptodome==3.21.0
+pydantic==2.10.6
+pydantic_core==2.27.2
+py-ecc==7.0.1
+py-eth-sig-utils==0.4.0
+Pygments==2.19.1
+py-multibase==1.0.3
+py-multicodec==0.2.1
+py-multihash @ git+https://github.com/crossbario/py-multihash.git@86b54b8f9f0cf14c7370f38ae32f2b4b14f5b5e0
+PyNaCl==1.5.0
+PyQRCode==1.2.1
+pytest==8.3.4
+pytest-timeout==2.3.1
+python-baseconv==1.2.2
+python-slugify==8.0.4
+python-snappy==0.7.3
+PyTrie==0.4.0
+py-ubjson==0.16.1
+pyunormalize==16.0.0
+PyYAML==6.0.2
+qrcode==8.0
+referencing==0.36.2
+regex==2024.11.6
+requests==2.32.3
+rich==13.9.4
+rlp==4.1.0
+rpds-py==0.23.1
+sdnotify==0.3.2
+service-identity==24.2.0
+setproctitle==1.3.5
+spake2==0.9
+stringcase==1.2.0
+tabulate==0.9.0
+text-unidecode==1.3
+toolz==1.0.0
+treq==24.9.1
+txtorcon==24.8.0
+types-python-dateutil==2.9.0.20241206
+types-requests==2.31.0.6
+types-urllib3==1.26.25.14
+ujson==5.10.0
+u-msgpack-python==2.8.0
+urllib3==1.26.20
+validate-email==1.3
+varint==1.0.2
+watchdog==6.0.0
+wcwidth==0.2.13
+web3==7.8.0
+websockets==13.1
+Werkzeug==3.1.3
+wsaccel==0.6.7
+xbr==21.2.1
+yapf==0.29.0
+yarl==1.18.3
+zlmdb @ git+https://github.com/crossbario/zlmdb.git@16270e41d5fadd2615cd735723cb629700fa12e8