File size: 3,430 Bytes
a9bd396
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# make sure to test the local checkout in scripts and not the pre-installed one (don't use quotes!)
export PYTHONPATH = src

.PHONY: style check-repo fix-repo test test-examples benchmark

check_dirs := examples tests src utils scripts benchmark benchmark_v2
exclude_folders :=  ""


# this runs all linting/formatting scripts, most notably ruff
style:
	ruff check $(check_dirs) setup.py conftest.py --fix --exclude $(exclude_folders)
	ruff format $(check_dirs) setup.py conftest.py --exclude $(exclude_folders)
	python utils/custom_init_isort.py
	python utils/sort_auto_mappings.py


# Check that the repo is in a good state (both style and consistency CI checks)
# Note: each line is run in its own shell, and doing `-` before the command ignores the errors if any, continuing with next command
check-repo:
	ruff check $(check_dirs) setup.py conftest.py
	ruff format --check $(check_dirs) setup.py conftest.py
	-python utils/custom_init_isort.py --check_only
	-python utils/sort_auto_mappings.py --check_only
	-python -c "from transformers import *" || (echo '🚨 import failed, this means you introduced unprotected imports! 🚨'; exit 1)
	-python utils/check_copies.py
	-python utils/check_modular_conversion.py
	-python utils/check_doc_toc.py
	-python utils/check_docstrings.py
	-python utils/check_dummies.py
	-python utils/check_repo.py
	-python utils/check_modeling_structure.py
	-python utils/check_inits.py
	-python utils/check_pipeline_typing.py
	-python utils/check_config_docstrings.py
	-python utils/check_config_attributes.py
	-python utils/check_doctest_list.py
	-python utils/update_metadata.py --check-only  
	-python utils/add_dates.py --check-only
	-@{ \
		md5sum src/transformers/dependency_versions_table.py > md5sum.saved; \
		python setup.py deps_table_update; \
		md5sum -c --quiet md5sum.saved || (printf "Error: the version dependency table is outdated.\nPlease run 'make fix-repo' and commit the changes.\n" && exit 1); \
		rm md5sum.saved; \
	}


# Run all repo checks for which there is an automatic fix, most notably modular conversions
# Note: each line is run in its own shell, and doing `-` before the command ignores the errors if any, continuing with next command
fix-repo: style
	-python setup.py deps_table_update
	-python utils/check_doc_toc.py --fix_and_overwrite
	-python utils/check_copies.py --fix_and_overwrite
	-python utils/check_modular_conversion.py --fix_and_overwrite
	-python utils/check_dummies.py --fix_and_overwrite
	-python utils/check_pipeline_typing.py --fix_and_overwrite
	-python utils/check_doctest_list.py --fix_and_overwrite
	-python utils/check_docstrings.py --fix_and_overwrite
	-python utils/add_dates.py


# Run tests for the library
test:
	python -m pytest -n auto --dist=loadfile -s -v ./tests/

# Run tests for examples
test-examples:
	python -m pytest -n auto --dist=loadfile -s -v ./examples/pytorch/

# Run benchmark
benchmark:
	python3 benchmark/benchmark.py --config-dir benchmark/config --config-name generation --commit=diff backend.model=google/gemma-2b backend.cache_implementation=null,static backend.torch_compile=false,true --multirun


# Release stuff
pre-release:
	python utils/release.py

pre-patch:
	python utils/release.py --patch

post-release:
	python utils/release.py --post_release

post-patch:
	python utils/release.py --post_release --patch

build-release:
	rm -rf dist
	rm -rf build
	python setup.py bdist_wheel
	python setup.py sdist