Remove `poetry.lock` (#737)

Co-authored-by: Remi <remi.cadene@huggingface.co>
This commit is contained in:
Simon Alibert 2025-02-17 12:03:16 +01:00 committed by GitHub
parent ddeade077e
commit fe483b1d0d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 90 additions and 8924 deletions

View File

@ -38,53 +38,7 @@ jobs:
run: python -m pip install "ruff==${{ env.RUFF_VERSION }}" run: python -m pip install "ruff==${{ env.RUFF_VERSION }}"
- name: Ruff check - name: Ruff check
run: ruff check run: ruff check --output-format=github
- name: Ruff format - name: Ruff format
run: ruff format --diff run: ruff format --diff
poetry_check:
name: Poetry check
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Install poetry
run: pipx install "poetry>=2.1"
- name: Poetry check
run: poetry check
poetry_relax:
name: Poetry relax
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Install poetry
run: pipx install "poetry>=2.1"
- name: Install poetry-relax
run: poetry self add poetry-relax
- name: Poetry relax
id: poetry_relax
run: |
output=$(poetry relax --check 2>&1)
if echo "$output" | grep -q "Proposing updates"; then
echo "$output"
echo ""
echo "Some dependencies have caret '^' version requirement added by poetry by default."
echo "Please replace them with '>='. You can do this by hand or use poetry-relax to do this."
exit 1
else
echo "$output"
fi

View File

@ -32,14 +32,11 @@ jobs:
files: docker/** files: docker/**
json: "true" json: "true"
- name: Run step if only the files listed above change - name: Run step if only the files listed above change # zizmor: ignore[template-injection]
if: steps.changed-files.outputs.any_changed == 'true' if: steps.changed-files.outputs.any_changed == 'true'
id: set-matrix id: set-matrix
env:
ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
run: | run: |
echo "matrix=${ALL_CHANGED_FILES}" >> $GITHUB_OUTPUT echo "matrix=${{ steps.changed-files.outputs.all_changed_files}}" >> $GITHUB_OUTPUT
build_modified_dockerfiles: build_modified_dockerfiles:
name: Build modified Docker images name: Build modified Docker images

View File

@ -7,7 +7,8 @@ on:
- "tests/**" - "tests/**"
- "examples/**" - "examples/**"
- ".github/**" - ".github/**"
- "poetry.lock" - "pyproject.toml"
- ".pre-commit-config.yaml"
- "Makefile" - "Makefile"
- ".cache/**" - ".cache/**"
push: push:
@ -18,12 +19,16 @@ on:
- "tests/**" - "tests/**"
- "examples/**" - "examples/**"
- ".github/**" - ".github/**"
- "poetry.lock" - "pyproject.toml"
- ".pre-commit-config.yaml"
- "Makefile" - "Makefile"
- ".cache/**" - ".cache/**"
permissions: {} permissions: {}
env:
UV_VERSION: "0.6.0"
jobs: jobs:
pytest: pytest:
name: Pytest name: Pytest
@ -42,25 +47,19 @@ jobs:
sudo apt-get update && \ sudo apt-get update && \
sudo apt-get install -y libegl1-mesa-dev ffmpeg portaudio19-dev sudo apt-get install -y libegl1-mesa-dev ffmpeg portaudio19-dev
- name: Install poetry - name: Install uv and python
run: | uses: astral-sh/setup-uv@v5
pipx install poetry && poetry config virtualenvs.in-project true
echo "${{ github.workspace }}/.venv/bin" >> $GITHUB_PATH
# TODO(rcadene, aliberts): python 3.12 seems to be used in the tests, not python 3.10
- name: Set up Python 3.10
uses: actions/setup-python@v5
with: with:
enable-cache: true
version: ${{ env.UV_VERSION }}
python-version: "3.10" python-version: "3.10"
cache: "poetry"
- name: Install poetry dependencies - name: Install lerobot (all extras)
run: | run: uv sync --all-extras
poetry install --all-extras
- name: Test with pytest - name: Test with pytest
run: | run: |
pytest tests -v --cov=./lerobot --durations=0 \ uv run pytest tests -v --cov=./lerobot --durations=0 \
-W ignore::DeprecationWarning:imageio_ffmpeg._utils:7 \ -W ignore::DeprecationWarning:imageio_ffmpeg._utils:7 \
-W ignore::UserWarning:torch.utils.data.dataloader:558 \ -W ignore::UserWarning:torch.utils.data.dataloader:558 \
-W ignore::UserWarning:gymnasium.utils.env_checker:247 \ -W ignore::UserWarning:gymnasium.utils.env_checker:247 \
@ -80,24 +79,19 @@ jobs:
- name: Install apt dependencies - name: Install apt dependencies
run: sudo apt-get update && sudo apt-get install -y ffmpeg run: sudo apt-get update && sudo apt-get install -y ffmpeg
- name: Install poetry - name: Install uv and python
run: | uses: astral-sh/setup-uv@v5
pipx install poetry && poetry config virtualenvs.in-project true
echo "${{ github.workspace }}/.venv/bin" >> $GITHUB_PATH
# TODO(rcadene, aliberts): python 3.12 seems to be used in the tests, not python 3.10
- name: Set up Python 3.10
uses: actions/setup-python@v5
with: with:
enable-cache: true
version: ${{ env.UV_VERSION }}
python-version: "3.10" python-version: "3.10"
- name: Install poetry dependencies - name: Install lerobot
run: | run: uv sync --extra "test"
poetry install --extras "test"
- name: Test with pytest - name: Test with pytest
run: | run: |
pytest tests -v --cov=./lerobot --durations=0 \ uv run pytest tests -v --cov=./lerobot --durations=0 \
-W ignore::DeprecationWarning:imageio_ffmpeg._utils:7 \ -W ignore::DeprecationWarning:imageio_ffmpeg._utils:7 \
-W ignore::UserWarning:torch.utils.data.dataloader:558 \ -W ignore::UserWarning:torch.utils.data.dataloader:558 \
-W ignore::UserWarning:gymnasium.utils.env_checker:247 \ -W ignore::UserWarning:gymnasium.utils.env_checker:247 \
@ -120,20 +114,21 @@ jobs:
sudo apt-get update && \ sudo apt-get update && \
sudo apt-get install -y libegl1-mesa-dev portaudio19-dev sudo apt-get install -y libegl1-mesa-dev portaudio19-dev
- name: Install poetry - name: Install uv and python
run: | uses: astral-sh/setup-uv@v5
pipx install poetry && poetry config virtualenvs.in-project true
echo "${{ github.workspace }}/.venv/bin" >> $GITHUB_PATH
- name: Set up Python 3.10
uses: actions/setup-python@v5
with: with:
enable-cache: true
version: ${{ env.UV_VERSION }}
python-version: "3.10" python-version: "3.10"
cache: "poetry"
- name: Install poetry dependencies - name: Install lerobot (all extras)
run: | run: |
poetry install --all-extras uv venv
uv sync --all-extras
- name: venv
run: |
echo "PYTHON_PATH=${{ github.workspace }}/.venv/bin/python" >> $GITHUB_ENV
- name: Test end-to-end - name: Test end-to-end
run: | run: |

4
.gitignore vendored
View File

@ -49,6 +49,10 @@ share/python-wheels/
*.egg *.egg
MANIFEST MANIFEST
# uv/poetry lock files
poetry.lock
uv.lock
# PyInstaller # PyInstaller
# Usually these files are written by a python script from a template # Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it. # before PyInstaller builds the exe, so as to inject date/other infos into it.

View File

@ -23,10 +23,6 @@ repos:
- id: ruff - id: ruff
args: [--fix] args: [--fix]
- id: ruff-format - id: ruff-format
- repo: https://github.com/python-poetry/poetry
rev: 2.1.0
hooks:
- id: poetry-check
- repo: https://github.com/gitleaks/gitleaks - repo: https://github.com/gitleaks/gitleaks
rev: v8.23.3 rev: v8.23.3
hooks: hooks:

View File

@ -129,38 +129,71 @@ Follow these steps to start contributing:
🚨 **Do not** work on the `main` branch. 🚨 **Do not** work on the `main` branch.
4. for development, we use `poetry` instead of just `pip` to easily track our dependencies. 4. for development, we advise to use a tool like `poetry` or `uv` instead of just `pip` to easily track our dependencies.
If you don't have it already, follow the [instructions](https://python-poetry.org/docs/#installation) to install it (use a version >=2.1.0). Follow the instructions to [install poetry](https://python-poetry.org/docs/#installation) (use a version >=2.1.0) or to [install uv](https://docs.astral.sh/uv/getting-started/installation/#installation-methods) if you don't have one of them already.
Set up a development environment with conda or miniconda: Set up a development environment with conda or miniconda:
```bash ```bash
conda create -y -n lerobot-dev python=3.10 && conda activate lerobot-dev conda create -y -n lerobot-dev python=3.10 && conda activate lerobot-dev
``` ```
To develop on 🤗 LeRobot, you will at least need to install the `dev` and `test` extras dependencies along with the core library: If you're using `uv`, it can manage python versions so you can instead do:
```bash ```bash
poetry install --sync --extras "dev test" uv venv --python 3.10 && source .venv/bin/activate
```
To develop on 🤗 LeRobot, you will at least need to install the `dev` and `test` extras dependencies along with the core library:
using `poetry`
```bash
poetry sync --extras "dev test"
```
using `uv`
```bash
uv sync --extra dev --extra test
``` ```
You can also install the project with all its dependencies (including environments): You can also install the project with all its dependencies (including environments):
using `poetry`
```bash ```bash
poetry sync --all-extras poetry sync --all-extras
``` ```
using `uv`
```bash
uv sync --all-extras
```
> **Note:** If you don't install simulation environments with `--all-extras`, the tests that require them will be skipped when running the pytest suite locally. However, they *will* be tested in the CI. In general, we advise you to install everything and test locally before pushing. > **Note:** If you don't install simulation environments with `--all-extras`, the tests that require them will be skipped when running the pytest suite locally. However, they *will* be tested in the CI. In general, we advise you to install everything and test locally before pushing.
Whichever command you chose to install the project (e.g. `poetry sync --all-extras`), you should run it again when pulling code with an updated version of `pyproject.toml` and `poetry.lock` in order to synchronize your virtual environment with the new dependencies. Whichever command you chose to install the project (e.g. `poetry sync --all-extras`), you should run it again when pulling code with an updated version of `pyproject.toml` and `poetry.lock` in order to synchronize your virtual environment with the new dependencies.
The equivalent of `pip install some-package`, would just be: The equivalent of `pip install some-package`, would just be:
using `poetry`
```bash ```bash
poetry add some-package poetry add some-package
``` ```
When making changes to the poetry sections of the `pyproject.toml`, you should run the following command to lock dependencies. using `uv`
```bash ```bash
poetry lock --no-update uv add some-package
``` ```
When making changes to the poetry sections of the `pyproject.toml`, you should run the following command to lock dependencies.
using `poetry`
```bash
poetry lock
```
using `uv`
```bash
uv lock
```
5. Develop the features on your branch. 5. Develop the features on your branch.
As you work on the features, you should make sure that the test suite As you work on the features, you should make sure that the test suite

View File

@ -2,10 +2,10 @@
PYTHON_PATH := $(shell which python) PYTHON_PATH := $(shell which python)
# If Poetry is installed, redefine PYTHON_PATH to use the Poetry-managed Python # If uv is installed and a virtual environment exists, use it
POETRY_CHECK := $(shell command -v poetry) UV_CHECK := $(shell command -v uv)
ifneq ($(POETRY_CHECK),) ifneq ($(UV_CHECK),)
PYTHON_PATH := $(shell poetry run which python) PYTHON_PATH := $(shell .venv/bin/python)
endif endif
export PATH := $(dir $(PYTHON_PATH)):$(PATH) export PATH := $(dir $(PYTHON_PATH)):$(PATH)

View File

@ -58,7 +58,7 @@ RUN (type -p wget >/dev/null || (apt update && apt-get install wget -y)) \
RUN ln -s /usr/bin/python3 /usr/bin/python RUN ln -s /usr/bin/python3 /usr/bin/python
# Install poetry # Install poetry
RUN curl -sSL https://install.python-poetry.org | python - --version 1.8.5 RUN curl -sSL https://install.python-poetry.org | python -
ENV PATH="/root/.local/bin:$PATH" ENV PATH="/root/.local/bin:$PATH"
RUN echo 'if [ "$HOME" != "/root" ]; then ln -sf /root/.local/bin/poetry $HOME/.local/bin/poetry; fi' >> /root/.bashrc RUN echo 'if [ "$HOME" != "/root" ]; then ln -sf /root/.local/bin/poetry $HOME/.local/bin/poetry; fi' >> /root/.bashrc
RUN poetry config virtualenvs.create false RUN poetry config virtualenvs.create false

View File

@ -36,9 +36,14 @@ Using `pip`:
pip install -e ".[dynamixel]" pip install -e ".[dynamixel]"
``` ```
Or using `poetry`: Using `poetry`:
```bash ```bash
poetry install --sync --extras "dynamixel" poetry sync --extras "dynamixel"
```
Using `uv`:
```bash
uv sync --extra "dynamixel"
``` ```
/!\ For Linux only, ffmpeg and opencv requires conda install for now. Run this exact sequence of commands: /!\ For Linux only, ffmpeg and opencv requires conda install for now. Run this exact sequence of commands:

8818
poetry.lock generated

File diff suppressed because it is too large Load Diff