commit
2c12d39617
|
@ -23,8 +23,7 @@ jobs:
|
||||||
- name: Run MyPy check
|
- name: Run MyPy check
|
||||||
run: mypy tractor/ --ignore-missing-imports
|
run: mypy tractor/ --ignore-missing-imports
|
||||||
|
|
||||||
testing:
|
testing-linux:
|
||||||
|
|
||||||
name: '${{ matrix.os }} Python ${{ matrix.python }} - ${{ matrix.spawn_backend }}'
|
name: '${{ matrix.os }} Python ${{ matrix.python }} - ${{ matrix.spawn_backend }}'
|
||||||
timeout-minutes: 9
|
timeout-minutes: 9
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
@ -32,8 +31,8 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest]
|
os: [ubuntu-latest]
|
||||||
python: ['3.9']
|
python: ['3.9', '3.10']
|
||||||
spawn_backend: ['trio', 'mp']
|
spawn_backend: ['trio', 'mp']
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
@ -52,8 +51,8 @@ jobs:
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: pytest tests/ --spawn-backend=${{ matrix.spawn_backend }} -rs
|
run: pytest tests/ --spawn-backend=${{ matrix.spawn_backend }} -rs
|
||||||
|
|
||||||
testing-msgspec:
|
testing-linux-msgspec:
|
||||||
# runs py3.9 jobs on all OS's but with optional `msgspec` dep installed
|
# runs jobs on all OS's but with optional `msgspec` dep installed
|
||||||
name: '${{ matrix.os }} Python ${{ matrix.python }} - ${{ matrix.spawn_backend }} - msgspec'
|
name: '${{ matrix.os }} Python ${{ matrix.python }} - ${{ matrix.spawn_backend }} - msgspec'
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
@ -61,8 +60,8 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest]
|
os: [ubuntu-latest]
|
||||||
python: ['3.9']
|
python: ['3.9', '3.10']
|
||||||
spawn_backend: ['trio', 'mp']
|
spawn_backend: ['trio', 'mp']
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
@ -80,3 +79,40 @@ jobs:
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: pytest tests/ --spawn-backend=${{ matrix.spawn_backend }} -rs
|
run: pytest tests/ --spawn-backend=${{ matrix.spawn_backend }} -rs
|
||||||
|
|
||||||
|
# We skip 3.10 on windows for now due to
|
||||||
|
# https://github.com/pytest-dev/pytest/issues/8733
|
||||||
|
# some kinda weird `pyreadline` issue..
|
||||||
|
|
||||||
|
# TODO: use job filtering to accomplish instead of repeated
|
||||||
|
# boilerplate as is above XD:
|
||||||
|
# - https://docs.github.com/en/actions/learn-github-actions/managing-complex-workflows
|
||||||
|
# - https://docs.github.com/en/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
|
||||||
|
# - https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#jobsjob_idif
|
||||||
|
testing-windows:
|
||||||
|
name: '${{ matrix.os }} Python ${{ matrix.python }} - ${{ matrix.spawn_backend }}'
|
||||||
|
timeout-minutes: 9
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [windows-latest]
|
||||||
|
python: ['3.9']
|
||||||
|
spawn_backend: ['trio', 'mp']
|
||||||
|
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Setup python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: '${{ matrix.python }}'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pip install -U . -r requirements-test.txt -r requirements-docs.txt --upgrade-strategy eager
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: pytest tests/ --spawn-backend=${{ matrix.spawn_backend }} -rs
|
||||||
|
|
51
NEWS.rst
51
NEWS.rst
|
@ -4,6 +4,57 @@ Changelog
|
||||||
|
|
||||||
.. towncrier release notes start
|
.. towncrier release notes start
|
||||||
|
|
||||||
|
tractor 0.1.0a3 (2021-11-02)
|
||||||
|
============================
|
||||||
|
|
||||||
|
Features
|
||||||
|
--------
|
||||||
|
|
||||||
|
- Switch to using the ``trio`` process spawner by default on windows. (#166)
|
||||||
|
|
||||||
|
This gets windows users debugger support (manually tested) and in
|
||||||
|
general a more resilient (nested) actor tree implementation.
|
||||||
|
|
||||||
|
- Add optional `msgspec <https://jcristharif.com/msgspec/>`_ support
|
||||||
|
as an alernative, faster MessagePack codec. (#214)
|
||||||
|
|
||||||
|
Provides us with a path toward supporting typed IPC message contracts. Further,
|
||||||
|
``msgspec`` structs may be a valid tool to start for formalizing our
|
||||||
|
"SC dialog un-protocol" messages as described in `#36
|
||||||
|
<https://github.com/goodboy/tractor/issues/36>`_`.
|
||||||
|
|
||||||
|
- Introduce a new ``tractor.trionics`` `sub-package`_ that exposes
|
||||||
|
a selection of our relevant high(er) level trio primitives and
|
||||||
|
goodies. (#241)
|
||||||
|
|
||||||
|
At outset we offer a ``gather_contexts()`` context manager for
|
||||||
|
concurrently entering a sequence of async context managers (much like
|
||||||
|
a version of ``asyncio.gather()`` but for context managers) and use it
|
||||||
|
in a new ``tractor.open_actor_cluster()`` manager-helper that can be
|
||||||
|
entered to concurrently spawn a flat actor pool. We also now publicly
|
||||||
|
expose our "broadcast channel" APIs (``open_broadcast_receiver()``)
|
||||||
|
from here.
|
||||||
|
|
||||||
|
.. _sub-package: ../tractor/trionics
|
||||||
|
|
||||||
|
- Change the core message loop to handle task and actor-runtime cancel
|
||||||
|
requests immediately instead of scheduling them as is done for rpc-task
|
||||||
|
requests. (#245)
|
||||||
|
|
||||||
|
In order to obtain more reliable teardown mechanics for (complex) actor
|
||||||
|
trees it's important that we specially treat cancel requests as having
|
||||||
|
higher priority. Previously, it was possible that task cancel requests
|
||||||
|
could actually also themselves be cancelled if a "actor-runtime" cancel
|
||||||
|
request was received (can happen during messy multi actor crashes that
|
||||||
|
propagate). Instead cancels now block the msg loop until serviced and
|
||||||
|
a response is relayed back to the requester. This also allows for
|
||||||
|
improved debugger support since we have determinism guarantees about
|
||||||
|
which processes must wait before hard killing their children.
|
||||||
|
|
||||||
|
- Drop Python 3.8 support in favor of rolling with two latest releases
|
||||||
|
for the time being. (#248)
|
||||||
|
|
||||||
|
|
||||||
tractor 0.1.0a2 (2021-09-07)
|
tractor 0.1.0a2 (2021-09-07)
|
||||||
============================
|
============================
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
Switch to using the ``trio`` process spawner by default on windows.
|
|
||||||
|
|
||||||
This gets windows users debugger support (manually tested) and in
|
|
||||||
general a more resilient (nested) actor tree implementation.
|
|
|
@ -1,9 +0,0 @@
|
||||||
Add optional `msgspec <https://jcristharif.com/msgspec/>`_ support over
|
|
||||||
TCP streams as an alernative, faster MessagePack codec.
|
|
||||||
|
|
||||||
This get's us moving toward typed messaging/IPC protocols. Further,
|
|
||||||
``msgspec`` structs may be a valid tool to start for formalizing our "SC
|
|
||||||
dialog un-protocol" messages as described in `#36
|
|
||||||
<https://github.com/goodboy/tractor/issues/36>`_`.
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
Introduce a new `sub-package`_ that exposes all our high(er) level trio primitives and goodies, most importantly:
|
|
||||||
|
|
||||||
- A new ``open_actor_cluster`` procedure is available for concurrently spawning a number of actors.
|
|
||||||
- A new ``gather_contexts`` procedure is available for concurrently entering a sequence of async context managers.
|
|
||||||
|
|
||||||
.. _sub-package: ../tractor/trionics
|
|
|
@ -1,13 +0,0 @@
|
||||||
Change the core message loop to handle task and actor-runtime cancel
|
|
||||||
requests immediately instead of scheduling them as is done for rpc-task
|
|
||||||
requests.
|
|
||||||
|
|
||||||
In order to obtain more reliable teardown mechanics for (complex) actor
|
|
||||||
trees it's important that we specially treat cancel requests as having
|
|
||||||
higher priority. Previously, it was possible that task cancel requests
|
|
||||||
could actually also themselves be cancelled if a "actor-runtime" cancel
|
|
||||||
request was received (can happen during messy multi actor crashes that
|
|
||||||
propagate). Instead cancels now block the msg loop until serviced and
|
|
||||||
a response is relayed back to the requester. This also allows for
|
|
||||||
improved debugger support since we have determinism guarantees about
|
|
||||||
which processes must wait before hard killing their children.
|
|
|
@ -1 +0,0 @@
|
||||||
Drop Python 3.8 support in favor of rolling with two latest releases for the time being.
|
|
2
setup.py
2
setup.py
|
@ -24,7 +24,7 @@ with open('docs/README.rst', encoding='utf-8') as f:
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="tractor",
|
name="tractor",
|
||||||
version='0.1.0a3.dev0', # alpha zone
|
version='0.1.0a3', # alpha zone
|
||||||
description='structured concurrrent "actors"',
|
description='structured concurrrent "actors"',
|
||||||
long_description=readme,
|
long_description=readme,
|
||||||
license='GPLv3',
|
license='GPLv3',
|
||||||
|
|
Loading…
Reference in New Issue