This is an automated email from the ASF dual-hosted git repository.

sungwy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg-python.git


The following commit(s) were added to refs/heads/main by this push:
     new 87d52d33 fix: improve makefile (#1091)
87d52d33 is described below

commit 87d52d3370ba8d674350001586d55b35c1bea1dc
Author: Tiansu <[email protected]>
AuthorDate: Mon Aug 26 15:51:51 2024 +0200

    fix: improve makefile (#1091)
    
    * fix: improve makefile
    
    * fix: pin poetry version
    
    * Apply suggestions from code review
    
    Co-authored-by: Sung Yun <[email protected]>
    
    ---------
    
    Co-authored-by: Tiansu Yu <tiansu.yu@icloud>
    Co-authored-by: Sung Yun <[email protected]>
---
 Makefile | 39 ++++++++++++++++++++++++---------------
 1 file changed, 24 insertions(+), 15 deletions(-)

diff --git a/Makefile b/Makefile
index 8fe7f8a0..a40efd17 100644
--- a/Makefile
+++ b/Makefile
@@ -15,28 +15,37 @@
 # specific language governing permissions and limitations
 # under the License.
 
-install-poetry:
-       pip install poetry==1.8.3
 
-install-dependencies:
-       poetry install -E pyarrow -E hive -E s3fs -E glue -E adlfs -E duckdb -E 
ray -E sql-postgres -E gcsfs -E sql-sqlite -E daft
+help:  ## Display this help
+       @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)
+
+install-poetry:  ## Install poetry if the user has not done that yet.
+        @if ! command -v poetry &> /dev/null; then \
+         echo "Poetry could not be found. Installing..."; \
+         pip install --user poetry==1.8.3; \
+     else \
+         echo "Poetry is already installed."; \
+     fi
+
+install-dependencies: ## Install dependencies including dev and all extras
+       poetry install --all-extras
 
 install: | install-poetry install-dependencies
 
-check-license:
+check-license: ## Check license headers
        ./dev/check-license
 
-lint:
+lint: ## lint
        poetry run pre-commit run --all-files
 
-test:
+test: ## Run all unit tests, can add arguments with PYTEST_ARGS="-vv"
        poetry run pytest tests/ -m "(unmarked or parametrize) and not 
integration" ${PYTEST_ARGS}
 
-test-s3:
+test-s3: # Run tests marked with s3, can add arguments with PYTEST_ARGS="-vv"
        sh ./dev/run-minio.sh
        poetry run pytest tests/ -m s3 ${PYTEST_ARGS}
 
-test-integration:
+test-integration: ## Run all integration tests, can add arguments with 
PYTEST_ARGS="-vv"
        docker compose -f dev/docker-compose-integration.yml kill
        docker compose -f dev/docker-compose-integration.yml rm -f
        docker compose -f dev/docker-compose-integration.yml up -d
@@ -50,18 +59,18 @@ test-integration-rebuild:
        docker compose -f dev/docker-compose-integration.yml rm -f
        docker compose -f dev/docker-compose-integration.yml build --no-cache
 
-test-adlfs:
+test-adlfs: ## Run tests marked with adlfs, can add arguments with 
PYTEST_ARGS="-vv"
        sh ./dev/run-azurite.sh
        poetry run pytest tests/ -m adlfs ${PYTEST_ARGS}
 
-test-gcs:
+test-gcs: ## Run tests marked with gcs, can add arguments with 
PYTEST_ARGS="-vv"
        sh ./dev/run-gcs-server.sh
        poetry run  pytest tests/ -m gcs ${PYTEST_ARGS}
 
-test-coverage-unit:
+test-coverage-unit: # Run test with coverage for unit tests, can add arguments 
with PYTEST_ARGS="-vv"
        poetry run coverage run --source=pyiceberg/ --data-file=.coverage.unit 
-m pytest tests/ -v -m "(unmarked or parametrize) and not integration" 
${PYTEST_ARGS}
 
-test-coverage-integration:
+test-coverage-integration: # Run test with coverage for integration tests, can 
add arguments with PYTEST_ARGS="-vv"
        docker compose -f dev/docker-compose-integration.yml kill
        docker compose -f dev/docker-compose-integration.yml rm -f
        docker compose -f dev/docker-compose-integration.yml up -d
@@ -72,14 +81,14 @@ test-coverage-integration:
        docker compose -f dev/docker-compose-integration.yml exec -T 
spark-iceberg ipython ./provision.py
        poetry run coverage run --source=pyiceberg/ 
--data-file=.coverage.integration -m pytest tests/ -v -m integration 
${PYTEST_ARGS}
 
-test-coverage: | test-coverage-unit test-coverage-integration
+test-coverage: | test-coverage-unit test-coverage-integration ## Run all tests 
with coverage including unit and integration tests
        poetry run coverage combine .coverage.unit .coverage.integration
        poetry run coverage report -m --fail-under=90
        poetry run coverage html
        poetry run coverage xml
 
 
-clean:
+clean: ## Clean up the project Python working environment
        @echo "Cleaning up Cython and Python cached files"
        @rm -rf build dist *.egg-info
        @find . -name "*.so" -exec echo Deleting {} \; -delete

Reply via email to