ezmsg 3.4.0__tar.gz → 3.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. ezmsg-3.6.0/.envrc +2 -0
  2. ezmsg-3.6.0/.flake8 +7 -0
  3. ezmsg-3.6.0/.git-blame-ignore-revs +4 -0
  4. ezmsg-3.6.0/.github/workflows/ci.yml +37 -0
  5. ezmsg-3.6.0/.github/workflows/publish.yml +28 -0
  6. ezmsg-3.6.0/.gitignore +143 -0
  7. ezmsg-3.6.0/.pre-commit-config.yaml +10 -0
  8. ezmsg-3.6.0/.python-version +1 -0
  9. ezmsg-3.6.0/.readthedocs.yaml +13 -0
  10. {ezmsg-3.4.0 → ezmsg-3.6.0}/PKG-INFO +25 -23
  11. ezmsg-3.6.0/docs/Makefile +20 -0
  12. ezmsg-3.6.0/docs/make.bat +35 -0
  13. ezmsg-3.6.0/docs/requirements.txt +2 -0
  14. ezmsg-3.6.0/docs/source/about.rst +4 -0
  15. ezmsg-3.6.0/docs/source/api.rst +84 -0
  16. ezmsg-3.6.0/docs/source/conf.py +59 -0
  17. ezmsg-3.6.0/docs/source/developer.rst +12 -0
  18. ezmsg-3.6.0/docs/source/extensions/sigproc.rst +148 -0
  19. ezmsg-3.6.0/docs/source/extensions.rst +7 -0
  20. ezmsg-3.6.0/docs/source/getting-started.rst +53 -0
  21. ezmsg-3.6.0/docs/source/index.rst +31 -0
  22. ezmsg-3.6.0/docs/source/logo.png +0 -0
  23. ezmsg-3.6.0/docs/source/other.rst +17 -0
  24. ezmsg-3.6.0/docs/source/utils.rst +58 -0
  25. ezmsg-3.6.0/examples/.gitignore +1 -0
  26. ezmsg-3.6.0/examples/ezmsg_attach.py +8 -0
  27. ezmsg-3.6.0/examples/ezmsg_configs.py +244 -0
  28. ezmsg-3.6.0/examples/ezmsg_count.py +74 -0
  29. ezmsg-3.6.0/examples/ezmsg_generator.py +157 -0
  30. ezmsg-3.6.0/examples/ezmsg_intro.py +187 -0
  31. ezmsg-3.6.0/examples/ezmsg_log_to_file.py +69 -0
  32. ezmsg-3.6.0/examples/ezmsg_normalterm.py +123 -0
  33. ezmsg-3.6.0/examples/ezmsg_stop.py +117 -0
  34. ezmsg-3.6.0/examples/ezmsg_toy.py +199 -0
  35. ezmsg-3.6.0/pyproject.toml +47 -0
  36. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/__init__.py +4 -5
  37. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/backend.py +0 -3
  38. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/backendprocess.py +25 -17
  39. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/collection.py +8 -6
  40. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/command.py +5 -5
  41. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/component.py +66 -46
  42. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/dag.py +1 -2
  43. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/graphserver.py +14 -8
  44. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/message.py +2 -1
  45. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/messagecache.py +1 -2
  46. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/messagemarshal.py +1 -2
  47. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/netprotocol.py +1 -3
  48. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/pubclient.py +2 -2
  49. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/server.py +2 -4
  50. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/settings.py +3 -2
  51. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/state.py +4 -3
  52. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/stream.py +7 -7
  53. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/subclient.py +0 -1
  54. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/unit.py +2 -2
  55. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/util.py +2 -0
  56. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/util/debuglog.py +2 -1
  57. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/util/gen_to_unit.py +15 -10
  58. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/util/generator.py +4 -38
  59. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/util/messagecodec.py +3 -5
  60. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/util/messagegate.py +6 -4
  61. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/util/messagelogger.py +3 -2
  62. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/util/messagequeue.py +4 -4
  63. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/util/messagereplay.py +8 -4
  64. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/util/messages/axisarray.py +225 -56
  65. ezmsg-3.6.0/src/ezmsg/util/messages/chunker.py +101 -0
  66. ezmsg-3.6.0/src/ezmsg/util/messages/key.py +88 -0
  67. ezmsg-3.6.0/src/ezmsg/util/messages/modify.py +93 -0
  68. ezmsg-3.6.0/src/ezmsg/util/messages/util.py +26 -0
  69. ezmsg-3.6.0/src/ezmsg/util/perf_test.py +220 -0
  70. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/util/rate.py +12 -9
  71. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/util/terminate.py +7 -7
  72. ezmsg-3.6.0/tests/__init__.py +0 -0
  73. ezmsg-3.6.0/tests/ez_test_utils.py +78 -0
  74. ezmsg-3.6.0/tests/messages/__init__.py +0 -0
  75. ezmsg-3.6.0/tests/messages/test_axisarray.py +268 -0
  76. ezmsg-3.6.0/tests/messages/test_chunker.py +33 -0
  77. ezmsg-3.6.0/tests/messages/test_key.py +144 -0
  78. ezmsg-3.6.0/tests/messages/test_modify.py +69 -0
  79. ezmsg-3.6.0/tests/test_addressable.py +31 -0
  80. ezmsg-3.6.0/tests/test_attach.py +135 -0
  81. ezmsg-3.6.0/tests/test_connections.py +44 -0
  82. ezmsg-3.6.0/tests/test_dag.py +113 -0
  83. ezmsg-3.6.0/tests/test_generator.py +251 -0
  84. ezmsg-3.6.0/tests/test_graph.py +249 -0
  85. ezmsg-3.6.0/tests/test_run.py +131 -0
  86. ezmsg-3.6.0/tests/test_shm.py +107 -0
  87. ezmsg-3.6.0/tests/test_state.py +76 -0
  88. ezmsg-3.6.0/tests/test_test.py +5 -0
  89. ezmsg-3.6.0/uv.lock +827 -0
  90. ezmsg-3.4.0/pyproject.toml +0 -79
  91. ezmsg-3.4.0/src/ezmsg/util/messages/modify.py +0 -38
  92. {ezmsg-3.4.0 → ezmsg-3.6.0}/LICENSE +0 -0
  93. {ezmsg-3.4.0 → ezmsg-3.6.0}/README.md +0 -0
  94. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/__main__.py +0 -0
  95. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/addressable.py +0 -0
  96. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/backpressure.py +0 -0
  97. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/graphcontext.py +0 -0
  98. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/core/shmserver.py +0 -0
  99. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/util/__init__.py +0 -0
  100. {ezmsg-3.4.0 → ezmsg-3.6.0}/src/ezmsg/util/messages/__init__.py +0 -0
ezmsg-3.6.0/.envrc ADDED
@@ -0,0 +1,2 @@
1
+ export VIRTUAL_ENV=.venv
2
+ layout python
ezmsg-3.6.0/.flake8 ADDED
@@ -0,0 +1,7 @@
1
+ [flake8]
2
+ exclude =
3
+ migrations,
4
+ __pycache__,
5
+ env,
6
+ max_line_length = 120
7
+ max_complexity = 10
@@ -0,0 +1,4 @@
1
+ # chore: format files with ruff. Add pre-commit-config.
2
+ 5b4c220154d33cac15a75d3d7d978a75e67f2b8a
3
+ # Ran `black` formatter on entire codebase and fixed non-standard line-endings with `dos2unix`.
4
+ 4e4f20be40a73f2162a565732bae76ea0c812739
@@ -0,0 +1,37 @@
1
+ name: Test package
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+ build:
12
+ strategy:
13
+ matrix:
14
+ python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
15
+ os:
16
+ - "ubuntu-latest"
17
+ - "windows-latest"
18
+ - "macos-latest"
19
+ runs-on: ${{matrix.os}}
20
+
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+
24
+ - name: Install uv
25
+ uses: astral-sh/setup-uv@v2
26
+ with:
27
+ enable-cache: true
28
+ cache-dependency-glob: "uv.lock"
29
+
30
+ - name: Set up Python ${{ matrix.python-version }}
31
+ run: uv python install ${{ matrix.python-version }}
32
+
33
+ - name: Install the project
34
+ run: uv sync --all-extras --dev
35
+
36
+ - name: Run tests
37
+ run: uv run pytest tests
@@ -0,0 +1,28 @@
1
+ name: Upload Python Package
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ deploy:
13
+ runs-on: ubuntu-latest
14
+ permissions:
15
+ # IMPORTANT: this permission is mandatory for trusted publishing
16
+ id-token: write
17
+
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+
21
+ - name: Install uv
22
+ uses: astral-sh/setup-uv@v3
23
+
24
+ - name: Build Package
25
+ run: uv build
26
+
27
+ - name: Publish Package
28
+ run: uv publish
ezmsg-3.6.0/.gitignore ADDED
@@ -0,0 +1,143 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+ docs/source/_build
74
+ docs/source/generated
75
+
76
+ # PyBuilder
77
+ .pybuilder/
78
+ target/
79
+
80
+ # Jupyter Notebook
81
+ .ipynb_checkpoints
82
+
83
+ # IPython
84
+ profile_default/
85
+ ipython_config.py
86
+
87
+ # pyenv
88
+ # For a library or package, you might want to ignore these files since the code is
89
+ # intended to run in multiple environments; otherwise, check them in:
90
+ # .python-version
91
+
92
+ # pipenv
93
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
94
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
95
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
96
+ # install all needed dependencies.
97
+ #Pipfile.lock
98
+
99
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
100
+ __pypackages__/
101
+
102
+ # Celery stuff
103
+ celerybeat-schedule
104
+ celerybeat.pid
105
+
106
+ # SageMath parsed files
107
+ *.sage.py
108
+
109
+ # Environments
110
+ .env
111
+ .venv
112
+ env/
113
+ venv/
114
+ ENV/
115
+ env.bak/
116
+ venv.bak/
117
+
118
+ # Spyder project settings
119
+ .spyderproject
120
+ .spyproject
121
+
122
+ # Rope project settings
123
+ .ropeproject
124
+
125
+ # mkdocs documentation
126
+ /site
127
+
128
+ # mypy
129
+ .mypy_cache/
130
+ .dmypy.json
131
+ dmypy.json
132
+
133
+ # Pyre type checker
134
+ .pyre/
135
+
136
+ # pytype static type analyzer
137
+ .pytype/
138
+
139
+ # Cython debug symbols
140
+ cython_debug/
141
+
142
+ # JetBrains
143
+ .idea/
@@ -0,0 +1,10 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ # Ruff version.
4
+ rev: v0.5.0
5
+ hooks:
6
+ # Run the linter.
7
+ - id: ruff
8
+ args: [--fix]
9
+ # Run the formatter.
10
+ - id: ruff-format
@@ -0,0 +1 @@
1
+ 3.11
@@ -0,0 +1,13 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: ubuntu-22.04
5
+ tools:
6
+ python: "3.12"
7
+
8
+ python:
9
+ install:
10
+ - requirements: docs/requirements.txt
11
+
12
+ sphinx:
13
+ configuration: docs/source/conf.py
@@ -1,29 +1,32 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: ezmsg
3
- Version: 3.4.0
3
+ Version: 3.6.0
4
4
  Summary: A simple DAG-based computation model
5
- License: MIT
6
- Author: Milsap, Griffin
7
- Author-email: griffin.milsap@gmail.com
8
- Requires-Python: >=3.8,<4.0
9
- Classifier: License :: OSI Approved :: MIT License
5
+ Author-email: Griffin Milsap <griffin.milsap@gmail.com>, Preston Peranich <pperanich@gmail.com>, Chadwick Boulay <chadwick.boulay@gmail.com>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2022 Johns Hopkins University Applied Physics Lab
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10
15
  Classifier: Operating System :: OS Independent
11
16
  Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.8
13
- Classifier: Programming Language :: Python :: 3.9
14
- Classifier: Programming Language :: Python :: 3.10
15
- Classifier: Programming Language :: Python :: 3.11
16
- Classifier: Programming Language :: Python :: 3.12
17
- Provides-Extra: all-ext
18
- Provides-Extra: sigproc
19
- Provides-Extra: vispy
20
- Provides-Extra: websocket
21
- Provides-Extra: zmq
22
- Requires-Dist: ezmsg-sigproc ; extra == "sigproc" or extra == "all-ext"
23
- Requires-Dist: ezmsg-vispy ; extra == "vispy" or extra == "all-ext"
24
- Requires-Dist: ezmsg-websocket ; extra == "websocket" or extra == "all-ext"
25
- Requires-Dist: ezmsg-zmq ; extra == "zmq" or extra == "all-ext"
26
- Requires-Dist: typing-extensions (>=4.9.0,<5.0.0)
17
+ Requires-Python: >=3.8
18
+ Requires-Dist: typing-extensions>=4.9.0
19
+ Provides-Extra: docs
20
+ Requires-Dist: ezmsg-sigproc>=1.2.3; extra == 'docs'
21
+ Requires-Dist: sphinx-rtd-theme==2.0.0; extra == 'docs'
22
+ Requires-Dist: sphinx<=7.2; extra == 'docs'
23
+ Provides-Extra: test
24
+ Requires-Dist: flake8>=5.0.4; extra == 'test'
25
+ Requires-Dist: numpy>=1.24.2; extra == 'test'
26
+ Requires-Dist: pytest-asyncio>=0.23.8; extra == 'test'
27
+ Requires-Dist: pytest-cov>=5.0.0; extra == 'test'
28
+ Requires-Dist: pytest>=7.0.0; extra == 'test'
29
+ Requires-Dist: xarray>=2023.1.0; (python_version < '3.13') and extra == 'test'
27
30
  Description-Content-Type: text/markdown
28
31
 
29
32
  # <img src="https://raw.githubusercontent.com/iscoe/ezmsg/main/docs/source/logo.png" width="50"/> ezmsg
@@ -111,4 +114,3 @@ These publications provide insights into the practical applications and impact o
111
114
  ## Financial Support
112
115
 
113
116
  `ezmsg` is supported by Johns Hopkins University (JHU), the JHU Applied Physics Laboratory (APL), and by the Wyss Center for Bio and Neuro Engineering.
114
-
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = source
9
+ BUILDDIR = build
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,35 @@
1
+ @ECHO OFF
2
+
3
+ pushd %~dp0
4
+
5
+ REM Command file for Sphinx documentation
6
+
7
+ if "%SPHINXBUILD%" == "" (
8
+ set SPHINXBUILD=sphinx-build
9
+ )
10
+ set SOURCEDIR=source
11
+ set BUILDDIR=build
12
+
13
+ if "%1" == "" goto help
14
+
15
+ %SPHINXBUILD% >NUL 2>NUL
16
+ if errorlevel 9009 (
17
+ echo.
18
+ echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
19
+ echo.installed, then set the SPHINXBUILD environment variable to point
20
+ echo.to the full path of the 'sphinx-build' executable. Alternatively you
21
+ echo.may add the Sphinx directory to PATH.
22
+ echo.
23
+ echo.If you don't have Sphinx installed, grab it from
24
+ echo.http://sphinx-doc.org/
25
+ exit /b 1
26
+ )
27
+
28
+ %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
29
+ goto end
30
+
31
+ :help
32
+ %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
33
+
34
+ :end
35
+ popd
@@ -0,0 +1,2 @@
1
+ sphinx-rtd-theme
2
+ ezmsg-sigproc @ git+https://github.com/ezmsg-org/ezmsg-sigproc@dev
@@ -0,0 +1,4 @@
1
+ How ``ezmsg`` works
2
+ ===================
3
+
4
+ When an ``ezmsg`` pipeline is started, ``ezmsg`` initializes two additional processes to manage execution. The first is the SharedMemoryServer, which allocates blocks of memory to nodes. The second is the GraphServer, which keeps track of the graph state during execution. One GraphServer should be initialized per ezmsg pipeline, and one SharedMemoryServer should be initialized per machine which the pipeline is running on. Check out the Other page for more information on managing the SharedMemoryServer and GraphServer during pipeline execution.
@@ -0,0 +1,84 @@
1
+ API
2
+ ===
3
+
4
+ An ``ezmsg`` pipeline is created from a few basic components.
5
+ ``ezmsg`` provides a framework for you to define your own graphs using its building blocks.
6
+ Inherit from its base components to define a pipeline that works for your project.
7
+
8
+ .. automodule:: ezmsg.core
9
+
10
+ Most ``ezmsg`` classes intended for use in building pipelines are available in ``ezmsg.core``.
11
+ It is convention to ``import ezmsg.core as ez`` and then use this shorthand in your code. e.g.,
12
+
13
+ .. code-block:: python
14
+
15
+ class MyUnit(ez.Unit):
16
+ ...
17
+
18
+ Components
19
+ ----------
20
+
21
+ .. autoclass:: Component
22
+
23
+ .. autoclass:: Collection
24
+ :show-inheritance:
25
+ :members:
26
+
27
+ .. autoclass:: NetworkDefinition
28
+
29
+ .. autoclass:: Unit
30
+ :show-inheritance:
31
+ :members:
32
+ :inherited-members:
33
+
34
+
35
+ Unit Function Decorators
36
+ ^^^^^^^^^^^^^^^^^^^^^^^^
37
+
38
+ These function decorators can be added to member functions.
39
+
40
+ .. automethod:: ezmsg.core.subscriber
41
+
42
+ .. automethod:: ezmsg.core.publisher
43
+
44
+ .. automethod:: ezmsg.core.main
45
+
46
+ .. automethod:: unit.thread
47
+
48
+ .. automethod:: ezmsg.core.task
49
+
50
+ .. automethod:: ezmsg.core.process
51
+
52
+ .. automethod:: ezmsg.core.timeit
53
+
54
+
55
+ Component Interaction
56
+ ---------------------
57
+
58
+ .. autoclass:: Settings
59
+
60
+ .. autoclass:: State
61
+
62
+
63
+ Stream
64
+ ------
65
+
66
+ Facilitates a flow of ``Messages`` into or out of a ``Component``.
67
+
68
+ .. autoclass:: InputStream
69
+
70
+ .. autoclass:: OutputStream
71
+
72
+
73
+ Custom Exceptions
74
+ -----------------
75
+
76
+ .. autoclass:: Complete
77
+
78
+ .. autoclass:: NormalTermination
79
+
80
+
81
+ Entry Point
82
+ -----------
83
+
84
+ .. automethod:: ezmsg.core.run
@@ -0,0 +1,59 @@
1
+ # Configuration file for the Sphinx documentation builder.
2
+
3
+ # -- Project information
4
+
5
+ project = "ezmsg"
6
+ copyright = "2022, JHU/APL"
7
+ author = "JHU/APL"
8
+
9
+ release = "3.3.4"
10
+ version = "3.3.4"
11
+
12
+ # -- General configuration
13
+
14
+ extensions = [
15
+ "sphinx.ext.duration",
16
+ "sphinx.ext.doctest",
17
+ "sphinx.ext.autodoc",
18
+ "sphinx.ext.autosummary",
19
+ "sphinx.ext.intersphinx",
20
+ "sphinx.ext.linkcode",
21
+ "sphinx.ext.napoleon",
22
+ ]
23
+
24
+ intersphinx_mapping = {
25
+ "python": ("https://docs.python.org/3/", None),
26
+ "sphinx": ("https://www.sphinx-doc.org/en/master/", None),
27
+ "numpy": ("https://docs.scipy.org/doc/numpy", None),
28
+ "scipy": ("https://docs.scipy.org/doc/scipy/reference", None),
29
+ }
30
+ intersphinx_disabled_domains = ["std"]
31
+
32
+ templates_path = ["_templates"]
33
+
34
+ # -- Options for HTML output
35
+
36
+ html_theme = "sphinx_rtd_theme"
37
+
38
+ # -- Options for EPUB output
39
+ epub_show_urls = "footnote"
40
+
41
+ add_module_names = False
42
+
43
+ branch = "dev"
44
+ code_url = f"https://github.com/iscoe/ezmsg/blob/{branch}/"
45
+ sigproc_code_url = f"https://github.com/ezmsg-org/ezmsg-sigproc/blob/{branch}/"
46
+
47
+
48
+ def linkcode_resolve(domain, info):
49
+ if domain != "py":
50
+ return None
51
+ if not info["module"]:
52
+ return None
53
+ filename = info["module"].replace(".", "/")
54
+ if "sigproc" in filename:
55
+ return f"{sigproc_code_url}src/{filename}.py"
56
+ elif "core" in filename:
57
+ return f"{code_url}src/ezmsg/core/__init__.py"
58
+ else:
59
+ return f"{code_url}src/{filename}.py"
@@ -0,0 +1,12 @@
1
+ Developer Info
2
+ ==============
3
+
4
+ ezmsg developers will want to clone this repo locally then create an env with dependencies using `poetry install`.
5
+
6
+ Documentation
7
+ -------------
8
+
9
+ Documentation is built using Sphinx.
10
+
11
+ `poetry install --with docs`
12
+ `poetry run docs/make html`
@@ -0,0 +1,148 @@
1
+ ezmsg-sigproc
2
+ =============
3
+
4
+ Timeseries signal processing implementations in ezmsg, leveraging numpy and scipy.
5
+ Most of the methods and classes in this extension are intended to be used in building signal processing pipelines.
6
+ They use :class:`ezmsg.util.messages.axisarray.AxisArray` as the primary data structure for passing signals between components.
7
+ The message's data are expected to be a numpy array.
8
+
9
+ Note for offline processing: some generators might yield valid :class:`AxisArray` messages with ``.data`` size of 0.
10
+ This may occur when the generator receives inadequate data to produce a valid output, such as when windowing or buffering.
11
+
12
+ ezmsg.sigproc.activation
13
+ -----------------------------
14
+
15
+ .. automodule:: ezmsg.sigproc.activation
16
+ :members:
17
+
18
+
19
+ ezmsg.sigproc.affinetransform
20
+ -----------------------------
21
+
22
+ .. automodule:: ezmsg.sigproc.affinetransform
23
+ :members:
24
+
25
+
26
+ ezmsg.sigproc.aggregate
27
+ -----------------------
28
+
29
+ .. automodule:: ezmsg.sigproc.aggregate
30
+ :members:
31
+ :undoc-members:
32
+
33
+
34
+ ezmsg.sigproc.bandpower
35
+ -----------------------
36
+
37
+ .. automodule:: ezmsg.sigproc.bandpower
38
+ :members:
39
+
40
+
41
+ ezmsg.sigproc.filter
42
+ --------------------
43
+
44
+ .. automodule:: ezmsg.sigproc.filter
45
+ :members:
46
+
47
+ ezmsg.sigproc.butterworthfilter
48
+ -------------------------------
49
+
50
+ .. automodule:: ezmsg.sigproc.butterworthfilter
51
+ :members:
52
+
53
+
54
+ ezmsg.sigproc.decimate
55
+ ----------------------
56
+
57
+ .. automodule:: ezmsg.sigproc.decimate
58
+ :members:
59
+
60
+
61
+ ezmsg.sigproc.downsample
62
+ ------------------------
63
+
64
+ .. automodule:: ezmsg.sigproc.downsample
65
+ :members:
66
+
67
+
68
+ ezmsg.sigproc.ewmfilter
69
+ -----------------------
70
+
71
+ .. automodule:: ezmsg.sigproc.ewmfilter
72
+ :members:
73
+
74
+
75
+ ezmsg.sigproc.math
76
+ -----------------------
77
+
78
+ .. automodule:: ezmsg.sigproc.math.clip
79
+ :members:
80
+
81
+ .. automodule:: ezmsg.sigproc.math.difference
82
+ :members:
83
+
84
+ .. automodule:: ezmsg.sigproc.math.invert
85
+ :members:
86
+
87
+ .. automodule:: ezmsg.sigproc.math.log
88
+ :members:
89
+
90
+ .. automodule:: ezmsg.sigproc.math.scale
91
+ :members:
92
+
93
+
94
+ ezmsg.sigproc.sampler
95
+ ---------------------
96
+
97
+ .. automodule:: ezmsg.sigproc.sampler
98
+ :members:
99
+
100
+
101
+ ezmsg.sigproc.scaler
102
+ --------------------
103
+
104
+ .. automodule:: ezmsg.sigproc.scaler
105
+ :members:
106
+
107
+
108
+ ezmsg.sigproc.signalinjector
109
+ ----------------------------
110
+
111
+ .. automodule:: ezmsg.sigproc.signalinjector
112
+ :members:
113
+
114
+
115
+ ezmsg.sigproc.slicer
116
+ ---------------------
117
+
118
+ .. automodule:: ezmsg.sigproc.slicer
119
+ :members:
120
+
121
+
122
+ ezmsg.sigproc.spectrum
123
+ ----------------------
124
+
125
+ .. automodule:: ezmsg.sigproc.spectrum
126
+ :members:
127
+ :undoc-members:
128
+
129
+
130
+ ezmsg.sigproc.spectrogram
131
+ -------------------------
132
+
133
+ .. automodule:: ezmsg.sigproc.spectrogram
134
+ :members:
135
+
136
+
137
+ ezmsg.sigproc.synth
138
+ -------------------
139
+
140
+ .. automodule:: ezmsg.sigproc.synth
141
+ :members:
142
+
143
+
144
+ ezmsg.sigproc.window
145
+ --------------------
146
+
147
+ .. automodule:: ezmsg.sigproc.window
148
+ :members:
@@ -0,0 +1,7 @@
1
+ Extensions
2
+ ==========
3
+
4
+ .. toctree::
5
+ :maxdepth: 1
6
+
7
+ extensions/sigproc