From 53d4253f5a8337624929e1e8df88e2cf0aac47cc Mon Sep 17 00:00:00 2001 From: Zhe Yu Date: Wed, 14 May 2025 19:36:38 +0800 Subject: [PATCH 1/2] chore(cli): switch to uv --- Makefile | 15 +++++++-------- pyproject.toml | 13 ++++--------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index 1daeeecb..56b59c7c 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,20 @@ .PHONY: multitest deps: - pdm lock --group dev --group lsp --group mcp; \ - pdm install + uv sync --group dev --extra lsp --extra mcp test: make deps; \ - pdm run pytest --enable-coredumpy --coredumpy-dir dumps + uv run pytest --enable-coredumpy --coredumpy-dir dumps multitest: @for i in {11..13}; do \ - pdm use python3.$$i; \ - make test; \ + uv venv -p python3.$$i; \ + make test || exit 1; \ done coverage: make deps; \ - pdm run coverage run -m pytest; \ - pdm run coverage html; \ - pdm run coverage report -m + uv run coverage run -m pytest; \ + uv run coverage html; \ + uv run coverage report -m diff --git a/pyproject.toml b/pyproject.toml index 1860b3ee..5074bce0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,16 +36,11 @@ vectorcode-server = "vectorcode.lsp_main:main" vectorcode-mcp-server = "vectorcode.mcp_main:main" [build-system] -requires = ["pdm-backend"] -build-backend = "pdm.backend" +requires = ["setuptools>=64", "setuptools-scm>=8"] +build-backend = "setuptools.build_meta" -[tool.pdm] -distribution = true - -[tool.pdm.version] -source = "scm" -write_to = "./vectorcode/_version.py" -write_template = "__version__ = '{}' # pragma: no cover" +[tool.setuptools_scm] +version_file = "./src/vectorcode/_version.py" [tool.coverage.run] omit = [ From a824fc7a53af5dc6715a08a19668c61ebc247be4 Mon Sep 17 00:00:00 2001 From: Zhe Yu Date: Wed, 14 May 2025 21:28:09 +0800 Subject: [PATCH 2/2] migrate infra to uv --- .github/workflows/release.yml | 7 +++++-- .github/workflows/test_and_cov.yml | 28 ++++++++++++---------------- Makefile | 5 +++-- docs/CONTRIBUTING.md | 4 ++-- pyproject.toml | 2 -- 5 files changed, 22 insertions(+), 24 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1c968c22..f553d3f0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,10 +15,13 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: pdm-project/setup-pdm@v4 + - name: Install uv + uses: astral-sh/setup-uv@v5 - name: Publish package distributions to PyPI - run: pdm publish + run: | + uv build + uv publish --trusted-publishing automatic - name: Generate Changelog id: changelog diff --git a/.github/workflows/test_and_cov.yml b/.github/workflows/test_and_cov.yml index 53325bd8..6a4a0648 100644 --- a/.github/workflows/test_and_cov.yml +++ b/.github/workflows/test_and_cov.yml @@ -24,38 +24,34 @@ jobs: steps: - uses: actions/checkout@v4 - - name: setup pdm - uses: pdm-project/setup-pdm@v4 + - name: Install uv + uses: astral-sh/setup-uv@v5 with: python-version: ${{ matrix.python-version }} - - name: install pdm and dependencies + - name: install uv and dependencies if: matrix.os != 'macos-14' - run: | - pdm lock --group dev --group lsp --group mcp - pdm install + run: uv sync -U --group dev --group lsp --group mcp --no-group legacy -p ${{ matrix.python-version }} - name: install pdm and dependencies for legacy system if: matrix.os == 'macos-14' - run: | - pdm lock --group dev --group lsp --group mcp --group legacy - pdm install + run: uv sync -U --group dev --group lsp --group mcp --group legacy -p ${{ matrix.python-version }} - name: Set custom HF cache directory run: | export HF_HOME="$GITHUB_WORKSPACE/hf_cache" - export SENTENCE_TRANSFORMERS_HOME=$HF_HOME - mkdir -p $HF_HOME - [ -z "$(ls $HF_HOME)" ] || rm $HF_HOME/* -rf && true + export SENTENCE_TRANSFORMERS_HOME="$HF_HOME" + mkdir -p "$HF_HOME" + [ -z "$(ls $HF_HOME)" ] || rm "${HF_HOME:?}"/* -rf && true - name: run tests - run: pdm run pytest --enable-coredumpy --coredumpy-dir ${{ env.COREDUMPY_DUMP_DIR }} + run: uv run pytest --enable-coredumpy --coredumpy-dir ${{ env.COREDUMPY_DUMP_DIR }} - name: run coverage run: | - pdm run coverage run -m pytest - pdm run coverage report -m - pdm run coverage xml -i + uv run coverage run -m pytest + uv run coverage report -m + uv run coverage xml -i - name: upload coverage reports to codecov uses: codecov/codecov-action@v5 diff --git a/Makefile b/Makefile index 56b59c7c..7d1bf82f 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .PHONY: multitest deps: - uv sync --group dev --extra lsp --extra mcp + uv sync --group dev --group lsp --group mcp test: make deps; \ @@ -17,4 +17,5 @@ coverage: make deps; \ uv run coverage run -m pytest; \ uv run coverage html; \ - uv run coverage report -m + uv run coverage report -m; \ + uv run coverage xml -m diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 723304ab..8c43a05e 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -8,10 +8,10 @@ for a list of hooks enabled for the repo. # Python CLI The development and publication of this tool is managed by -[pdm](https://pdm-project.org/en/latest/). +[uv](https://docs.astral.sh/uv/). Once you've cloned and `cd`ed into the repo, run `make deps`. This will call -some `pdm` commands to install development dependencies. Some of them are +some `uv` commands to install development dependencies. Some of them are actually optional, but for convenience I decided to leave them here. This will include [pytest](https://docs.pytest.org/en/stable/), the testing framework, and [coverage.py](https://coverage.readthedocs.io/en/7.7.1/), the coverage diff --git a/pyproject.toml b/pyproject.toml index 5074bce0..f2711b0a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,8 +64,6 @@ dev = [ "debugpy>=1.8.12", "coredumpy>=0.4.1", ] - -[project.optional-dependencies] legacy = ["numpy<2.0.0", "torch==2.2.2", "transformers<=4.49.0"] intel = ['optimum[openvino]', 'openvino'] lsp = ['pygls<2.0.0', 'lsprotocol']