@@ -3,32 +3,33 @@ name = "temporalio"
33version = " 1.18.1"
44description = " Temporal.io Python SDK"
55authors = [{ name = " Temporal Technologies Inc" , email = " sdk@temporal.io" }]
6- requires-python = " >=3.9 "
6+ requires-python = " >=3.10 "
77readme = " README.md"
88license = { file = " LICENSE" }
9- keywords = [
10- " temporal" ,
11- " workflow" ,
12- ]
9+ keywords = [" temporal" , " workflow" ]
1310dependencies = [
14- " nexus-rpc==1.1.0" ,
15- " protobuf>=3.20,<7.0.0" ,
16- " python-dateutil>=2.8.2,<3 ; python_version < '3.11'" ,
17- " types-protobuf>=3.20" ,
18- " typing-extensions>=4.2.0,<5" ,
11+ " nexus-rpc==1.1.0" ,
12+ " protobuf>=3.20,<7.0.0" ,
13+ " python-dateutil>=2.8.2,<3 ; python_version < '3.11'" ,
14+ " types-protobuf>=3.20" ,
15+ " typing-extensions>=4.2.0,<5" ,
16+ ]
17+ classifiers = [
18+ " License :: OSI Approved :: MIT License" ,
19+ " Programming Language :: Python :: 3.10" ,
20+ " Programming Language :: Python :: 3.11" ,
21+ " Programming Language :: Python :: 3.12" ,
22+ " Programming Language :: Python :: 3.13" ,
23+ " Programming Language :: Python :: 3.14" ,
1924]
2025
2126[project .optional-dependencies ]
2227grpc = [" grpcio>=1.48.2,<2" ]
23- opentelemetry = [
24- " opentelemetry-api>=1.11.1,<2" ,
25- " opentelemetry-sdk>=1.11.1,<2" ,
26- ]
28+ opentelemetry = [" opentelemetry-api>=1.11.1,<2" , " opentelemetry-sdk>=1.11.1,<2" ]
2729pydantic = [" pydantic>=2.0.0,<3" ]
2830openai-agents = [
29- " openai-agents>=0.3,<0.4" ,
30- " eval-type-backport>=0.2.2; python_version < '3.10'" ,
31- " mcp>=1.9.4, <2; python_version >= '3.10'" ,
31+ " openai-agents>=0.3,<0.4" ,
32+ " mcp>=1.9.4, <2" ,
3233]
3334
3435[project .urls ]
@@ -39,48 +40,63 @@ Documentation = "https://docs.temporal.io/docs/python"
3940
4041[dependency-groups ]
4142dev = [
42- " cibuildwheel>=2.22.0,<3" ,
43- " grpcio-tools>=1.48.2,<2" ,
44- " mypy==1.4.1" ,
45- " mypy-protobuf>=3.3.0,<4" ,
46- " psutil>=5.9.3,<6" ,
47- " pydocstyle>=6.3.0,<7" ,
48- " pydoctor>=24.11.1,<25" ,
49- " pyright==1.1.403" ,
50- " pytest~=7.4" ,
51- " pytest-asyncio>=0.21,<0.22" ,
52- " pytest-timeout~=2.2" ,
53- " ruff>=0.5.0,<0.6" ,
54- " toml>=0.10.2,<0.11" ,
55- " twine>=4.0.1,<5" ,
56- " ruff>=0.5.0,<0.6" ,
57- " maturin>=1.8.2" ,
58- " pytest-cov>=6.1.1" ,
59- " httpx>=0.28.1" ,
60- " pytest-pretty>=1.3.0" ,
61- " openai-agents[litellm]>=0.3,<0.4"
43+ " cibuildwheel>=2.22.0,<3" ,
44+ " grpcio-tools>=1.48.2,<2" ,
45+ " mypy==1.18.2" ,
46+ " mypy-protobuf>=3.3.0,<4" ,
47+ " psutil>=5.9.3,<6" ,
48+ " pydocstyle>=6.3.0,<7" ,
49+ " pydoctor>=24.11.1,<25" ,
50+ " pyright==1.1.403" ,
51+ " pytest~=7.4" ,
52+ " pytest-asyncio>=0.21,<0.22" ,
53+ " pytest-timeout~=2.2" ,
54+ " ruff>=0.5.0,<0.6" ,
55+ " toml>=0.10.2,<0.11" ,
56+ " twine>=4.0.1,<5" ,
57+ " maturin>=1.8.2" ,
58+ " pytest-cov>=6.1.1" ,
59+ " httpx>=0.28.1" ,
60+ " pytest-pretty>=1.3.0" ,
61+ " openai-agents>=0.3,<0.4; python_version >= '3.14'" ,
62+ " openai-agents[litellm]>=0.3,<0.4; python_version < '3.14'" ,
63+ " googleapis-common-protos==1.70.0" ,
6264]
6365
6466[tool .poe .tasks ]
6567build-develop = " uv run maturin develop --uv"
6668build-develop-with-release = { cmd = " uv run maturin develop --release --uv" }
67- format = [{cmd = " uv run ruff check --select I --fix" }, {cmd = " uv run ruff format" }, ]
69+ format = [
70+ { cmd = " uv run ruff check --select I --fix" },
71+ { cmd = " uv run ruff format" },
72+ { cmd = " cargo fmt" , cwd = " temporalio/bridge" },
73+ ]
6874gen-docs = " uv run scripts/gen_docs.py"
69- gen-protos = " uv run scripts/gen_protos.py"
70- gen-protos-docker = " uv run scripts/gen_protos_docker.py"
75+ gen-protos = [
76+ { cmd = " uv run scripts/gen_protos.py" },
77+ { cmd = " uv run scripts/gen_payload_visitor.py" },
78+ { cmd = " uv run scripts/gen_bridge_client.py" },
79+ { ref = " format" },
80+ ]
81+ gen-protos-docker = [
82+ { cmd = " uv run scripts/gen_protos_docker.py" },
83+ { cmd = " uv run scripts/gen_payload_visitor.py" },
84+ { cmd = " uv run scripts/gen_bridge_client.py" },
85+ { ref = " format" },
86+ ]
7187lint = [
72- {cmd = " uv run ruff check --select I" },
73- {cmd = " uv run ruff format --check" },
74- {ref = " lint-types" },
75- {ref = " lint-docs" },
88+ { cmd = " uv run ruff check --select I" },
89+ { cmd = " uv run ruff format --check" },
90+ { ref = " lint-types" },
91+ { ref = " lint-docs" },
7692]
7793bridge-lint = { cmd = " cargo clippy -- -D warnings" , cwd = " temporalio/bridge" }
7894# TODO(cretz): Why does pydocstyle complain about @overload missing docs after
7995# https://github.com/PyCQA/pydocstyle/pull/511?
8096lint-docs = " uv run pydocstyle --ignore-decorators=overload"
8197lint-types = [
82- { cmd = " uv run pyright" },
83- { cmd = " uv run mypy --namespace-packages --check-untyped-defs ." },
98+ { cmd = " uv run pyright" },
99+ { cmd = " uv run mypy --namespace-packages --check-untyped-defs ." },
84100]
85101run-bench = " uv run python scripts/run_bench.py"
86102test = " uv run pytest"
@@ -104,7 +120,7 @@ filterwarnings = [
104120
105121[tool .cibuildwheel ]
106122before-all = " pip install protoc-wheel-0"
107- build = " cp39 -win_amd64 cp39 -manylinux_x86_64 cp39 -manylinux_aarch64 cp39 -macosx_x86_64 cp39 -macosx_arm64"
123+ build = " cp310 -win_amd64 cp310 -manylinux_x86_64 cp310 -manylinux_aarch64 cp310 -macosx_x86_64 cp310 -macosx_arm64"
108124build-verbosity = 1
109125
110126[tool .cibuildwheel .macos ]
@@ -120,7 +136,7 @@ ignore_missing_imports = true
120136exclude = [
121137 # Ignore generated code
122138 ' temporalio/api' ,
123- ' temporalio/bridge/proto'
139+ ' temporalio/bridge/proto' ,
124140]
125141
126142[tool .pydocstyle ]
@@ -130,7 +146,8 @@ match_dir = "^(?!(docs|scripts|tests|api|proto|\\.)).*"
130146add_ignore = [
131147 # We like to wrap at a certain number of chars, even long summary sentences.
132148 # https://github.com/PyCQA/pydocstyle/issues/184
133- " D205" , " D415"
149+ " D205" ,
150+ " D415" ,
134151]
135152
136153[tool .pydoctor ]
@@ -226,9 +243,7 @@ manifest-path = "temporalio/bridge/Cargo.toml"
226243module-name = " temporalio.bridge.temporal_sdk_bridge"
227244python-packages = [" temporalio" ]
228245include = [" LICENSE" ]
229- exclude = [
230- " temporalio/bridge/target/**/*" ,
231- ]
246+ exclude = [" temporalio/bridge/target/**/*" ]
232247
233248[tool .uv ]
234249# Prevent uv commands from building the package by default
0 commit comments