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