Files
hatchet/sdks/python/pyproject.toml
Matt Kaye 80137736af Feat: Priority (#1513)
* feat: initial work wiring up priorities

* fix: add default to default prio in the db

* feat: wire priority through api on wf creation

* feat: extend python test

* feat: priority for scheduled workflows

* feat: wire priority through python api

* feat: more wiring priority through the api

* feat: I think it works?

* feat: e2e test for priority

* it works!

* feat: expand tests for default priorities

* feat: e2e scheduling test

* fix: skip broken test for now

* fix: lint

* feat: add priority columns to cron and schedule ref  tables

* feat: update inserts to include prio

* feat: wire up more apis

* feat: more wiring

* feat: wire up more rest api fields

* chore: cruft

* fix: more wiring

* fix: lint

* chore: gen + wire up priorities

* fix: retries

* fix: try changing fixture scope

* chore: bump version again

* feat: send priority with action payload

* fix: generate script

* Feat  priority ts (#1518)

* feat: initial work wiring up priorities

* fix: add default to default prio in the db

* feat: wire priority through api on wf creation

* feat: extend python test

* feat: priority for scheduled workflows

* feat: wire priority through python api

* feat: more wiring priority through the api

* feat: I think it works?

* feat: e2e test for priority

* it works!

* feat: expand tests for default priorities

* feat: e2e scheduling test

* chore: minor version for priority

* fix: skip broken test for now

* fix: lint

* feat: add priority columns to cron and schedule ref  tables

* feat: update inserts to include prio

* feat: wire up more apis

* feat: more wiring

* feat: wire up more rest api fields

* chore: cruft

* fix: more wiring

* fix: lint

* chore: gen + wire up priorities

* fix: increase timeout

* fix: retries

* fix: try changing fixture scope

* chore: generate

* fix: set schedule priority

* feat: priority

* fix: move priority to wf

* release: 1.2.0

* rm log

* fix: import

* fix: add priority to step

---------

Co-authored-by: mrkaye97 <mrkaye97@gmail.com>

* fix: add dummy runs to priority test to prevent race conditions

* fix: non-breaking field

* fix: gen

* feat: initial pass at docs

* feat: priority in go sdk

* feat: initial work on go example

* fix: doc examples

* fix: proofread

* chore: version

* feat: go sdk

* fix: lint

* fix: declarations and add back RunAsChild

* fix: child workflows

* fix: namespace

* fix: faster child workflows

* fix: sticky

* add back run as child

---------

Co-authored-by: Gabe Ruttner <gabriel.ruttner@gmail.com>
Co-authored-by: Alexander Belanger <alexander@hatchet.run>
2025-04-14 16:22:00 -04:00

158 lines
4.7 KiB
TOML

[tool.poetry]
name = "hatchet-sdk"
version = "1.5.0"
description = ""
authors = ["Alexander Belanger <alexander@hatchet.run>"]
readme = "README.md"
include = ["hatchet_sdk/py.typed"]
license = "MIT"
[tool.poetry.dependencies]
python = "^3.10"
grpcio = [
{ version = ">=1.64.1, !=1.68.*", markers = "python_version < '3.13'" },
{ version = ">=1.69.0", markers = "python_version >= '3.13'" },
]
grpcio-tools = [
{ version = ">=1.64.1, !=1.68.*", markers = "python_version < '3.13'" },
{ version = ">=1.69.0", markers = "python_version >= '3.13'" },
]
protobuf = "^5.29.1"
pydantic = "^2.6.3"
python-dateutil = "^2.9.0.post0"
urllib3 = ">=1.26.20"
aiostream = "^0.5.2"
aiohttp = "^3.10.5"
aiohttp-retry = "^2.8.3"
tenacity = ">=8.4.1"
cel-python = "^0.2.0"
opentelemetry-api = { version = "^1.28.0", optional = true }
opentelemetry-sdk = { version = "^1.28.0", optional = true }
opentelemetry-instrumentation = { version = ">=0.49b0", optional = true }
opentelemetry-distro = { version = ">=0.49b0", optional = true }
opentelemetry-exporter-otlp = { version = "^1.28.0", optional = true }
opentelemetry-exporter-otlp-proto-http = { version = "^1.28.0", optional = true }
prometheus-client = "^0.21.1"
pydantic-settings = "^2.7.1"
[tool.poetry.group.lint.dependencies]
mypy = "^1.14.0"
types-protobuf = "^5.28.3.20241030"
black = "^24.10.0"
isort = "^5.13.2"
types-psutil = "^6.1.0.20241221"
ruff = "^0.9.7"
types-requests = "^2.32.0.20241016"
psutil = "^6.0.0"
grpc-stubs = "^1.53.0.5"
[tool.poetry.group.test.dependencies]
pytest = "^8.3.5"
pytest-asyncio = "^0.25.3"
pytest-env = "^1.1.5"
pytest-retry = "^1.7.0"
psycopg = { extras = ["pool"], version = "^3.2.6" }
[tool.poetry.extras]
otel = [
"opentelemetry-api",
"opentelemetry-sdk",
"opentelemetry-instrumentation",
"opentelemetry-distro",
"opentelemetry-exporter-otlp",
"opentelemetry-exporter-otlp-proto-http",
]
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.pytest.ini_options]
log_cli = true
env = ["HATCHET_CLIENT_WORKER_HEALTHCHECK_ENABLED=True"]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "session"
[tool.isort]
profile = "black"
known_third_party = [
"grpcio",
"grpcio_tools",
"loguru",
"protobuf",
"pydantic",
"python_dotenv",
"python_dateutil",
"pyyaml",
"urllib3",
]
extend_skip = ["hatchet_sdk/contracts/", "hatchet_sdk/v0/contracts/"]
[tool.black]
extend_exclude = "(hatchet_sdk/contracts/|hatchet_sdk/v0/contracts/)"
[tool.mypy]
files = ["."]
exclude = [
"hatchet_sdk/clients/rest/api/*",
"hatchet_sdk/clients/rest/models/*",
"hatchet_sdk/contracts",
"hatchet_sdk/clients/rest/api_client.py",
"hatchet_sdk/clients/rest/configuration.py",
"hatchet_sdk/clients/rest/exceptions.py",
"hatchet_sdk/clients/rest/rest.py",
"hatchet_sdk/v0/*",
]
strict = true
enable_error_code = [
"possibly-undefined",
"truthy-bool",
"redundant-expr",
"truthy-iterable",
]
[tool.ruff]
exclude = [
"hatchet_sdk/clients/rest/api/*",
"hatchet_sdk/clients/rest/models/*",
"hatchet_sdk/contracts",
"hatchet_sdk/clients/rest/api_client.py",
"hatchet_sdk/clients/rest/configuration.py",
"hatchet_sdk/clients/rest/exceptions.py",
"hatchet_sdk/clients/rest/rest.py",
"hatchet_sdk/v0/*",
]
target-version = "py310"
[tool.poetry.scripts]
api = "examples.api.api:main"
async = "examples.async.worker:main"
fanout = "examples.fanout.worker:main"
fanout_sync = "examples.fanout_sync.worker:main"
cancellation = "examples.cancellation.worker:main"
concurrency_limit = "examples.concurrency_limit.worker:main"
concurrency_limit_rr = "examples.concurrency_limit_rr.worker:main"
dag = "examples.dag.worker:main"
delayed = "examples.delayed.worker:main"
events = "examples.events.worker:main"
logger = "examples.logger.worker:main"
manual_trigger = "examples.manual_trigger.worker:main"
on_failure = "examples.on_failure.worker:main"
programatic_replay = "examples.programatic_replay.worker:main"
dynamic_rate_limit = "examples.rate_limit.dynamic:main"
rate_limit = "examples.rate_limit.worker:main"
simple = "examples.simple.worker:main"
timeout = "examples.timeout.worker:main"
blocked = "examples.blocked_async.worker:main"
existing_loop = "examples.worker_existing_loop.worker:main"
bulk_fanout = "examples.bulk_fanout.worker:main"
retries_with_backoff = "examples.retries_with_backoff.worker:main"
pydantic = "examples.pydantic.worker:main"
v2_simple = "examples.v2.simple.worker:main"
otel = "examples.opentelemetry_instrumentation.worker:main"
waits = "examples.waits.worker:main"
durable = "examples.durable.worker:main"
streaming = "examples.streaming.worker:main"
lifespans = "examples.lifespans.worker:main"