diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml
index 4209e4a..ca381f0 100644
--- a/.github/workflows/python-app.yml
+++ b/.github/workflows/python-app.yml
@@ -23,21 +23,17 @@ jobs:
uses: actions/setup-python@v3
with:
python-version: "3.10"
- - name: Install dependencies
- run: |
- python -m pip install --upgrade pip
- pip install flake8 pytest tox
- pip install -r requirements/test.txt
-# Won't pass flake8 yet
-# - name: Lint with flake8
-# run: |
-# # stop the build if there are Python syntax errors or undefined names
-# flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
-# # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
-# flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- - name: Test with tox
- run: |
- tox
+ - name: Install uv
+ uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
+ with:
+ # Install a specific version of uv.
+ version: "0.11.25"
+ - name: Install the project
+ run: uv sync --dev
+ - name: Perform static checks
+ run: uv run ruff check
+ - name: Run tests
+ run: uv run pytest tests
build-no-pqc:
# Regression coverage for issue #2659: INVALID_DEVID is only declared
@@ -54,6 +50,11 @@ jobs:
uses: actions/setup-python@v3
with:
python-version: "3.10"
+ - name: Install uv
+ uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
+ with:
+ # Install a specific version of uv.
+ version: "0.11.25"
- name: Install build deps
run: |
sudo apt-get update
@@ -81,12 +82,12 @@ jobs:
env:
USE_LOCAL_WOLFSSL: ${{ github.workspace }}/wolfssl-install
run: |
- python -m pip install --upgrade pip
- pip install -r requirements/test.txt
- pip install -e .
+ uv venv
+ uv pip install -r requirements/test.txt
+ uv pip install -e .
- name: Import smoke (regression for INVALID_DEVID)
- run: python -c "from wolfcrypt.random import Random; Random()"
+ run: uv run python -c "from wolfcrypt.random import Random; Random()"
- name: Run tests
env:
USE_LOCAL_WOLFSSL: ${{ github.workspace }}/wolfssl-install
- run: pytest tests/
+ run: uv run pytest tests
diff --git a/README.rst b/README.rst
index 3ce4978..9f4ec23 100644
--- a/README.rst
+++ b/README.rst
@@ -21,20 +21,20 @@ Install the following on Windows:
* `CMake `_
* `Git `_
-* `Python 3.9 `_
+* `Python 3.10 or newer `_
* `Build Tools for Visual Studio `_. This is in the "Tools for Visual Studio" section at the bottom of the page. The "Desktop development with C++" pack is needed from the installer.
-Then from the command line install tox and CFFI using:
+Then from the command line install `uv` using:
.. code-block:: sh
- pip install tox cffi
+ pip install uv
You can then build the source distribution packages using:
.. code-block:: sh
- python setup.py sdist
+ uv build --sdist
Linux
@@ -42,11 +42,9 @@ Linux
The `setup.py` file covers most things you will need to do to build and install from source. As pre-requisites you will need to install either from your OS repository or pip. You'll also need the Python development package for your Python version:
-* `cffi`
-* `tox`
-* `pytest`
+* `uv`
-To build a source package run `python setup.py sdist`, to build a wheel package run `python setup.py bdist_wheel`. To test the build run `tox`. The `tox` tests rely on Python 3.9 being installed, if you do not have this version we recommend using `pyenv` to install it.
+To build a source package run `uv build --sdist`, to build a wheel package run `uv build --wheel`. To test the build run `uv run pytest`. The tests rely on Python 3.10 or later being installed.
Installation
------------
@@ -66,7 +64,7 @@ should be set equal to the installation path for the wolfSSL library:
.. code-block:: bash
- $ USE_LOCAL_WOLFSSL=/path/to/wolfssl/install pip install .
+ $ USE_LOCAL_WOLFSSL=/path/to/wolfssl/install uv sync
If building wolfcrypt-py against a local wolfSSL library, wolfcrypt-py
will attempt to do native feature detection to enable/disable wolfcrypt-py
@@ -75,6 +73,8 @@ features based on how native wolfSSL has been compiled. It uses the
Testing
-------
+.. code-block:: console
+ $ uv run python3
.. code-block:: python
@@ -82,25 +82,41 @@ Testing
>>> Sha256('wolfcrypt').hexdigest()
b'96e02e7b1cbcd6f104fe1fdb4652027a5505b68652b70095c6318f9dce0d1844'
-Testing ``wolfcrypt``'s source code with ``tox``
-------------------------------------------------
+Testing ``wolfcrypt``'s source code with ``pytest``
+---------------------------------------------------
-To run the unit tests in the source code, you'll need ``tox`` and a few other
+To run the unit tests in the source code, you'll need ``uv`` and a few other
requirements.
1. Make sure that the testing requirements are installed:
.. code-block:: console
- $ sudo -H pip install -r requirements/test.txt
+ $ uv sync --dev
-2. Run ``tox``:
+2. Run ``pytest``:
.. code-block:: console
- $ tox
- ...
- _________________________________ summary _________________________________
- py3: commands succeeded
- congratulations :)
+ $ uv run pytest
+ ======================================= test session starts =======================================
+ platform linux -- Python 3.10.12, pytest-9.1.1, pluggy-1.6.0
+ rootdir: /some_directory/wolfcrypt-py
+ configfile: pyproject.toml
+ collected 165 items
+
+ tests/test_aesgcmstream.py ......... [ 5%]
+ tests/test_asn.py .. [ 6%]
+ tests/test_chacha20poly1305.py ...... [ 10%]
+ tests/test_ciphers.py ........................................... [ 36%]
+ tests/test_delete_descriptor_binding.py ................. [ 46%]
+ tests/test_error_string.py .... [ 49%]
+ tests/test_hashes.py ........................... [ 65%]
+ tests/test_hkdf.py ........ [ 70%]
+ tests/test_mldsa.py .............................. [ 88%]
+ tests/test_mlkem.py ............ [ 95%]
+ tests/test_pwdbased.py . [ 96%]
+ tests/test_random.py ...... [100%]
+
+ ======================================= 165 passed in 7.09s =======================================
diff --git a/pyproject.toml b/pyproject.toml
index 8f95d18..9e0abf3 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -40,21 +40,10 @@ dev = [
"ruff",
"sphinx",
"sphinx-rtd-theme",
- "tox >= 4",
"ty",
"types-cffi",
]
-[tool.tox]
-requires = ["tox>=4"]
-env_list = ["py3"]
-
-[tool.tox.env_run_base]
-package = "wheel"
-deps = ["-rrequirements/test.txt"]
-commands = [["py.test", "tests/"]]
-
-
[tool.ruff]
# Exclude a variety of commonly ignored directories.
exclude = [
diff --git a/requirements/test.txt b/requirements/test.txt
index 75bc4c1..9d782d0 100644
--- a/requirements/test.txt
+++ b/requirements/test.txt
@@ -1,4 +1,3 @@
-r prod.txt
-tox>=4
pytest>=8
types-cffi>=1.17