Change workflow to using uv and ruff.
uv is used to manage virtual environments and building wheels and source distributions. This replaces tox. ruff is used to do static checking. README is updated to reflect this change.pull/133/head
parent
257151a82c
commit
3078cd5b69
|
|
@ -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 --locked --all-extras --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
|
||||
|
|
@ -80,13 +76,18 @@ jobs:
|
|||
- name: Install wolfcrypt-py against the local wolfSSL
|
||||
env:
|
||||
USE_LOCAL_WOLFSSL: ${{ github.workspace }}/wolfssl-install
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
|
||||
with:
|
||||
# Install a specific version of uv.
|
||||
version: "0.11.25"
|
||||
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
|
||||
|
|
|
|||
50
README.rst
50
README.rst
|
|
@ -21,20 +21,20 @@ Install the following on Windows:
|
|||
|
||||
* `CMake <https://cmake.org/download/>`_
|
||||
* `Git <https://git-scm.com/download/win>`_
|
||||
* `Python 3.9 <https://www.python.org/downloads/windows/>`_
|
||||
* `Python 3.10 or newer <https://www.python.org/downloads/windows/>`_
|
||||
* `Build Tools for Visual Studio <https://visualstudio.microsoft.com/downloads/>`_. 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 pip install .
|
||||
|
||||
If building wolfcrypt-py against a local wolfSSL library, wolfcrypt-py
|
||||
will attempt to do native feature detection to enable/disable wolfcrypt-py
|
||||
|
|
@ -82,25 +80,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 run 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 =======================================
|
||||
|
|
|
|||
|
|
@ -41,21 +41,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 = [
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
-r prod.txt
|
||||
tox>=4
|
||||
pytest>=8
|
||||
types-cffi>=1.17
|
||||
|
|
|
|||
Loading…
Reference in New Issue