-
Notifications
You must be signed in to change notification settings - Fork 22
Expand file tree
/
Copy pathpyproject.toml
More file actions
167 lines (152 loc) · 5.63 KB
/
Copy pathpyproject.toml
File metadata and controls
167 lines (152 loc) · 5.63 KB
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
[build-system]
requires = ["scikit-build-core>=1.0.2"]
build-backend = "scikit_build_core.build"
[tool.scikit-build]
wheel.packages = ["src/fandango"]
build-dir = "build"
# redirect mode (default) keeps CMake artifacts out of the source tree; see
# fandango/beartype.py for the beartype.claw compatibility shim (beartype/beartype#556).
# The C++ parser extension installs as top-level sa_fandango_cpp_parser (CMakeLists.txt).
[[tool.scikit-build.overrides]]
if.env.FANDANGO_SKIP_CPP_PARSER = true
wheel.cmake = false
[[tool.scikit-build.overrides]]
if.env.FANDANGO_REQUIRE_BINARY_BUILD = true
wheel.cmake = true
[project]
name = "fandango-fuzzer"
version = "1.2.0"
authors = [
{ name = "José Antonio Zamudio Amaya", email = "jose.zamudio@cispa.de" },
{ name = "Marius Smytzek", email = "marius.smytzek@cispa.de" },
{ name = "Andreas Zeller", email = "andreas.zeller@cispa.de" },
]
description = "Fandango produces myriads of high-quality random inputs to test programs, giving users unprecedented control over format and shape of the inputs."
readme = "README.md"
license = { file = "LICENSE.md" }
requires-python = ">=3.11,<4.0"
classifiers = [
"Intended Audience :: Science/Research",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Operating System :: OS Independent",
"Topic :: Scientific/Engineering",
"Topic :: Software Development :: Testing",
]
dependencies = [
"ansi_styles>=0.2.2",
"antlr4-python3-runtime>=4.13",
"astar>=0.99",
"beartype>=0.21.0,!=0.22.6,!=0.22.7",
"cachedir_tag>=0.0.3",
"cachetools>=5.5.2",
"dill>=0.3.7",
"exrex>=0.12.0",
"gnureadline>=8.2.13 ; platform_system != 'Windows' and implementation_name != 'pypy'",
"lxml>=5.3.2",
"packaging>=25.0",
"py010parser>=0.1.18",
"pyreadline3>=3.5.4; platform_system == 'Windows'",
"regex>=2024.11.6",
"tdigest>=0.5.2.2",
"thefuzz>=0.22",
"xdg-base-dirs>=6.0.2",
]
[project.optional-dependencies]
test = [
"Faker>=30.4.0",
"pytest>=8.3.5",
"pytest-benchmark>=5.1.0",
"pytest-cov>=4.1.0",
"pytest-html>=3.2.0",
"pytest-pythonhashseed>=2.0.0",
"pytest-rerunfailures>=11.1.2",
"pytest-timeout>=2.4.0",
"pytest-xdist>=3.7.0",
"python-dateutil>=2.9.0.post0",
"docutils>=0.20.1",
"tccbox>=2025.6.6", # We have upgraded from ==2024.7.1 (the version ISLa used) because it is not compatible with Python 3.12 anymore :(
"pandas>=2.3.3", # for evaluation and benchmarking
"numpy>=2.1.3",
"cryptography>=46.0.7",
]
development = [
"fandango-fuzzer[test]",
"matplotlib>=3.10.0",
"mypy>=1.16.0",
"pre-commit>=4.2.0",
"pygls>=2.0.0a4", # language server
"ruff>=0.14.0",
"scikit-build-core>=1.0.2",
"speedy-antlr-tool>=1.4.3",
"types-cachetools>=5.5.2", # enable mypy to check cachetools
]
book = [
"fandango-fuzzer[development]", # need e.g. ruff and faker
"aiosmtpd>=1.4.6", # example server for protocol testing
"docutils>=0.20.1", # Jupyter-book needs docutils<=0.20
"ghp-import>=2.1.0",
"graphviz>=0.20.3",
"jupyter-book>=1.0.4,<2.0.0",
"pagelabels>=1.2.1",
"sphinxcontrib-mermaid>=1.0.0",
]
full = ["fandango-fuzzer[book,development,test]"]
[project.urls]
homepage = "https://fandango-fuzzer.github.io/"
repository = "https://github.com/fandango-fuzzer/fandango/"
"Bug Tracker" = "https://github.com/fandango-fuzzer/fandango/issues"
[project.scripts]
fandango = "fandango.cli:main"
[tool.ruff]
line-length = 88
target-version = "py311"
exclude = [
"build",
"dist",
"fcc",
"evaluation/protocol_testing_eval/profuzzbench",
"src/fandango/language/parser/FandangoLexer.py",
"src/fandango/language/parser/sa_fandango.py",
"src/fandango/language/parser/*Parser*.py",
"src/fandango/converters/antlr/ANTLRv4*.py",
"src/fandango/converters/antlr/LexerAdaptor*.py",
]
[tool.ruff.lint]
select = ["E", "F", "B", "I"]
ignore = [
"E501", # line too long
]
[tool.mypy]
follow_untyped_imports = true
check_untyped_defs = true
enable_error_code = ['ignore-without-code']
# See https://mypy.readthedocs.io/en/stable/config_file.html#confval-exclude
exclude = [
'build/',
'dist/',
'fcc/*',
'evaluation/protocol_testing_eval/profuzzbench/.*',
'src/fandango/language/parser/FandangoLexer\.py$',
'src/fandango/language/parser/FandangoParser\.py$',
'src/fandango/language/parser/FandangoParserVisitor\.py$',
'src/fandango/language/parser/sa_fandango\.py$',
'src/fandango/converters/antlr/ANTLRv4[^.]*\.py$',
'src/fandango/converters/antlr/LexerAdaptor[^.]*\.py$',
]
[tool.pytest.ini_options]
# -n auto: use all cores
# --timeout 300: timeout after 300 seconds
# --durations=10: show the 10 slowest tests
# --pythonhashseed=1: use a fixed hash seed
# --benchmark-max-time=10: stop after 10 seconds for each benchmark
# --benchmark-disable: disable benchmarks unless manually overwritten
# --maxschedchunk=1: max number of chunks to schedule to balance load across cores and schedule long-running tests first (see conftest.py)
addopts = "-n auto --timeout 300 --durations=10 --pythonhashseed=1 --benchmark-max-time=10 --benchmark-disable --maxschedchunk=1"
filterwarnings = [
"error", # warnings are errors
"ignore::pytest_benchmark.logger.PytestBenchmarkWarning", # benchmarks don't run with xdist, that's fine, they are run manually in the CI
"ignore::ResourceWarning", # windows keeps a socket open for some reason
]