Files
semantic-kernel/python/Makefile
T
Eduard van Valkenburg 7bdf55028c Python: experimental py3.13 support (#10276)
### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->
Some small fixes in uv setup within actions
Added experimental unit tests runs for py3.13
First typing improvement from pyright and pyright config.

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [x] The code builds clean without any errors or warnings
- [x] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [x] All unit tests pass, and I have added new tests where possible
- [x] I didn't break anyone 😄
2025-02-12 13:05:39 +00:00

104 lines
3.0 KiB
Makefile

SHELL = /bin/bash
.PHONY: help install install-uv install-python install-pre-commit install-sk clean build
.SILENT: # not strictly required, but included per the original example
all: install
ifeq ($(PYTHON_VERSION),)
PYTHON_VERSION = 3.10
endif
# Detect uv on PATH
UV_VERSION := $(shell command -v uv 2> /dev/null)
##############################
# HELP
##############################
.ONESHELL:
help:
echo -e "\033[1mUSAGE:\033[0m"
echo " make [target]"
echo ""
echo -e "\033[1mTARGETS:\033[0m"
echo " help - show this help message"
echo " install - install uv, python, Semantic Kernel, and all dependencies"
echo " This is the default and will use Python 3.10."
echo " install-uv - install uv"
echo " install-python - install multiple python distributions"
echo " install-sk - install Semantic Kernel and all dependencies"
echo " install-pre-commit - install pre-commit hooks"
echo " clean - remove the virtualenvs"
echo " build - build the project"
echo ""
echo -e "\033[1mVARIABLES:\033[0m"
echo " PYTHON_VERSION - Python version to use. Default is 3.10"
echo " By default, 3.10, 3.11, 3.12 and 3.13 are installed as well."
##############################
# INSTALL
##############################
install:
make install-uv
make install-python
make install-sk
make install-pre-commit
##############################
# INSTALL-UV
##############################
install-uv:
# If uv is not found AND we haven't already re-invoked with CONTINUE=1...
ifneq ($(UV_VERSION),)
echo "uv found at: $(UV_VERSION)"
echo "running uv self update"
uv self update
else ifeq ($(CONTINUE),1)
echo "Skipping uv re-install; continuing with the rest of the steps."
else
echo "uv could not be found."
echo "Installing uv..."
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "uv installed."
echo "Re-executing shell so uv is immediately available on PATH..."
exec $$SHELL -c 'make install CONTINUE=1'
endif
##############################
# INSTALL-PYTHON
##############################
.ONESHELL:
install-python:
echo "Installing python versions"
uv python install 3.10 3.11 3.12 3.13
##############################
# INSTALL-PRE-COMMIT
##############################
.ONESHELL:
install-pre-commit:
echo "Installing pre-commit hooks"
uv run pre-commit install -c python/.pre-commit-config.yaml
##############################
# INSTALL-SK
##############################
.ONESHELL:
install-sk:
echo "Creating and activating venv for python $(PYTHON_VERSION)"
uv venv --python $(PYTHON_VERSION)
echo "Installing Semantic Kernel and all dependencies"
uv sync --all-extras --dev --prerelease=if-necessary-or-explicit
##############################
# CLEAN
##############################
.ONESHELL:
clean:
rm -rf .venv
##############################
# BUILD
##############################
build:
uvx --from build pyproject-build --installer uv