11![ Temporal Python SDK] ( https://assets.temporal.io/w/py-banner.svg )
22
3- [ ![ Python 3.7 +] ( https://img.shields.io/pypi/pyversions/temporalio.svg?style=for-the-badge )] ( https://pypi.org/project/temporalio )
3+ [ ![ Python 3.8 +] ( https://img.shields.io/pypi/pyversions/temporalio.svg?style=for-the-badge )] ( https://pypi.org/project/temporalio )
44[ ![ PyPI] ( https://img.shields.io/pypi/v/temporalio.svg?style=for-the-badge )] ( https://pypi.org/project/temporalio )
55[ ![ MIT] ( https://img.shields.io/pypi/l/temporalio.svg?style=for-the-badge )] ( LICENSE )
66
@@ -668,6 +668,9 @@ Some things to note about the above code:
668668* A timer is represented by normal ` asyncio.sleep() `
669669* Timers are also implicitly started on any ` asyncio ` calls with timeouts (e.g. ` asyncio.wait_for ` )
670670* Timers are Temporal server timers, not local ones, so sub-second resolution rarely has value
671+ * Calls that use a specific point in time, e.g. ` call_at ` or ` timeout_at ` , should be based on the current loop time
672+ (i.e. ` loop.time() ` ) and not an actual point in time. This is because fixed times are translated to relative ones by
673+ subtracting the current loop time which may not be the actual current time.
671674
672675#### Conditions
673676
@@ -683,7 +686,6 @@ of the common `asyncio` calls work as normal. Some asyncio features are disabled
683686* Thread related calls such as ` to_thread() ` , ` run_coroutine_threadsafe() ` , ` loop.run_in_executor() ` , etc
684687* Calls that alter the event loop such as ` loop.close() ` , ` loop.stop() ` , ` loop.run_forever() ` ,
685688 ` loop.set_task_factory() ` , etc
686- * Calls that use a specific time such as ` loop.call_at() `
687689* Calls that use anything external such as networking, subprocesses, disk IO, etc
688690
689691Cancellation is done the same way as ` asyncio ` . Specifically, a task can be requested to be cancelled but does not
@@ -1295,7 +1297,7 @@ users are encouraged to not use gevent in asyncio applications (including Tempor
12951297
12961298# Development
12971299
1298- The Python SDK is built to work with Python 3.7 and newer. It is built using
1300+ The Python SDK is built to work with Python 3.8 and newer. It is built using
12991301[ SDK Core] ( https://github.com/temporalio/sdk-core/ ) which is written in Rust.
13001302
13011303### Building
@@ -1304,7 +1306,7 @@ The Python SDK is built to work with Python 3.7 and newer. It is built using
13041306
13051307To build the SDK from source for use as a dependency, the following prerequisites are required:
13061308
1307- * [ Python] ( https://www.python.org/ ) >= 3.7
1309+ * [ Python] ( https://www.python.org/ ) >= 3.8
13081310* [ Rust] ( https://www.rust-lang.org/ )
13091311* [ poetry] ( https://github.com/python-poetry/poetry ) (e.g. ` python -m pip install poetry ` )
13101312* [ poe] ( https://github.com/nat-n/poethepoet ) (e.g. ` python -m pip install poethepoet ` )
0 commit comments