-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathpyproject.toml
More file actions
120 lines (112 loc) · 4.25 KB
/
pyproject.toml
File metadata and controls
120 lines (112 loc) · 4.25 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
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[project]
name = "bocpy"
version = "0.9.0"
authors = [
{name = "bocpy Team", email="bocpy@microsoft.com"}
]
description = "bocpy is a Python extension that adds Behavior-oriented concurrency built on top of cross-interpreter data."
dynamic = ["readme"]
keywords = ["behavior-oriented", "concurrency", "subinterpreters"]
license = "MIT"
# When Python 3.10 reaches EOL (October 2026) and we bump this floor
# to >=3.11, regenerate ``ci/constraints-docs.txt`` to pick up the
# deferred Dependabot bumps (docutils 0.23, ruamel-yaml 0.19.x,
# sphinx-tabs 3.4.7+, sphinx-toolbox 4.2.x, standard-imghdr 3.13.x)
# that currently require Python >=3.11 and so cannot enter a
# universal lock that still includes 3.10.
requires-python = ">=3.10"
classifiers = [
"Development Status :: 4 - Beta",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
"Programming Language :: Python :: Implementation :: CPython",
]
[project.urls]
homepage = "https://microsoft.github.io/bocpy/"
source = "https://github.com/microsoft/bocpy"
documentation = "https://microsoft.github.io/bocpy/sphinx/index.html"
issues = "https://github.com/microsoft/bocpy/issues"
[project.optional-dependencies]
# Lower bounds match the versions currently pinned in
# ``ci/constraints-<extra>.txt`` (the source of truth for ``--require-hashes``
# installs in CI). They prevent ``pip install bocpy[<extra>]`` from
# silently resolving to a pre-validated release; upper bounds are
# intentionally omitted so the lockfiles remain authoritative for
# strict installs (see SUPPLY_CHAIN.md). When the constraints files
# are regenerated, bump the floors here in lockstep.
test = [
"pytest>=9.0.3",
"pytest-cov>=7.1.0",
"pytest-emoji>=0.2.0",
"pytest-md>=0.2.0",
"setuptools>=82.0.1",
"wheel>=0.47.0",
"tomli>=2.4.1; python_version < \"3.11\"",
]
linting = [
"flake8>=7.3.0",
"flake8-bugbear>=25.11.29",
"flake8-builtins>=3.1.0",
"flake8-docstrings>=1.7.0",
"flake8-encodings>=0.5.1",
"flake8-import-order>=0.19.2",
"flake8-quotes>=3.4.0",
"pep8-naming>=0.15.1",
]
docs = [
"sphinx>=8.1.3",
"sphinx-autodoc-typehints>=3.0.1",
"enum-tools[sphinx]>=0.13.0",
]
# ``boids`` is an example-only extra (not covered by SUPPLY_CHAIN.md);
# pyglet floats freely since the demo is not part of the supported
# install surface.
boids = ["pyglet"]
audit = ["pip-audit>=2.10.0"]
[project.scripts]
bocpy-bank = "bocpy.examples.bank:main"
bocpy-boids = "bocpy.examples.boids:main"
bocpy-calculator = "bocpy.examples.calculator:main"
bocpy-bench = "bocpy.examples.benchmark:main"
bocpy-cooking-boc = "bocpy.examples.cooking_boc:main"
bocpy-cooking-threads = "bocpy.examples.cooking_threads:main"
bocpy-dining-philosophers = "bocpy.examples.dining_philosophers:main"
bocpy-fibonacci = "bocpy.examples.fibonacci:main"
bocpy-prime-factor = "bocpy.examples.prime_factor:main"
bocpy-primes = "bocpy.examples.primes:main"
bocpy-sketches = "bocpy.examples.sketches:main"
[tool.setuptools]
packages = ["bocpy", "bocpy.examples"]
include-package-data = false
[tool.setuptools.package-dir]
"" = "src"
"bocpy.examples" = "examples"
[tool.setuptools.package-data]
"bocpy" = [
"py.typed",
"*.pyi",
"include/bocpy/bocpy.h",
"include/bocpy/xidata.h",
"include/bocpy/bocpy_msvc.c",
]
"bocpy.examples" = ["*.txt"]
[tool.pytest.ini_options]
# Confine pytest collection to the in-tree test suite. The downstream
# template at templates/c_abi_consumer/ has its own pytest suite that
# the dedicated `c-abi-consumer` PR-gate job invokes explicitly.
testpaths = ["test"]
# Make ``scripts/`` importable from tests. The scripts there are not
# part of the installed bocpy package (they are run by cibuildwheel
# during the wheel-repair step), but their behaviour is covered by
# the test suite. ``pythonpath`` is a pytest 7.0+ feature that
# prepends to ``sys.path`` before any collection runs, which lets
# the test files do plain ``import build_sbom`` with no boilerplate.
pythonpath = ["scripts"]