bpo-40669: Install PEG benchmarking dependencies in a venv (GH-20183)
Create a `make venv` target, that creates a virtual environment and installs the dependency in that venv. `make time` and all the related targets are changed to use the virtual environment python. Automerge-Triggered-By: @pablogsal
This commit is contained in:
parent
2135e10dc7
commit
dc31800f86
|
@ -1,3 +1,4 @@
|
||||||
peg_extension/parse.c
|
peg_extension/parse.c
|
||||||
data/xxl.py
|
data/xxl.py
|
||||||
|
venv/
|
||||||
@data
|
@data
|
||||||
|
|
|
@ -5,7 +5,8 @@ endif
|
||||||
ifeq ($(UNAME_S),Darwin)
|
ifeq ($(UNAME_S),Darwin)
|
||||||
PYTHON ?= ../../python.exe
|
PYTHON ?= ../../python.exe
|
||||||
endif
|
endif
|
||||||
|
VENVDIR ?= ./venv
|
||||||
|
VENVPYTHON ?= $(VENVDIR)/bin/python
|
||||||
CPYTHON ?= ../../Lib
|
CPYTHON ?= ../../Lib
|
||||||
MYPY ?= mypy
|
MYPY ?= mypy
|
||||||
|
|
||||||
|
@ -27,6 +28,7 @@ peg_extension/parse.c: $(GRAMMAR) $(TOKENS) pegen/*.py peg_extension/peg_extensi
|
||||||
clean:
|
clean:
|
||||||
-rm -f peg_extension/*.o peg_extension/*.so peg_extension/parse.c
|
-rm -f peg_extension/*.o peg_extension/*.so peg_extension/parse.c
|
||||||
-rm -f data/xxl.py
|
-rm -f data/xxl.py
|
||||||
|
-rm -rf $(VENVDIR)
|
||||||
|
|
||||||
dump: peg_extension/parse.c
|
dump: peg_extension/parse.c
|
||||||
cat -n $(TESTFILE)
|
cat -n $(TESTFILE)
|
||||||
|
@ -41,6 +43,12 @@ regen-metaparser: pegen/metagrammar.gram pegen/*.py
|
||||||
|
|
||||||
.PHONY: test
|
.PHONY: test
|
||||||
|
|
||||||
|
venv:
|
||||||
|
$(PYTHON) -m venv $(VENVDIR)
|
||||||
|
$(VENVPYTHON) -m pip install -U pip setuptools
|
||||||
|
$(VENVPYTHON) -m pip install -U memory_profiler
|
||||||
|
@echo "The venv has been created in the $(VENVDIR) directory"
|
||||||
|
|
||||||
test: run
|
test: run
|
||||||
|
|
||||||
run: peg_extension/parse.c
|
run: peg_extension/parse.c
|
||||||
|
@ -61,22 +69,22 @@ stats: peg_extension/parse.c data/xxl.py
|
||||||
|
|
||||||
time: time_compile
|
time: time_compile
|
||||||
|
|
||||||
time_compile: peg_extension/parse.c data/xxl.py
|
time_compile: venv peg_extension/parse.c data/xxl.py
|
||||||
$(PYTHON) scripts/benchmark.py --parser=pegen --target=xxl compile
|
$(VENVPYTHON) scripts/benchmark.py --parser=pegen --target=xxl compile
|
||||||
|
|
||||||
time_parse: peg_extension/parse.c data/xxl.py
|
time_parse: venv peg_extension/parse.c data/xxl.py
|
||||||
$(PYTHON) scripts/benchmark.py --parser=pegen --target=xxl parse
|
$(VENVPYTHON) scripts/benchmark.py --parser=pegen --target=xxl parse
|
||||||
|
|
||||||
time_check: peg_extension/parse.c data/xxl.py
|
time_check: venv peg_extension/parse.c data/xxl.py
|
||||||
$(PYTHON) scripts/benchmark.py --parser=pegen --target=xxl check
|
$(VENVPYTHON) scripts/benchmark.py --parser=pegen --target=xxl check
|
||||||
|
|
||||||
time_stdlib: time_stdlib_compile
|
time_stdlib: time_stdlib_compile
|
||||||
|
|
||||||
time_stdlib_compile: data/xxl.py
|
time_stdlib_compile: venv peg_extension/parse.c data/xxl.py
|
||||||
$(PYTHON) scripts/benchmark.py --parser=cpython --target=xxl compile
|
$(VENVPYTHON) scripts/benchmark.py --parser=cpython --target=xxl compile
|
||||||
|
|
||||||
time_stdlib_parse: data/xxl.py
|
time_stdlib_parse: venv peg_extension/parse.c data/xxl.py
|
||||||
$(PYTHON) scripts/benchmark.py --parser=cpython --target=xxl parse
|
$(VENVPYTHON) scripts/benchmark.py --parser=cpython --target=xxl parse
|
||||||
|
|
||||||
test_local:
|
test_local:
|
||||||
$(PYTHON) scripts/test_parse_directory.py \
|
$(PYTHON) scripts/test_parse_directory.py \
|
||||||
|
@ -105,8 +113,8 @@ mypy: regen-metaparser
|
||||||
format-python:
|
format-python:
|
||||||
black pegen scripts
|
black pegen scripts
|
||||||
|
|
||||||
bench:
|
bench: venv
|
||||||
$(PYTHON) scripts/benchmark.py --parser=pegen --target=stdlib check
|
$(VENVPYTHON) scripts/benchmark.py --parser=pegen --target=stdlib check
|
||||||
|
|
||||||
format: format-python
|
format: format-python
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env python3.9
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import ast
|
import ast
|
||||||
|
@ -6,7 +6,12 @@ import sys
|
||||||
import os
|
import os
|
||||||
from time import time
|
from time import time
|
||||||
|
|
||||||
import memory_profiler
|
try:
|
||||||
|
import memory_profiler
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
print("Please run `make venv` to create a virtual environment and install"
|
||||||
|
" all the dependencies, before running this script.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
sys.path.insert(0, os.getcwd())
|
sys.path.insert(0, os.getcwd())
|
||||||
from peg_extension import parse
|
from peg_extension import parse
|
||||||
|
|
Loading…
Reference in New Issue