modusa 0.2.22__py3-none-any.whl → 0.2.23__py3-none-any.whl

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 (60) hide show
  1. modusa/decorators.py +4 -4
  2. modusa/devtools/docs/source/generators/audio_waveforms.rst +8 -0
  3. modusa/devtools/docs/source/generators/base.rst +8 -0
  4. modusa/devtools/docs/source/generators/index.rst +8 -0
  5. modusa/devtools/docs/source/io/audio_loader.rst +8 -0
  6. modusa/devtools/docs/source/io/base.rst +8 -0
  7. modusa/devtools/docs/source/io/index.rst +8 -0
  8. modusa/devtools/docs/source/plugins/base.rst +8 -0
  9. modusa/devtools/docs/source/plugins/index.rst +7 -0
  10. modusa/devtools/docs/source/signals/audio_signal.rst +8 -0
  11. modusa/devtools/docs/source/signals/base.rst +8 -0
  12. modusa/devtools/docs/source/signals/frequency_domain_signal.rst +8 -0
  13. modusa/devtools/docs/source/signals/index.rst +11 -0
  14. modusa/devtools/docs/source/signals/spectrogram.rst +8 -0
  15. modusa/devtools/docs/source/signals/time_domain_signal.rst +8 -0
  16. modusa/devtools/docs/source/tools/audio_converter.rst +8 -0
  17. modusa/devtools/docs/source/tools/audio_player.rst +8 -0
  18. modusa/devtools/docs/source/tools/base.rst +8 -0
  19. modusa/devtools/docs/source/tools/fourier_tranform.rst +8 -0
  20. modusa/devtools/docs/source/tools/index.rst +13 -0
  21. modusa/devtools/docs/source/tools/math_ops.rst +8 -0
  22. modusa/devtools/docs/source/tools/plotter.rst +8 -0
  23. modusa/devtools/docs/source/tools/youtube_downloader.rst +8 -0
  24. modusa/devtools/generate_doc_source.py +96 -0
  25. modusa/devtools/generate_template.py +8 -8
  26. modusa/devtools/main.py +3 -2
  27. modusa/devtools/templates/test.py +2 -3
  28. modusa/devtools/templates/{engine.py → tool.py} +3 -8
  29. modusa/generators/__init__.py +0 -2
  30. modusa/generators/audio_waveforms.py +22 -13
  31. modusa/generators/base.py +1 -1
  32. modusa/io/__init__.py +1 -5
  33. modusa/io/audio_loader.py +3 -33
  34. modusa/main.py +0 -30
  35. modusa/signals/__init__.py +1 -5
  36. modusa/signals/audio_signal.py +181 -124
  37. modusa/signals/base.py +1 -8
  38. modusa/signals/frequency_domain_signal.py +140 -93
  39. modusa/signals/spectrogram.py +197 -98
  40. modusa/signals/time_domain_signal.py +177 -74
  41. modusa/tools/__init__.py +2 -0
  42. modusa/{io → tools}/audio_converter.py +12 -4
  43. modusa/tools/audio_player.py +114 -0
  44. modusa/tools/base.py +43 -0
  45. modusa/tools/fourier_tranform.py +24 -0
  46. modusa/tools/math_ops.py +232 -0
  47. modusa/{io → tools}/plotter.py +155 -42
  48. modusa/{io → tools}/youtube_downloader.py +2 -2
  49. modusa/utils/excp.py +9 -42
  50. {modusa-0.2.22.dist-info → modusa-0.2.23.dist-info}/METADATA +1 -1
  51. modusa-0.2.23.dist-info/RECORD +70 -0
  52. modusa/engines/.DS_Store +0 -0
  53. modusa/engines/__init__.py +0 -3
  54. modusa/engines/base.py +0 -14
  55. modusa/io/audio_player.py +0 -72
  56. modusa/signals/signal_ops.py +0 -158
  57. modusa-0.2.22.dist-info/RECORD +0 -47
  58. {modusa-0.2.22.dist-info → modusa-0.2.23.dist-info}/WHEEL +0 -0
  59. {modusa-0.2.22.dist-info → modusa-0.2.23.dist-info}/entry_points.txt +0 -0
  60. {modusa-0.2.22.dist-info → modusa-0.2.23.dist-info}/licenses/LICENSE.md +0 -0
@@ -0,0 +1,70 @@
1
+ modusa-0.2.23.dist-info/METADATA,sha256=sacHnoRHGvAPRw9cIsB27bhiZr57KLnGkfXvTkDZ_FA,1505
2
+ modusa-0.2.23.dist-info/WHEEL,sha256=9P2ygRxDrTJz3gsagc0Z96ukrxjr-LFBGOgv3AuKlCA,90
3
+ modusa-0.2.23.dist-info/entry_points.txt,sha256=fmKpleVXj6CdaBVL14WoEy6xx7JQCs85jvzwTi3lePM,73
4
+ modusa-0.2.23.dist-info/licenses/LICENSE.md,sha256=JTaXAjx5awk76VArKCx5dUW8vmLEWsL_ZlR7-umaHbA,1078
5
+ modusa/.DS_Store,sha256=Q0eG2RQNYtV4qa5BYj_GznvlEBpNdebi6ZTIR-a7AhU,6148
6
+ modusa/__init__.py,sha256=bfQKVSpAXlKmKvMRIU6WSRQW2qoJsaZsdNJ8E69ghn0,37
7
+ modusa/config.py,sha256=bTqK4t00FZqERVITrxW_q284aDDJAa9aMSfFknfR-oU,280
8
+ modusa/decorators.py,sha256=8zeNX_wE37O6Vp0ysR4-WCZaEL8mq8dyCF_I5DHOzks,5905
9
+ modusa/devtools/docs/source/generators/audio_waveforms.rst,sha256=GPVEKRVG0Sx5G_i2PPpoEDE2Q-XDXp8538TdEkxIEsI,174
10
+ modusa/devtools/docs/source/generators/base.rst,sha256=ihi8zjzdqM3xqBj9S8Pd7qVRZboqv-SbF3FUzPvo0gQ,142
11
+ modusa/devtools/docs/source/generators/index.rst,sha256=UDTcmd-A90pqkNI4iIqOMm6-_ytx3a4HM8F2XKa4hxE,80
12
+ modusa/devtools/docs/source/io/audio_loader.rst,sha256=hiaO0uFz9LxEw181q4ClOKzxYaPUjLTfT9YLDT4gDXQ,130
13
+ modusa/devtools/docs/source/io/base.rst,sha256=kpGDys8NG2H6zpniHMOU0jWtpTl-EVKBsAXVnpwOq-Q,113
14
+ modusa/devtools/docs/source/io/index.rst,sha256=pladgl9BRJleyJUIjJA4ty33VsXdvlHG-fEdasJaiaI,61
15
+ modusa/devtools/docs/source/plugins/base.rst,sha256=K68G3TPe7HG3UE60Bk4nogYAw9IqEY5oAFvslOPsszM,130
16
+ modusa/devtools/docs/source/plugins/index.rst,sha256=rLzwBQaNMT5-B2Z2SuZCNT65QTgc0qLlYAuC3rUon48,55
17
+ modusa/devtools/docs/source/signals/audio_signal.rst,sha256=Y1Lm5D_O2OGkQ4AiBC8cMzGKZF3Qw6xl9Vj5kstNYhw,135
18
+ modusa/devtools/docs/source/signals/base.rst,sha256=J670LBdOlE_MWWaOKFmc0EQRaUC9XEjbeI7Mw_m9yok,130
19
+ modusa/devtools/docs/source/signals/frequency_domain_signal.rst,sha256=1c5hV8dvFJFqqC9TcG_Cn_EXp06ILzCrAiRXJW6rFs4,176
20
+ modusa/devtools/docs/source/signals/index.rst,sha256=-vdOMPAzRXno6qGTqTBcn9q2eItpI94rpNUFVzUouF8,135
21
+ modusa/devtools/docs/source/signals/spectrogram.rst,sha256=up8GbZq175Hi7b3ylceDoUsSexq-7WUwd-ZNW5b1ZnU,134
22
+ modusa/devtools/docs/source/signals/time_domain_signal.rst,sha256=EqDes752jCdO_dHmfgeVKwycEm--0HImc7uWl55wc3Y,156
23
+ modusa/devtools/docs/source/tools/audio_converter.rst,sha256=HX89WnMJ8LkszT-iofNUkyTApsx1p8eSUkI4Y4LWD2M,145
24
+ modusa/devtools/docs/source/tools/audio_player.rst,sha256=RQ6o5nI1916q-hK5XrMbmsoY86ZAeDnugn0227ZnA2c,133
25
+ modusa/devtools/docs/source/tools/base.rst,sha256=uHkVsg0vszarLQ1eG1NCPNbEvhibHcWJSaR7R-F2IeQ,122
26
+ modusa/devtools/docs/source/tools/fourier_tranform.rst,sha256=0NoX4pve4YPucjYa0mKXuyX0lLOzVrk5NF3c9-zYojI,152
27
+ modusa/devtools/docs/source/tools/index.rst,sha256=_VDKHoVeiEfXq_pzPxUm0QOU1B7tnNF0YINjyzZG-_A,151
28
+ modusa/devtools/docs/source/tools/math_ops.rst,sha256=wIPxzO9guRFrPp_hSYOVkVgHYBmpXVqQrwSPwIKrUbM,117
29
+ modusa/devtools/docs/source/tools/plotter.rst,sha256=sm9rA8qKyRYweAcoPI9jWMRMXwzF--bC3wEupPZhcDI,116
30
+ modusa/devtools/docs/source/tools/youtube_downloader.rst,sha256=5DibjwfLM0bo0_-emO2JRkmD2UR97XtcAgpezPmv41U,157
31
+ modusa/devtools/generate_doc_source.py,sha256=RNzZPWyuYfBU7bxzEsy0AQoRopff2g4MwTRcGlMidqM,3410
32
+ modusa/devtools/generate_template.py,sha256=xkVDIPWmcccRkYpOzQ97eQTHju6JYpjXyTTaDxhjgng,5210
33
+ modusa/devtools/list_authors.py,sha256=FWBQKOLznVthvMYMASrx2Gw5lqKHEOccQpBisDZ53Dw,24
34
+ modusa/devtools/list_plugins.py,sha256=g-R5hoaCzHfClY_Sfa788IQ9CAKzQGTfyqmthXDZQqw,1729
35
+ modusa/devtools/main.py,sha256=fHcpxZZHiXn_G8_T84TrKskW7SoZuIJh1dCMOq_OhNI,1996
36
+ modusa/devtools/templates/generator.py,sha256=tf2k2L9RF5S9iJmqPD5AFETJKvqL5XknqK3sR6n2ceQ,444
37
+ modusa/devtools/templates/io.py,sha256=jcO4vAH8iiw6uvwy2aEbsBeNnQOj5VaU_VrQvhJflRA,383
38
+ modusa/devtools/templates/plugin.py,sha256=HNoN0S63ahk83EPup_15pbfOY5_kFfnLF63U3vWOMp8,863
39
+ modusa/devtools/templates/signal.py,sha256=Jqdq38W6ye2cf499oGXWlpCVH4Nmoo1jNfPYgdVLseA,775
40
+ modusa/devtools/templates/test.py,sha256=CjZ_oqwJFhltNYzqfK1pcz1ShgeJXZLOnYpmOawfASs,244
41
+ modusa/devtools/templates/tool.py,sha256=2iQfHbFKtTELPvNoX42rHr9_5lXRrXpwxb9z5OL96Xc,435
42
+ modusa/generators/__init__.py,sha256=cA4Sqql6dnmGXmQGCffaZfBpQYduccYSMN4oe0bxwY4,75
43
+ modusa/generators/audio_waveforms.py,sha256=n9gVKFKxupZ72RLAtL4HuEEl-21Ot8MYSwnI0bDhjwg,6106
44
+ modusa/generators/base.py,sha256=cxIhZORQ2VVVOZlvpZZXGB6fsD4AHWHgMmk1GupBFR0,939
45
+ modusa/io/__init__.py,sha256=hueCcEC83Q7RUAct-CK9HILerXi0Re7YanxoFKLqqH4,89
46
+ modusa/io/audio_loader.py,sha256=oe3jRSY_MatX4xBTpFXDBW8ReW3QQ_F4sjhbTJzoIw8,4272
47
+ modusa/io/base.py,sha256=GOMvpicWWLWXoxm4nLwqq_0hWmXWzYAPLVx-CbthCsQ,1291
48
+ modusa/main.py,sha256=v9oOhnPcbw8ULfkKRoantEfHw7MqOETJwXC-odx3dnA,25
49
+ modusa/plugins/__init__.py,sha256=OB-b_GnUnTkECn1fwxl844UBmiui3mSWIvhBqMZY7Tc,22
50
+ modusa/plugins/base.py,sha256=Bh_1Bja7fOymFsCgwhXDbV6ys3D8muNrPwrfDrG_G_A,2382
51
+ modusa/signals/__init__.py,sha256=wbTeDflDfQj8HT8n78GHUKkJERphQH0XtdMCBOd1S0U,61
52
+ modusa/signals/audio_signal.py,sha256=aFkQYMFZXbKiWTuAomDMJM_dBCEIJpiXEBxDUTRAJ-4,16851
53
+ modusa/signals/base.py,sha256=KTZZWt_1z7nErXkg6xXWIqrBFZ1Yo8cP5J64jvpTf6w,523
54
+ modusa/signals/frequency_domain_signal.py,sha256=r4lkKLD2v8v7a3SIwctWSfBzcJ2PEW6Yn-FjP4qzNXc,12830
55
+ modusa/signals/spectrogram.py,sha256=Nhb5SG4ruybcExUwhR_AYrJ97QMmya7PxUno1caBBQE,19693
56
+ modusa/signals/time_domain_signal.py,sha256=muujNGh5YNYsQ9PzPIDVlvFiwINmGhHn3Nh6jor2C5g,13411
57
+ modusa/tools/__init__.py,sha256=FWBQKOLznVthvMYMASrx2Gw5lqKHEOccQpBisDZ53Dw,24
58
+ modusa/tools/audio_converter.py,sha256=HA-XYu0XaNoWcpOjd3rTBc252Gp6na3c5zWAN5zWVPk,2183
59
+ modusa/tools/audio_player.py,sha256=1DLdeIgIRm7UL0g3MkLpdtveYFq2c2PRFQMVLI7KjYg,3131
60
+ modusa/tools/base.py,sha256=C0ESJ0mIfjjRlAkRbSetNtMoOfS6IrHBjexRp3l_Mh4,1293
61
+ modusa/tools/fourier_tranform.py,sha256=6A1RjKwa7KlAXoDJc7L7ozcjIaqm-DDSaV52ibu9jsk,442
62
+ modusa/tools/math_ops.py,sha256=tovVNIpQDPTpk_fQg9wW1Hs1Uqp9u9i3B_pnhVx8zVw,6246
63
+ modusa/tools/plotter.py,sha256=AI14F4IC0rXyzuwTI6oEZEPb6hqWY3FWKUxrNIGAtW8,14159
64
+ modusa/tools/youtube_downloader.py,sha256=0G2u2jNZhQfilyhYnytKkq_k4jMIzK5fw6j_gd8fk8I,3451
65
+ modusa/utils/.DS_Store,sha256=nLXMwF7QJNuglLI_Gk74F7vl5Dyus2Wd74Mgowijmdo,6148
66
+ modusa/utils/__init__.py,sha256=1oLL20yLB1GL9IbFiZD8OReDqiCpFr-yetIR6x1cNkI,23
67
+ modusa/utils/config.py,sha256=cuGbqbovx5WDQq5rw3hIKcv3CnE5NttjacSOWnP1yu4,576
68
+ modusa/utils/excp.py,sha256=yX0suXZZDfYgVi2HBpp4FShQ_bbtW99no2uas6Jx9c4,796
69
+ modusa/utils/logger.py,sha256=K0rsnObeNKCxlNeSnVnJeRhgfmob6riB2uyU7h3dDmA,571
70
+ modusa-0.2.23.dist-info/RECORD,,
modusa/engines/.DS_Store DELETED
Binary file
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env python3
2
-
3
- from .base import ModusaEngine
modusa/engines/base.py DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env python3
2
-
3
- from abc import ABC, abstractmethod
4
- from typing import Any
5
-
6
- class ModusaEngine(ABC):
7
- """
8
- Base class for all core logic components in the Modusa system.
9
- Every subclass must implement the `run` method.
10
- """
11
-
12
- @abstractmethod
13
- def run(self, *args, **kwargs) -> Any:
14
- pass
modusa/io/audio_player.py DELETED
@@ -1,72 +0,0 @@
1
- #!/usr/bin/env python3
2
-
3
-
4
- from modusa import excp
5
- from modusa.decorators import validate_args_type
6
- from modusa.io import ModusaIO
7
- from IPython.display import display, HTML, Audio
8
- import numpy as np
9
-
10
- class AudioPlayer(ModusaIO):
11
- """
12
-
13
- """
14
-
15
- #--------Meta Information----------
16
- _name = "Audio Player"
17
- _description = ""
18
- _author_name = "Ankit Anand"
19
- _author_email = "ankit0.anand0@gmail.com"
20
- _created_at = "2025-07-08"
21
- #----------------------------------
22
-
23
- @staticmethod
24
- def play(
25
- y: np.ndarray,
26
- sr: int,
27
- regions: list[tuple[float, float]] | None = None,
28
- title: str | None = None
29
- ) -> None:
30
- """
31
- Plays audio clips for given regions in Jupyter Notebooks.
32
-
33
- Parameters
34
- ----------
35
- y : np.ndarray
36
- Audio time series.
37
- sr : int
38
- Sampling rate.
39
- regions : list of (float, float), optional
40
- Regions to extract and play (in seconds).
41
- title : str, optional
42
- Title to display above audio players.
43
-
44
- Returns
45
- -------
46
- None
47
- """
48
- if not AudioPlayer._in_notebook():
49
- return
50
-
51
- if title:
52
- display(HTML(f"<h4>{title}</h4>"))
53
-
54
- if regions:
55
- for i, (start_sec, end_sec) in enumerate(regions):
56
- start_sample = int(start_sec * sr)
57
- end_sample = int(end_sec * sr)
58
- clip = y[start_sample:end_sample]
59
-
60
- display(HTML(f"<b>Clip {i+1}</b>: {start_sec:.2f}s → {end_sec:.2f}s"))
61
- display(Audio(data=clip, rate=sr))
62
- else:
63
- display(Audio(data=y, rate=sr))
64
-
65
- @staticmethod
66
- def _in_notebook() -> bool:
67
- try:
68
- from IPython import get_ipython
69
- shell = get_ipython()
70
- return shell and shell.__class__.__name__ == "ZMQInteractiveShell"
71
- except ImportError:
72
- return False
@@ -1,158 +0,0 @@
1
- #!/usr/bin/env python3
2
-
3
- from modusa import excp
4
- from typing import Any
5
- import numpy as np
6
-
7
- class SignalOps:
8
- """
9
- Performs arithmetic and NumPy-style ops on ModusaSignal instances.
10
-
11
- Note
12
- ----
13
- - Shape-changing operations like reshape, transpose, etc. are not yet supported. Use only element-wise or aggregation ops for now.
14
- - Index alignment must be handled carefully in future extensions.
15
- """
16
-
17
- def _axes_match(a1: tuple[np.ndarray, ...], a2: tuple[np.ndarray, ...]) -> bool:
18
- """
19
- To check if two axes are same.
20
- """
21
- if len(a1) != len(a2):
22
- return False
23
- return all(np.allclose(x, y, atol=1e-8) for x, y in zip(a1, a2))
24
-
25
-
26
- #----------------------------------
27
- # To handle basic math operations like
28
- # +, -, *, **, / ...
29
- #----------------------------------
30
-
31
- @staticmethod
32
- def add(data: np.ndarray, other: np.ndarray) -> np.ndarray:
33
- return np.add(data, other)
34
-
35
- @staticmethod
36
- def subtract(signal: "ModusaSignal", other: Any) -> "ModusaSignal":
37
- return SignalOps._apply_binary_op(signal, other, np.subtract, "subtract")
38
-
39
- @staticmethod
40
- def multiply(signal: "ModusaSignal", other: Any):
41
- return SignalOps._apply_binary_op(signal, other, np.multiply, "multiply")
42
-
43
- @staticmethod
44
- def divide(signal: "ModusaSignal", other: Any):
45
- return SignalOps._apply_binary_op(signal, other, np.divide, "divide")
46
-
47
- @staticmethod
48
- def power(signal: "ModusaSignal", other: Any):
49
- return SignalOps._apply_binary_op(signal, other, np.power, "power")
50
-
51
- @staticmethod
52
- def floor_divide(signal: "ModusaSignal", other: Any):
53
- return SignalOps._apply_binary_op(signal, other, np.floor_divide, "floor_divide")
54
-
55
-
56
-
57
- #----------------------------------
58
- # To handle numpy aggregator ops
59
- # mean, sum, ...
60
- # TODO: Add dimension select option
61
- #----------------------------------
62
- @staticmethod
63
- def mean(signal: "ModusaSignal") -> float:
64
- """Return the mean of the signal data."""
65
- return float(np.mean(signal._data))
66
-
67
- @staticmethod
68
- def std(signal: "ModusaSignal") -> float:
69
- """Return the standard deviation of the signal data."""
70
- return float(np.std(signal._data))
71
-
72
- @staticmethod
73
- def min(signal: "ModusaSignal") -> float:
74
- """Return the minimum value in the signal data."""
75
- return float(np.min(signal._data))
76
-
77
- @staticmethod
78
- def max(signal: "ModusaSignal") -> float:
79
- """Return the maximum value in the signal data."""
80
- return float(np.max(signal._data))
81
-
82
- @staticmethod
83
- def sum(signal: "ModusaSignal") -> float:
84
- """Return the sum of the signal data."""
85
- return float(np.sum(signal._data))
86
-
87
- #----------------------------------
88
- # To handle numpy ops where the
89
- # shapes are unaltered
90
- # sin, cos, exp, log, ...
91
- #----------------------------------
92
-
93
- @staticmethod
94
- def _apply_unary_op(signal: "ModusaSignal", op_func, op_name: str):
95
- from modusa.signals.base import ModusaSignal # avoid circular import
96
-
97
- if not isinstance(signal, ModusaSignal):
98
- raise excp.InputTypeError(f"`signal` must be a ModusaSignal, got {type(signal)}")
99
-
100
- try:
101
- result = op_func(signal._data)
102
- except Exception as e:
103
- raise excp.SignalOpError(f"{op_name} failed: {e}")
104
-
105
- if not isinstance(result, np.ndarray):
106
- raise excp.SignalOpError(f"{op_name} did not return a NumPy array, got {type(result)}")
107
-
108
- if result.shape != signal._data.shape:
109
- raise excp.SignalOpError(f"{op_name} changed shape: {signal._data.shape} → {result.shape}")
110
-
111
- return signal.replace(data=result)
112
-
113
-
114
- @staticmethod
115
- def sin(signal: "ModusaSignal"):
116
- return SignalOps._apply_unary_op(signal, np.sin, "sin")
117
-
118
- @staticmethod
119
- def cos(signal: "ModusaSignal"):
120
- return SignalOps._apply_unary_op(signal, np.cos, "cos")
121
-
122
- @staticmethod
123
- def exp(signal: "ModusaSignal"):
124
- return SignalOps._apply_unary_op(signal, np.exp, "exp")
125
-
126
- @staticmethod
127
- def tanh(signal: "ModusaSignal"):
128
- return SignalOps._apply_unary_op(signal, np.tanh, "tanh")
129
-
130
- @staticmethod
131
- def log(signal: "ModusaSignal"):
132
- return SignalOps._apply_unary_op(signal, np.log, "log")
133
-
134
- @staticmethod
135
- def log10(signal: "ModusaSignal"):
136
- return SignalOps._apply_unary_op(signal, np.log10, "log10")
137
-
138
- @staticmethod
139
- def log2(signal: "ModusaSignal"):
140
- return SignalOps._apply_unary_op(signal, np.log2, "log2")
141
-
142
- @staticmethod
143
- def log1p(signal: "ModusaSignal"):
144
- return SignalOps._apply_unary_op(signal, np.log1p, "log1p")
145
-
146
-
147
- @staticmethod
148
- def sqrt(signal: "ModusaSignal"):
149
- return SignalOps._apply_unary_op(signal, np.sqrt, "sqrt")
150
-
151
- @staticmethod
152
- def abs(signal: "ModusaSignal"):
153
- return SignalOps._apply_unary_op(signal, np.abs, "abs")
154
-
155
- #------------------------------------
156
- # TODO: Add shape-changing ops like
157
- # reshape, transpose, squeeze later
158
- #------------------------------------
@@ -1,47 +0,0 @@
1
- modusa-0.2.22.dist-info/METADATA,sha256=0tgrUqyQsTextWxCHxNmuorCKRv96CZZ72OuCf3SOXg,1505
2
- modusa-0.2.22.dist-info/WHEEL,sha256=9P2ygRxDrTJz3gsagc0Z96ukrxjr-LFBGOgv3AuKlCA,90
3
- modusa-0.2.22.dist-info/entry_points.txt,sha256=fmKpleVXj6CdaBVL14WoEy6xx7JQCs85jvzwTi3lePM,73
4
- modusa-0.2.22.dist-info/licenses/LICENSE.md,sha256=JTaXAjx5awk76VArKCx5dUW8vmLEWsL_ZlR7-umaHbA,1078
5
- modusa/.DS_Store,sha256=Q0eG2RQNYtV4qa5BYj_GznvlEBpNdebi6ZTIR-a7AhU,6148
6
- modusa/__init__.py,sha256=bfQKVSpAXlKmKvMRIU6WSRQW2qoJsaZsdNJ8E69ghn0,37
7
- modusa/config.py,sha256=bTqK4t00FZqERVITrxW_q284aDDJAa9aMSfFknfR-oU,280
8
- modusa/decorators.py,sha256=kGadBm1UzAuWjc4tw9ycOkUm3xP6q-jebGo5yjk_Aqs,5909
9
- modusa/devtools/generate_template.py,sha256=1WTMIHvBoa42Ow3g2HvYKVNSBxLB6JLGXhs-7G7zi28,5225
10
- modusa/devtools/list_authors.py,sha256=FWBQKOLznVthvMYMASrx2Gw5lqKHEOccQpBisDZ53Dw,24
11
- modusa/devtools/list_plugins.py,sha256=g-R5hoaCzHfClY_Sfa788IQ9CAKzQGTfyqmthXDZQqw,1729
12
- modusa/devtools/main.py,sha256=Me7nkn-oaaxIVuj1aJ5dCq3CB8xODH6i2kqE_pAFmXQ,1836
13
- modusa/devtools/templates/engine.py,sha256=fmUhvgOpmNtJ5zbYDonyLVjRDzUnVCRzDWY6WeSeiVY,514
14
- modusa/devtools/templates/generator.py,sha256=tf2k2L9RF5S9iJmqPD5AFETJKvqL5XknqK3sR6n2ceQ,444
15
- modusa/devtools/templates/io.py,sha256=jcO4vAH8iiw6uvwy2aEbsBeNnQOj5VaU_VrQvhJflRA,383
16
- modusa/devtools/templates/plugin.py,sha256=HNoN0S63ahk83EPup_15pbfOY5_kFfnLF63U3vWOMp8,863
17
- modusa/devtools/templates/signal.py,sha256=Jqdq38W6ye2cf499oGXWlpCVH4Nmoo1jNfPYgdVLseA,775
18
- modusa/devtools/templates/test.py,sha256=OXEeIGW1D8g3a0jLyweNBpwfAQkkClhiIAEI6x0CooU,266
19
- modusa/engines/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
20
- modusa/engines/__init__.py,sha256=HtXuC9NWIo6faKTmbalxNvw2CTtiGrsPly7i08GlHVg,54
21
- modusa/engines/base.py,sha256=gHeGTbvcPhTxwUwt16OLpepMkbG40rv19vs8tN8xqgA,297
22
- modusa/generators/__init__.py,sha256=vcu5uk1hP637bmPTAiyb0LQ_vkFwgp4r-A1hAHR4zfo,110
23
- modusa/generators/audio_waveforms.py,sha256=qWg9TUVux8Abxmxa7EjCB_Pt88UFC6bJBqvYRWz8MTg,5868
24
- modusa/generators/base.py,sha256=QTb-8F19DmoCwLS7Mn9MdugOMZ_22suuTBFrmpyE7LM,934
25
- modusa/io/__init__.py,sha256=2Jg44klIAjbgLCn4faXXug_4nW-UiMsOH4Z3g0VGxWw,250
26
- modusa/io/audio_converter.py,sha256=CjsuvdjpHAuwJFjFNCHSzge-i07zW6U-cnb0EIYhMC0,1877
27
- modusa/io/audio_loader.py,sha256=o_tAFZaGVm62z59Yinzf2z6Gp_lujRoSWk1GHCaeOlI,4903
28
- modusa/io/audio_player.py,sha256=5BrYx1YyTYUybroJSNaZ5n7ABgKWeP4zBCLfhyQYPBE,1626
29
- modusa/io/base.py,sha256=GOMvpicWWLWXoxm4nLwqq_0hWmXWzYAPLVx-CbthCsQ,1291
30
- modusa/io/plotter.py,sha256=VViXHuIugAQDcTkSWjbrymrMrQOKVw97jqsd4-kWl_8,11920
31
- modusa/io/youtube_downloader.py,sha256=7Ah3JCHZTdL47v3m6KthYt80QOm40dDp2qAT2fChgFA,3444
32
- modusa/main.py,sha256=YeNg_GX3pzP4qNNU7CItCkWt5eOCHhnWLENFcQFlgfc,538
33
- modusa/plugins/__init__.py,sha256=OB-b_GnUnTkECn1fwxl844UBmiui3mSWIvhBqMZY7Tc,22
34
- modusa/plugins/base.py,sha256=Bh_1Bja7fOymFsCgwhXDbV6ys3D8muNrPwrfDrG_G_A,2382
35
- modusa/signals/__init__.py,sha256=TZujCd50gGnO-r27Tv6hrzNl8zBsMIMFwYCeIwszMjc,237
36
- modusa/signals/audio_signal.py,sha256=DvjQUjja9s3nrAHM7H_3z5DVC0nha0Az2D1025q5upk,15750
37
- modusa/signals/base.py,sha256=UdwOTlIHvXjpuCBwE-IcCQBL0F-wuhQpD6aOvI8FvXE,795
38
- modusa/signals/frequency_domain_signal.py,sha256=wS7MN6y56BDInNgtnkIB3XNsxDS_TNmewqS-A31MJmY,11192
39
- modusa/signals/signal_ops.py,sha256=tpbZs10NVkT4Y7nsIhqGEP4Y6T8JZ07PiKxF34fYu-I,4685
40
- modusa/signals/spectrogram.py,sha256=Rbt7AVHuRjRLjHXaoUtaT_uG-CCK6Tc9_P9apH2Oczk,14443
41
- modusa/signals/time_domain_signal.py,sha256=SOiBVhvsZcctYOGLLtnXXK5IT9wOTO-S4_K0DPWPr-Y,9751
42
- modusa/utils/.DS_Store,sha256=nLXMwF7QJNuglLI_Gk74F7vl5Dyus2Wd74Mgowijmdo,6148
43
- modusa/utils/__init__.py,sha256=1oLL20yLB1GL9IbFiZD8OReDqiCpFr-yetIR6x1cNkI,23
44
- modusa/utils/config.py,sha256=cuGbqbovx5WDQq5rw3hIKcv3CnE5NttjacSOWnP1yu4,576
45
- modusa/utils/excp.py,sha256=_NLfR1AKU4dOpK-OF0NaChYjaVBCcq1VmSd_dkOexi4,1235
46
- modusa/utils/logger.py,sha256=K0rsnObeNKCxlNeSnVnJeRhgfmob6riB2uyU7h3dDmA,571
47
- modusa-0.2.22.dist-info/RECORD,,