1919help : # # Display this help
2020 @awk ' BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-20s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST )
2121
22- POETRY_VERSION = 2.1.1
23- install-poetry : # # Ensure Poetry is installed and the correct version is being used.
24- @if ! command -v poetry & > /dev/null; then \
25- echo " Poetry could not be found. Installing..." ; \
26- pip install --user poetry ==$(POETRY_VERSION ) ; \
22+ UV_VERSION = 0.6.16
23+ install-uv : # # Ensure uv is installed and the correct version is being used.
24+ @if ! command -v uv & > /dev/null; then \
25+ echo " uv could not be found. Installing..." ; \
26+ pip install --user uv ==$(UV_VERSION ) ; \
2727 else \
28- INSTALLED_VERSION=$$(pip show poetry | grep Version | awk '{print $$2}' ) ; \
29- if [ " $$ INSTALLED_VERSION" != " $( POETRY_VERSION ) " ]; then \
30- echo " Poetry version $$ INSTALLED_VERSION does not match required version $( POETRY_VERSION ) . Updating..." ; \
31- pip install --user --upgrade poetry ==$(POETRY_VERSION ) ; \
28+ INSTALLED_VERSION=$$(uv --version | awk '{print $$2}' ) ; \
29+ if [ " $$ INSTALLED_VERSION" != " $( UV_VERSION ) " ]; then \
30+ echo " uv version $$ INSTALLED_VERSION does not match required version $( UV_VERSION ) . Updating..." ; \
31+ pip install --user --upgrade uv ==$(UV_VERSION ) ; \
3232 else \
33- echo " Poetry version $$ INSTALLED_VERSION is already installed." ; \
33+ echo " uv version $$ INSTALLED_VERSION is already installed." ; \
3434 fi \
3535 fi
3636
3737install-dependencies : # # Install dependencies including dev, docs, and all extras
38- poetry install --all-extras
38+ uv sync --all-extras --dev
3939
40- install : | install-poetry install-dependencies
40+ install : | install-uv install-dependencies
4141
4242check-license : # # Check license headers
4343 ./dev/check-license
4444
4545lint : # # lint
46- poetry run pre-commit run --all-files
46+ uv run pre-commit run --all-files
4747
4848test : # # Run all unit tests, can add arguments with PYTEST_ARGS="-vv"
49- poetry run pytest tests/ -m " (unmarked or parametrize) and not integration" ${PYTEST_ARGS}
49+ uv run pytest tests/ -m " (unmarked or parametrize) and not integration" ${PYTEST_ARGS}
5050
5151test-s3 : # Run tests marked with s3, can add arguments with PYTEST_ARGS="-vv"
5252 sh ./dev/run-minio.sh
53- poetry run pytest tests/ -m s3 ${PYTEST_ARGS}
53+ uv run pytest tests/ -m s3 ${PYTEST_ARGS}
5454
5555test-integration : | test-integration-setup test-integration-exec # # Run all integration tests, can add arguments with PYTEST_ARGS="-vv"
5656
@@ -63,7 +63,7 @@ test-integration-setup: # Prepare the environment for integration
6363 docker compose -f dev/docker-compose-integration.yml exec -T spark-iceberg ipython ./provision.py
6464
6565test-integration-exec : # Execute integration tests, can add arguments with PYTEST_ARGS="-vv"
66- poetry run pytest tests/ -v -m integration ${PYTEST_ARGS}
66+ uv run pytest tests/ -v -m integration ${PYTEST_ARGS}
6767
6868test-integration-rebuild :
6969 docker compose -f dev/docker-compose-integration.yml kill
@@ -72,14 +72,14 @@ test-integration-rebuild:
7272
7373test-adls : # # Run tests marked with adls, can add arguments with PYTEST_ARGS="-vv"
7474 sh ./dev/run-azurite.sh
75- poetry run pytest tests/ -m adls ${PYTEST_ARGS}
75+ uv run pytest tests/ -m adls ${PYTEST_ARGS}
7676
7777test-gcs : # # Run tests marked with gcs, can add arguments with PYTEST_ARGS="-vv"
7878 sh ./dev/run-gcs-server.sh
79- poetry run pytest tests/ -m gcs ${PYTEST_ARGS}
79+ uv run pytest tests/ -m gcs ${PYTEST_ARGS}
8080
8181test-coverage-unit : # Run test with coverage for unit tests, can add arguments with PYTEST_ARGS="-vv"
82- poetry run coverage run --source=pyiceberg/ --data-file=.coverage.unit -m pytest tests/ -v -m " (unmarked or parametrize) and not integration" ${PYTEST_ARGS}
82+ uv run coverage run --source=pyiceberg/ --data-file=.coverage.unit -m pytest tests/ -v -m " (unmarked or parametrize) and not integration" ${PYTEST_ARGS}
8383
8484test-coverage-integration : # Run test with coverage for integration tests, can add arguments with PYTEST_ARGS="-vv"
8585 docker compose -f dev/docker-compose-integration.yml kill
@@ -90,13 +90,13 @@ test-coverage-integration: # Run test with coverage for integration tests, can a
9090 sleep 10
9191 docker compose -f dev/docker-compose-integration.yml cp ./dev/provision.py spark-iceberg:/opt/spark/provision.py
9292 docker compose -f dev/docker-compose-integration.yml exec -T spark-iceberg ipython ./provision.py
93- poetry run coverage run --source=pyiceberg/ --data-file=.coverage.integration -m pytest tests/ -v -m integration ${PYTEST_ARGS}
93+ uv run coverage run --source=pyiceberg/ --data-file=.coverage.integration -m pytest tests/ -v -m integration ${PYTEST_ARGS}
9494
9595test-coverage : | test-coverage-unit test-coverage-integration # # Run all tests with coverage including unit and integration tests
96- poetry run coverage combine .coverage.unit .coverage.integration
97- poetry run coverage report -m --fail-under=90
98- poetry run coverage html
99- poetry run coverage xml
96+ uv run coverage combine .coverage.unit .coverage.integration
97+ uv run coverage report -m --fail-under=90
98+ uv run coverage html
99+ uv run coverage xml
100100
101101
102102clean : # # Clean up the project Python working environment
@@ -110,10 +110,10 @@ clean: ## Clean up the project Python working environment
110110 @echo " Cleanup complete"
111111
112112docs-install :
113- poetry install --with docs
113+ uv sync --group docs
114114
115115docs-serve :
116- poetry run mkdocs serve -f mkdocs/mkdocs.yml
116+ uv run mkdocs serve -f mkdocs/mkdocs.yml
117117
118118docs-build :
119- poetry run mkdocs build -f mkdocs/mkdocs.yml --strict
119+ uv run mkdocs build -f mkdocs/mkdocs.yml --strict
0 commit comments