@@ -3,6 +3,13 @@ black = black python/pydantic_core tests generate_self_schema.py wasm-preview/ru
3
3
ruff = ruff python/pydantic_core tests generate_self_schema.py wasm-preview/run_tests.py
4
4
mypy-stubtest = python -m mypy.stubtest pydantic_core._pydantic_core --allowlist .mypy-stubtest-allowlist
5
5
6
+ # using pip install cargo (via maturin via pip) doesn't get the tty handle
7
+ # so doesn't render color without some help
8
+ export CARGO_TERM_COLOR =$(shell (test -t 0 && echo "always") || echo "auto")
9
+ # maturin develop only makes sense inside a virtual env, is otherwise
10
+ # more or less equivalent to pip install -e just a little nicer
11
+ USE_MATURIN = $(shell [ "$$VIRTUAL_ENV" != "" ] && (which maturin) )
12
+
6
13
.PHONY : install
7
14
install :
8
15
pip install -U pip wheel pre-commit
@@ -16,23 +23,55 @@ install-rust-coverage:
16
23
cargo install rustfilt coverage-prepare
17
24
rustup component add llvm-tools-preview
18
25
26
+ .PHONY : install-pgo
27
+ rustup component add llvm-tools-preview
28
+
19
29
.PHONY : build-dev
20
30
build-dev :
21
31
@rm -f python/pydantic_core/* .so
22
- cargo build --features extension-module
23
- @rm -f target/debug/lib_pydantic_core.d
24
- @rm -f target/debug/lib_pydantic_core.rlib
25
- @mv target/debug/lib_pydantic_core.* python/pydantic_core/_pydantic_core.so
32
+ ifneq ($(USE_MATURIN ) ,)
33
+ maturin develop
34
+ else
35
+ pip install -v -e . --config-settings=build-args='--profile dev'
36
+ endif
26
37
27
38
.PHONY : build-prod
28
39
build-prod :
29
40
@rm -f python/pydantic_core/* .so
41
+ ifneq ($(USE_MATURIN ) ,)
30
42
maturin develop --release
43
+ else
44
+ pip install -v -e .
45
+ endif
31
46
32
47
.PHONY : build-coverage
33
48
build-coverage :
34
- rm -f python/pydantic_core/* .so
35
- maturin develop -- -C instrument-coverage
49
+ @rm -f python/pydantic_core/* .so
50
+ ifneq ($(USE_MATURIN ) ,)
51
+ RUSTFLAGS='-C instrument-coverage' maturin develop --release
52
+ else
53
+ RUSTFLAGS='-C instrument-coverage' pip install -v -e .
54
+ endif
55
+
56
+ .PHONY : build-pgo
57
+ build-pgo :
58
+ @rm -f python/pydantic_core/* .so
59
+ $(eval PROFDATA := $(shell mktemp -d) )
60
+ ifneq ($(USE_MATURIN ) ,)
61
+ RUSTFLAGS='-Cprofile-generate=$(PROFDATA)' maturin develop --release
62
+ else
63
+ RUSTFLAGS='-Cprofile-generate=$(PROFDATA)' pip install -v -e .
64
+ endif
65
+ pytest tests/benchmarks
66
+ $(eval LLVM_PROFDATA := $(shell rustup run stable bash -c 'echo $$RUSTUP_HOME/toolchains/$$RUSTUP_TOOLCHAIN/lib/rustlib/$$(rustc -Vv | grep host | cut -d " " -f 2)/bin/llvm-profdata'))
67
+ $(LLVM_PROFDATA) merge -o $(PROFDATA)/merged.profdata $(PROFDATA)
68
+ ifneq ($(USE_MATURIN ) ,)
69
+ RUSTFLAGS='-Cprofile-use=$(PROFDATA)/merged.profdata' maturin develop --release
70
+ else
71
+ RUSTFLAGS='-Cprofile-use=$(PROFDATA)/merged.profdata' pip install -v -e .
72
+ endif
73
+ @rm -rf $(PROFDATA)
74
+
36
75
37
76
.PHONY : build-wasm
38
77
build-wasm :
0 commit comments