dttlib 0.8.2__tar.gz → 0.9.1__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 (173) hide show
  1. {dttlib-0.8.2 → dttlib-0.9.1}/Cargo.lock +8 -8
  2. {dttlib-0.8.2 → dttlib-0.9.1}/Cargo.toml +3 -3
  3. {dttlib-0.8.2 → dttlib-0.9.1}/PKG-INFO +1 -1
  4. dttlib-0.9.1/build.rs +18 -0
  5. {dttlib-0.8.2 → dttlib-0.9.1}/dtt_macros/src/builder_lite.rs +25 -1
  6. {dttlib-0.8.2 → dttlib-0.9.1}/dttlib.pyi +251 -26
  7. {dttlib-0.8.2 → dttlib-0.9.1}/pipelines/src/accumulator.rs +15 -5
  8. {dttlib-0.8.2 → dttlib-0.9.1}/pipelines/src/lib.rs +80 -56
  9. {dttlib-0.8.2 → dttlib-0.9.1}/pipelines/src/pipe.rs +7 -7
  10. {dttlib-0.8.2 → dttlib-0.9.1}/pipelines/src/publisher.rs +17 -7
  11. {dttlib-0.8.2 → dttlib-0.9.1}/pipelines/src/python.rs +54 -15
  12. {dttlib-0.8.2 → dttlib-0.9.1}/pipelines/src/stateless/mod.rs +14 -11
  13. dttlib-0.9.1/pipelines/src/stateless/pure.rs +209 -0
  14. {dttlib-0.8.2 → dttlib-0.9.1}/pipelines/src/unsynced_pipe.rs +7 -7
  15. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/arithmetic/average.rs +3 -2
  16. dttlib-0.9.1/src/analysis/arithmetic/complex.rs +34 -0
  17. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/arithmetic/mod.rs +2 -0
  18. dttlib-0.9.1/src/analysis/arithmetic/phase.rs +29 -0
  19. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/arithmetic/real.rs +4 -3
  20. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/arithmetic/sqrt.rs +3 -2
  21. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/conditioning/convert.rs +3 -2
  22. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/conditioning/decimate.rs +9 -5
  23. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/conditioning/heterodyne.rs +3 -2
  24. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/conditioning/mod.rs +61 -40
  25. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/conditioning/partition.rs +4 -2
  26. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/conditioning/subtract_start_average.rs +5 -3
  27. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/conditioning/time_delay.rs +6 -5
  28. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/conditioning/time_shift.rs +3 -2
  29. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/conditioning/trim.rs +4 -2
  30. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/fourier_tools/asd.rs +4 -3
  31. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/fourier_tools/csd.rs +3 -3
  32. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/fourier_tools/fft.rs +1 -1
  33. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/general/maybe_into.rs +2 -2
  34. dttlib-0.9.1/src/analysis/graph/analysis/analysis_edge.rs +82 -0
  35. dttlib-0.9.1/src/analysis/graph/analysis/analysis_node.rs +59 -0
  36. dttlib-0.9.1/src/analysis/graph/analysis/graph_to_pipeline.rs +932 -0
  37. dttlib-0.9.1/src/analysis/graph/analysis/mod.rs +819 -0
  38. dttlib-0.9.1/src/analysis/graph/analysis/output_source.rs +331 -0
  39. dttlib-0.9.1/src/analysis/graph/analysis/view_graph_to_pipeline.rs +743 -0
  40. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/graph/mod.rs +0 -2
  41. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/graph/scheme.rs +44 -3
  42. dttlib-0.9.1/src/analysis/result/analysis_id.rs +316 -0
  43. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/result/analysis_result.rs +11 -9
  44. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/result/edge_data_type.rs +83 -84
  45. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/result/freq_domain_value.rs +2 -2
  46. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/result/mod.rs +1 -1
  47. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/result/record.rs +7 -3
  48. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/result/time_domain_value.rs +2 -2
  49. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/scope/downsample.rs +34 -23
  50. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/scope/inline_fft.rs +4 -3
  51. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/scope/splice.rs +11 -8
  52. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/types/frequency_domain_array.rs +42 -7
  53. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/types/math_traits.rs +12 -0
  54. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/types/time_domain_array.rs +77 -12
  55. {dttlib-0.8.2 → dttlib-0.9.1}/src/data_source/buffer.rs +9 -4
  56. {dttlib-0.8.2 → dttlib-0.9.1}/src/data_source/data_distributor.rs +30 -13
  57. {dttlib-0.8.2 → dttlib-0.9.1}/src/data_source/dummy.rs +30 -20
  58. {dttlib-0.8.2 → dttlib-0.9.1}/src/data_source/nds2_direct.rs +12 -2
  59. {dttlib-0.8.2 → dttlib-0.9.1}/src/data_source/nds_cache/mod.rs +12 -5
  60. {dttlib-0.8.2 → dttlib-0.9.1}/src/data_source/random.rs +30 -20
  61. {dttlib-0.8.2 → dttlib-0.9.1}/src/errors.rs +16 -0
  62. {dttlib-0.8.2 → dttlib-0.9.1}/src/gds_sigp/decimate.rs +2 -3
  63. {dttlib-0.8.2 → dttlib-0.9.1}/src/gds_sigp/fft.rs +6 -2
  64. {dttlib-0.8.2 → dttlib-0.9.1}/src/lib.rs +6 -2
  65. {dttlib-0.8.2 → dttlib-0.9.1}/src/params/channel_params/channel.rs +15 -1
  66. {dttlib-0.8.2 → dttlib-0.9.1}/src/params/channel_params/channel_id.rs +59 -14
  67. dttlib-0.9.1/src/params/channel_params/channel_name.rs +70 -0
  68. {dttlib-0.8.2 → dttlib-0.9.1}/src/params/channel_params/channel_settings.rs +52 -11
  69. {dttlib-0.8.2 → dttlib-0.9.1}/src/params/channel_params/mod.rs +3 -1
  70. {dttlib-0.8.2 → dttlib-0.9.1}/src/params/channel_params/unit.rs +7 -3
  71. {dttlib-0.8.2 → dttlib-0.9.1}/src/params/custom_pipeline.rs +24 -11
  72. {dttlib-0.8.2 → dttlib-0.9.1}/src/python/dtt_types.rs +2 -2
  73. {dttlib-0.8.2 → dttlib-0.9.1}/src/python/dttlib.rs +10 -4
  74. {dttlib-0.8.2 → dttlib-0.9.1}/src/run.rs +5 -4
  75. {dttlib-0.8.2 → dttlib-0.9.1}/src/run_context.rs +1 -1
  76. {dttlib-0.8.2 → dttlib-0.9.1}/src/scope_view/mod.rs +5 -5
  77. dttlib-0.9.1/src/scope_view/pipeline_graph.rs +340 -0
  78. dttlib-0.9.1/src/scope_view/view_set.rs +259 -0
  79. {dttlib-0.8.2 → dttlib-0.9.1}/src/timeline/ffttools.rs +9 -1
  80. {dttlib-0.8.2 → dttlib-0.9.1}/src/timeline/general.rs +11 -3
  81. {dttlib-0.8.2 → dttlib-0.9.1}/src/timeline/init.rs +35 -2
  82. {dttlib-0.8.2 → dttlib-0.9.1}/src/timeline/mod.rs +9 -10
  83. {dttlib-0.8.2 → dttlib-0.9.1}/src/user/mod.rs +21 -10
  84. {dttlib-0.8.2 → dttlib-0.9.1}/test_dttlib.py +35 -2
  85. {dttlib-0.8.2 → dttlib-0.9.1}/user_messages/src/lib.rs +20 -1
  86. dttlib-0.8.2/build.rs +0 -52
  87. dttlib-0.8.2/pipelines/src/stateless/pure.rs +0 -89
  88. dttlib-0.8.2/src/analysis/graph/analysis.rs +0 -956
  89. dttlib-0.8.2/src/analysis/graph/graph_to_pipeline.rs +0 -687
  90. dttlib-0.8.2/src/analysis/graph/view_graph_to_pipeline.rs +0 -568
  91. dttlib-0.8.2/src/analysis/result/analysis_id.rs +0 -167
  92. dttlib-0.8.2/src/scope_view/pipeline_graph.rs +0 -123
  93. dttlib-0.8.2/src/scope_view/view_set.rs +0 -130
  94. {dttlib-0.8.2 → dttlib-0.9.1}/.cargo/config.toml +0 -0
  95. {dttlib-0.8.2 → dttlib-0.9.1}/.devcontainer/Dockerfile +0 -0
  96. {dttlib-0.8.2 → dttlib-0.9.1}/.devcontainer/devcontainer.json +0 -0
  97. {dttlib-0.8.2 → dttlib-0.9.1}/.gitignore +0 -0
  98. {dttlib-0.8.2 → dttlib-0.9.1}/.gitlab-ci.yml +0 -0
  99. {dttlib-0.8.2 → dttlib-0.9.1}/.python-version +0 -0
  100. {dttlib-0.8.2 → dttlib-0.9.1}/CHANGES.md +0 -0
  101. {dttlib-0.8.2 → dttlib-0.9.1}/COPYING +0 -0
  102. {dttlib-0.8.2 → dttlib-0.9.1}/COPYING-GPL-3 +0 -0
  103. {dttlib-0.8.2 → dttlib-0.9.1}/PUBLISH.md +0 -0
  104. {dttlib-0.8.2 → dttlib-0.9.1}/README.md +0 -0
  105. {dttlib-0.8.2 → dttlib-0.9.1}/bacon.toml +0 -0
  106. {dttlib-0.8.2 → dttlib-0.9.1}/build_wheel.sh +0 -0
  107. {dttlib-0.8.2 → dttlib-0.9.1}/cycle.sh +0 -0
  108. {dttlib-0.8.2 → dttlib-0.9.1}/devel_bullseye.sh +0 -0
  109. {dttlib-0.8.2 → dttlib-0.9.1}/docs/cache_design.md +0 -0
  110. {dttlib-0.8.2 → dttlib-0.9.1}/dtt_macros/Cargo.toml +0 -0
  111. {dttlib-0.8.2 → dttlib-0.9.1}/dtt_macros/src/lib.rs +0 -0
  112. {dttlib-0.8.2 → dttlib-0.9.1}/gen_stub +0 -0
  113. {dttlib-0.8.2 → dttlib-0.9.1}/include/nds2.h +0 -0
  114. {dttlib-0.8.2 → dttlib-0.9.1}/linked_libraries.json +0 -0
  115. {dttlib-0.8.2 → dttlib-0.9.1}/pipeline_macros/Cargo.toml +0 -0
  116. {dttlib-0.8.2 → dttlib-0.9.1}/pipeline_macros/src/box_async.rs +0 -0
  117. {dttlib-0.8.2 → dttlib-0.9.1}/pipeline_macros/src/derive.rs +0 -0
  118. {dttlib-0.8.2 → dttlib-0.9.1}/pipeline_macros/src/gen.rs +0 -0
  119. {dttlib-0.8.2 → dttlib-0.9.1}/pipeline_macros/src/lib.rs +0 -0
  120. {dttlib-0.8.2 → dttlib-0.9.1}/pipelines/Cargo.toml +0 -0
  121. {dttlib-0.8.2 → dttlib-0.9.1}/pipelines/src/README.md +0 -0
  122. {dttlib-0.8.2 → dttlib-0.9.1}/pipelines/src/complex.rs +0 -0
  123. {dttlib-0.8.2 → dttlib-0.9.1}/publish_bullseye.sh +0 -0
  124. {dttlib-0.8.2 → dttlib-0.9.1}/pypi_build/build.sh +0 -0
  125. {dttlib-0.8.2 → dttlib-0.9.1}/pypi_build/build_docker.sh +0 -0
  126. {dttlib-0.8.2 → dttlib-0.9.1}/pypi_build/build_docker_base.sh +0 -0
  127. {dttlib-0.8.2 → dttlib-0.9.1}/pypi_build/build_docker_debian.sh +0 -0
  128. {dttlib-0.8.2 → dttlib-0.9.1}/pypi_build/dttbuild/Dockerfile +0 -0
  129. {dttlib-0.8.2 → dttlib-0.9.1}/pypi_build/dttbuild/install_python.sh +0 -0
  130. {dttlib-0.8.2 → dttlib-0.9.1}/pypi_build/dttbuild_base/Dockerfile +0 -0
  131. {dttlib-0.8.2 → dttlib-0.9.1}/pypi_build/dttbuild_base/build_clang.sh +0 -0
  132. {dttlib-0.8.2 → dttlib-0.9.1}/pypi_build/dttbuild_base_conda/Dockerfile +0 -0
  133. {dttlib-0.8.2 → dttlib-0.9.1}/pypi_build/dttbuild_base_conda/dttbuild.yaml +0 -0
  134. {dttlib-0.8.2 → dttlib-0.9.1}/pypi_build/dttbuild_debian/Dockerfile +0 -0
  135. {dttlib-0.8.2 → dttlib-0.9.1}/pypi_build/py_versions.sh +0 -0
  136. {dttlib-0.8.2 → dttlib-0.9.1}/pypi_build.sh +0 -0
  137. {dttlib-0.8.2 → dttlib-0.9.1}/pypi_upload.sh +0 -0
  138. {dttlib-0.8.2 → dttlib-0.9.1}/pyproject.toml +0 -0
  139. {dttlib-0.8.2 → dttlib-0.9.1}/run.py +0 -0
  140. {dttlib-0.8.2 → dttlib-0.9.1}/setup_conda.sh +0 -0
  141. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/custom/mod.rs +0 -0
  142. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/fourier_tools/mod.rs +0 -0
  143. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/general/identity.rs +0 -0
  144. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/general/into.rs +0 -0
  145. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/general/mod.rs +0 -0
  146. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/mod.rs +0 -0
  147. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/scope/mod.rs +0 -0
  148. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/types/linear.rs +0 -0
  149. {dttlib-0.8.2 → dttlib-0.9.1}/src/analysis/types/mod.rs +0 -0
  150. {dttlib-0.8.2 → dttlib-0.9.1}/src/bin/stub_gen.rs +0 -0
  151. {dttlib-0.8.2 → dttlib-0.9.1}/src/c_math.rs +0 -0
  152. {dttlib-0.8.2 → dttlib-0.9.1}/src/constraints/mod.rs +0 -0
  153. {dttlib-0.8.2 → dttlib-0.9.1}/src/data_source/channel_query.rs +0 -0
  154. {dttlib-0.8.2 → dttlib-0.9.1}/src/data_source/data_source_pipeline.rs +0 -0
  155. {dttlib-0.8.2 → dttlib-0.9.1}/src/data_source/mod.rs +0 -0
  156. {dttlib-0.8.2 → dttlib-0.9.1}/src/data_source/nds_cache/gap_handler.rs +0 -0
  157. {dttlib-0.8.2 → dttlib-0.9.1}/src/data_source/no_data.rs +0 -0
  158. {dttlib-0.8.2 → dttlib-0.9.1}/src/gds_sigp/asd.rs +0 -0
  159. {dttlib-0.8.2 → dttlib-0.9.1}/src/gds_sigp/heterodyne.rs +0 -0
  160. {dttlib-0.8.2 → dttlib-0.9.1}/src/gds_sigp/mod.rs +0 -0
  161. {dttlib-0.8.2 → dttlib-0.9.1}/src/params/channel_params/channel_type.rs +0 -0
  162. {dttlib-0.8.2 → dttlib-0.9.1}/src/params/channel_params/decimation_parameters/mod.rs +0 -0
  163. {dttlib-0.8.2 → dttlib-0.9.1}/src/params/channel_params/nds_data_type.rs +0 -0
  164. {dttlib-0.8.2 → dttlib-0.9.1}/src/params/constraints/mod.rs +0 -0
  165. {dttlib-0.8.2 → dttlib-0.9.1}/src/params/excitation_params.rs +0 -0
  166. {dttlib-0.8.2 → dttlib-0.9.1}/src/params/mod.rs +0 -0
  167. {dttlib-0.8.2 → dttlib-0.9.1}/src/params/test_params.rs +0 -0
  168. {dttlib-0.8.2 → dttlib-0.9.1}/src/python/mod.rs +0 -0
  169. {dttlib-0.8.2 → dttlib-0.9.1}/src/timeline/constraints.rs +0 -0
  170. {dttlib-0.8.2 → dttlib-0.9.1}/src/tokio_setup.rs +0 -0
  171. {dttlib-0.8.2 → dttlib-0.9.1}/test_dtt.py +0 -0
  172. {dttlib-0.8.2 → dttlib-0.9.1}/user_messages/Cargo.toml +0 -0
  173. {dttlib-0.8.2 → dttlib-0.9.1}/wrapper.h +0 -0
@@ -1408,7 +1408,7 @@ checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"
1408
1408
 
1409
1409
  [[package]]
1410
1410
  name = "dtt_macros"
1411
- version = "0.8.2"
1411
+ version = "0.9.1"
1412
1412
  dependencies = [
1413
1413
  "proc-macro2",
1414
1414
  "quote",
@@ -1417,7 +1417,7 @@ dependencies = [
1417
1417
 
1418
1418
  [[package]]
1419
1419
  name = "dttlib"
1420
- version = "0.8.2"
1420
+ version = "0.9.1"
1421
1421
  dependencies = [
1422
1422
  "bindgen",
1423
1423
  "dtt_macros",
@@ -2969,7 +2969,7 @@ dependencies = [
2969
2969
  [[package]]
2970
2970
  name = "nds-cache-rs"
2971
2971
  version = "0.1.0"
2972
- source = "git+https://git.ligo.org/cds/software/cr_tools/nds-cache-rs.git?tag=dev_18#7fc14bd2ad2cf4c027cb212ab171752c9cc5b46c"
2972
+ source = "git+https://git.ligo.org/cds/software/cr_tools/nds-cache-rs.git?tag=dev_20#d215ac31d0ae035a42f588e0a96677b40fa3bd1c"
2973
2973
  dependencies = [
2974
2974
  "arrakis",
2975
2975
  "bitcode",
@@ -3008,7 +3008,7 @@ dependencies = [
3008
3008
 
3009
3009
  [[package]]
3010
3010
  name = "nds_test"
3011
- version = "0.8.2"
3011
+ version = "0.9.1"
3012
3012
  dependencies = [
3013
3013
  "dttlib",
3014
3014
  "eframe",
@@ -3572,7 +3572,7 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
3572
3572
 
3573
3573
  [[package]]
3574
3574
  name = "pipeline_macros"
3575
- version = "0.8.2"
3575
+ version = "0.9.1"
3576
3576
  dependencies = [
3577
3577
  "proc-macro2",
3578
3578
  "quote",
@@ -3581,7 +3581,7 @@ dependencies = [
3581
3581
 
3582
3582
  [[package]]
3583
3583
  name = "pipelines"
3584
- version = "0.8.2"
3584
+ version = "0.9.1"
3585
3585
  dependencies = [
3586
3586
  "futures",
3587
3587
  "num-complex",
@@ -4770,7 +4770,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
4770
4770
  [[package]]
4771
4771
  name = "ts-tree-rs"
4772
4772
  version = "0.1.0"
4773
- source = "git+https://git.ligo.org/cds/software/cr_tools/ts-tree-rs.git?tag=dev_1#5d55d4d1fa6bbb8299fc68c98e64ce43f7539c61"
4773
+ source = "git+https://git.ligo.org/cds/software/cr_tools/ts-tree-rs.git?tag=dev_2#299c2191a8d81998c7496432860d5256258aaff8"
4774
4774
  dependencies = [
4775
4775
  "intrusive-collections",
4776
4776
  "itertools 0.13.0",
@@ -4861,7 +4861,7 @@ dependencies = [
4861
4861
 
4862
4862
  [[package]]
4863
4863
  name = "user_messages"
4864
- version = "0.8.2"
4864
+ version = "0.9.1"
4865
4865
  dependencies = [
4866
4866
  "log",
4867
4867
  "pretty_env_logger",
@@ -7,7 +7,7 @@ authors = ["Erik von Reis <erik.vonreis@ligo.org>"]
7
7
  edition = "2024"
8
8
  homepage = "https://git.ligo.org/cds/software/cr-tools/dtt_rust"
9
9
  repository = "https://git.ligo.org/cds/software/cr-tools/dtt_rust"
10
- version = "0.8.2"
10
+ version = "0.9.1"
11
11
 
12
12
  [package]
13
13
  name = "dttlib"
@@ -38,7 +38,7 @@ required-features = ["python"]
38
38
 
39
39
  [workspace.dependencies]
40
40
  # python
41
- pyo3 = { version="0.24", features=["num-complex", "macros"]}
41
+ pyo3 = { version="0.24", features=["num-complex", "macros", "multiple-pymethods"]}
42
42
  pyo3-stub-gen = { version="0.11"}
43
43
  numpy = {version="0.24"}
44
44
 
@@ -82,7 +82,7 @@ num-rational = {version = "0.4"}
82
82
 
83
83
  # ligo
84
84
  nds2_client_rs = { git="https://git.ligo.org/erik.vonreis/nds_client_rs.git", tag = "dev_0", optional = true }
85
- nds-cache-rs = { git = "https://git.ligo.org/cds/software/cr_tools/nds-cache-rs.git", tag = "dev_18"}
85
+ nds-cache-rs = { git = "https://git.ligo.org/cds/software/cr_tools/nds-cache-rs.git", tag = "dev_20"}
86
86
  ligo_hires_gps_time = {workspace = true}
87
87
 
88
88
  # workspace
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dttlib
3
- Version: 0.8.2
3
+ Version: 0.9.1
4
4
  License-File: COPYING
5
5
  License-File: COPYING-GPL-3
6
6
  Summary: Advanced LIGO core library for online and offline frequency-domain diagnostics tool.
dttlib-0.9.1/build.rs ADDED
@@ -0,0 +1,18 @@
1
+ use std::env;
2
+ use std::path::PathBuf;
3
+
4
+ fn main() {
5
+ println!("cargo:rustc-link-lib=gds-sigp");
6
+ println!("cargo:rustc-link-lib=fftw3");
7
+
8
+ let bindings = bindgen::Builder::default()
9
+ .header("wrapper.h")
10
+ .generate()
11
+ .expect("Unable to generate bindings");
12
+
13
+ let out_path =
14
+ PathBuf::from(env::var("OUT_DIR").expect("Environment var OUT_DIR must be a path"));
15
+ bindings
16
+ .write_to_file(out_path.join("bindings.rs"))
17
+ .expect("Couldn't write bindings");
18
+ }
@@ -4,9 +4,21 @@
4
4
  //! # Examples
5
5
  //!
6
6
  //! ```
7
+ //! use dtt_macros::*;
8
+ //!
9
+ //! struct NeedsCustomFunc {
10
+ //! // this structure needs a special function
11
+ //! // for initialization
12
+ //! }
13
+ //!
14
+ //! struct DontModify {
15
+ //! // this structure is created internally
16
+ //! // so should not be set during initialization
17
+ //! }
18
+ //!
7
19
  //! #[builder_lite]
8
20
  //! struct MyStruct {
9
- //! field_a: int32,
21
+ //! field_a: i32,
10
22
  //! field_b: String,
11
23
  //! #[no_builder]
12
24
  //! field_c: NeedsCustomFunc,
@@ -18,6 +30,18 @@
18
30
  //! expands to
19
31
  //!
20
32
  //! ```
33
+ //! use dtt_macros::*;
34
+ //!
35
+ //! struct NeedsCustomFunc {
36
+ //! // this structure needs a special function
37
+ //! // for initialization
38
+ //! }
39
+ //!
40
+ //! struct DontModify {
41
+ //! // this structure is created internally
42
+ //! // so should not be set during initialization
43
+ //! }
44
+ //!
21
45
  //! struct MyStruct {
22
46
  //! field_a: i32,
23
47
  //! field_b: String,
@@ -5,7 +5,7 @@ import builtins
5
5
  import typing
6
6
  from enum import Enum
7
7
 
8
- class AnalysisID:
8
+ class AnalysisHeaderId:
9
9
  r"""
10
10
  This is the name of a result
11
11
  Can be of the simple form "SomeChannelName"
@@ -14,15 +14,33 @@ class AnalysisID:
14
14
  Structured to avoid unnecessary string parsing
15
15
  """
16
16
  @staticmethod
17
- def from_channel(channel: Channel) -> AnalysisID: ...
17
+ def from_channel(channel: ChannelHeader) -> AnalysisHeaderId: ...
18
18
  def __new__(
19
- cls, name: builtins.str, args: typing.Sequence[AnalysisID]
20
- ) -> AnalysisID: ...
21
- def first_channel(self) -> Channel:
19
+ cls, name: builtins.str, args: typing.Sequence[AnalysisHeaderId]
20
+ ) -> AnalysisHeaderId: ...
21
+ def first_channel(self) -> ChannelHeader:
22
22
  r"""
23
23
  get the first channel
24
24
  """
25
- class Compound(AnalysisID):
25
+ def add_to_set_recursive(
26
+ self, set: builtins.set[AnalysisHeaderId]
27
+ ) -> builtins.set[AnalysisHeaderId]:
28
+ r"""
29
+ The set is pass-through ownership so that the function is usable from python
30
+
31
+ This function is needed to "flesh out" the collection of analyses request
32
+ by the user to include all intermediate analyses
33
+ """
34
+ def add_trend(self, trend: TrendType) -> AnalysisHeaderId: ...
35
+ def to_analysis_name_id(self) -> AnalysisNameId: ...
36
+ def get_channels(self) -> builtins.set[ChannelHeader]: ...
37
+ class Simple(AnalysisHeaderId):
38
+ __match_args__ = ("channel",)
39
+ @property
40
+ def channel(self) -> ChannelHeader: ...
41
+ def __new__(cls, channel: ChannelHeader) -> AnalysisHeaderId.Simple: ...
42
+
43
+ class Compound(AnalysisHeaderId):
26
44
  __match_args__ = (
27
45
  "name",
28
46
  "args",
@@ -30,16 +48,202 @@ class AnalysisID:
30
48
  @property
31
49
  def name(self) -> builtins.str: ...
32
50
  @property
33
- def args(self) -> builtins.list[AnalysisID]: ...
51
+ def args(self) -> builtins.list[AnalysisHeaderId]: ...
34
52
  def __new__(
35
- cls, name: builtins.str, args: typing.Sequence[AnalysisID]
36
- ) -> AnalysisID.Compound: ...
53
+ cls, name: builtins.str, args: typing.Sequence[AnalysisHeaderId]
54
+ ) -> AnalysisHeaderId.Compound: ...
55
+
56
+ class AnalysisId:
57
+ r"""
58
+ This is the name of a result
59
+ Can be of the simple form "SomeChannelName"
60
+ Or the compound form "Name(OtherID1, OtherID2, ...)"
37
61
 
38
- class Simple(AnalysisID):
62
+ Structured to avoid unnecessary string parsing
63
+ """
64
+ @staticmethod
65
+ def from_channel(channel: Channel) -> AnalysisId: ...
66
+ def __new__(
67
+ cls, name: builtins.str, args: typing.Sequence[AnalysisId]
68
+ ) -> AnalysisId: ...
69
+ def first_channel(self) -> Channel:
70
+ r"""
71
+ get the first channel
72
+ """
73
+ def add_to_set_recursive(
74
+ self, set: builtins.set[AnalysisId]
75
+ ) -> builtins.set[AnalysisId]:
76
+ r"""
77
+ The set is pass-through ownership so that the function is usable from python
78
+
79
+ This function is needed to "flesh out" the collection of analyses request
80
+ by the user to include all intermediate analyses
81
+ """
82
+ def add_trend(self, trend: TrendType) -> AnalysisId: ...
83
+ def to_analysis_name_id(self) -> AnalysisNameId: ...
84
+ def get_channels(self) -> builtins.set[Channel]: ...
85
+ class Simple(AnalysisId):
39
86
  __match_args__ = ("channel",)
40
87
  @property
41
88
  def channel(self) -> Channel: ...
42
- def __new__(cls, channel: Channel) -> AnalysisID.Simple: ...
89
+ def __new__(cls, channel: Channel) -> AnalysisId.Simple: ...
90
+
91
+ class Compound(AnalysisId):
92
+ __match_args__ = (
93
+ "name",
94
+ "args",
95
+ )
96
+ @property
97
+ def name(self) -> builtins.str: ...
98
+ @property
99
+ def args(self) -> builtins.list[AnalysisId]: ...
100
+ def __new__(
101
+ cls, name: builtins.str, args: typing.Sequence[AnalysisId]
102
+ ) -> AnalysisId.Compound: ...
103
+
104
+ class AnalysisNameId:
105
+ r"""
106
+ This is the name of a result
107
+ Can be of the simple form "SomeChannelName"
108
+ Or the compound form "Name(OtherID1, OtherID2, ...)"
109
+
110
+ Structured to avoid unnecessary string parsing
111
+ """
112
+ @staticmethod
113
+ def from_channel(channel: ChannelName) -> AnalysisNameId: ...
114
+ def __new__(
115
+ cls, name: builtins.str, args: typing.Sequence[AnalysisNameId]
116
+ ) -> AnalysisNameId: ...
117
+ def first_channel(self) -> ChannelName:
118
+ r"""
119
+ get the first channel
120
+ """
121
+ def add_to_set_recursive(
122
+ self, set: builtins.set[AnalysisNameId]
123
+ ) -> builtins.set[AnalysisNameId]:
124
+ r"""
125
+ The set is pass-through ownership so that the function is usable from python
126
+
127
+ This function is needed to "flesh out" the collection of analyses request
128
+ by the user to include all intermediate analyses
129
+ """
130
+ def add_trend(self, trend: TrendType) -> AnalysisRequestId: ...
131
+ def to_analysis_name_id(self) -> AnalysisNameId: ...
132
+ def get_channels(self) -> builtins.set[ChannelName]: ...
133
+ class Simple(AnalysisNameId):
134
+ __match_args__ = ("channel",)
135
+ @property
136
+ def channel(self) -> ChannelName: ...
137
+ def __new__(cls, channel: ChannelName) -> AnalysisNameId.Simple: ...
138
+
139
+ class Compound(AnalysisNameId):
140
+ __match_args__ = (
141
+ "name",
142
+ "args",
143
+ )
144
+ @property
145
+ def name(self) -> builtins.str: ...
146
+ @property
147
+ def args(self) -> builtins.list[AnalysisNameId]: ...
148
+ def __new__(
149
+ cls, name: builtins.str, args: typing.Sequence[AnalysisNameId]
150
+ ) -> AnalysisNameId.Compound: ...
151
+
152
+ class AnalysisRequestId:
153
+ r"""
154
+ This is the name of a result
155
+ Can be of the simple form "SomeChannelName"
156
+ Or the compound form "Name(OtherID1, OtherID2, ...)"
157
+
158
+ Structured to avoid unnecessary string parsing
159
+ """
160
+ @staticmethod
161
+ def from_channel(channel: ChannelId) -> AnalysisRequestId: ...
162
+ def __new__(
163
+ cls, name: builtins.str, args: typing.Sequence[AnalysisRequestId]
164
+ ) -> AnalysisRequestId: ...
165
+ def first_channel(self) -> ChannelId:
166
+ r"""
167
+ get the first channel
168
+ """
169
+ def add_to_set_recursive(
170
+ self, set: builtins.set[AnalysisRequestId]
171
+ ) -> builtins.set[AnalysisRequestId]:
172
+ r"""
173
+ The set is pass-through ownership so that the function is usable from python
174
+
175
+ This function is needed to "flesh out" the collection of analyses request
176
+ by the user to include all intermediate analyses
177
+ """
178
+ def add_trend(self, trend: TrendType) -> AnalysisRequestId: ...
179
+ def to_analysis_name_id(self) -> AnalysisNameId: ...
180
+ def get_channels(self) -> builtins.set[ChannelId]: ...
181
+ class Simple(AnalysisRequestId):
182
+ __match_args__ = ("channel",)
183
+ @property
184
+ def channel(self) -> ChannelId: ...
185
+ def __new__(cls, channel: ChannelId) -> AnalysisRequestId.Simple: ...
186
+
187
+ class Compound(AnalysisRequestId):
188
+ __match_args__ = (
189
+ "name",
190
+ "args",
191
+ )
192
+ @property
193
+ def name(self) -> builtins.str: ...
194
+ @property
195
+ def args(self) -> builtins.list[AnalysisRequestId]: ...
196
+ def __new__(
197
+ cls, name: builtins.str, args: typing.Sequence[AnalysisRequestId]
198
+ ) -> AnalysisRequestId.Compound: ...
199
+
200
+ class AnalysisSettingsId:
201
+ r"""
202
+ This is the name of a result
203
+ Can be of the simple form "SomeChannelName"
204
+ Or the compound form "Name(OtherID1, OtherID2, ...)"
205
+
206
+ Structured to avoid unnecessary string parsing
207
+ """
208
+ @staticmethod
209
+ def from_channel(channel: ChannelSettings) -> AnalysisSettingsId: ...
210
+ def __new__(
211
+ cls, name: builtins.str, args: typing.Sequence[AnalysisSettingsId]
212
+ ) -> AnalysisSettingsId: ...
213
+ def first_channel(self) -> ChannelSettings:
214
+ r"""
215
+ get the first channel
216
+ """
217
+ def add_to_set_recursive(
218
+ self, set: builtins.set[AnalysisSettingsId]
219
+ ) -> builtins.set[AnalysisSettingsId]:
220
+ r"""
221
+ The set is pass-through ownership so that the function is usable from python
222
+
223
+ This function is needed to "flesh out" the collection of analyses request
224
+ by the user to include all intermediate analyses
225
+ """
226
+ def add_trend(self, trend: TrendType) -> AnalysisSettingsId: ...
227
+ def to_analysis_name_id(self) -> AnalysisNameId: ...
228
+ def get_channels(self) -> builtins.set[ChannelSettings]: ...
229
+ class Simple(AnalysisSettingsId):
230
+ __match_args__ = ("channel",)
231
+ @property
232
+ def channel(self) -> ChannelSettings: ...
233
+ def __new__(cls, channel: ChannelSettings) -> AnalysisSettingsId.Simple: ...
234
+
235
+ class Compound(AnalysisSettingsId):
236
+ __match_args__ = (
237
+ "name",
238
+ "args",
239
+ )
240
+ @property
241
+ def name(self) -> builtins.str: ...
242
+ @property
243
+ def args(self) -> builtins.list[AnalysisSettingsId]: ...
244
+ def __new__(
245
+ cls, name: builtins.str, args: typing.Sequence[AnalysisSettingsId]
246
+ ) -> AnalysisSettingsId.Compound: ...
43
247
 
44
248
  class Channel:
45
249
  @property
@@ -82,6 +286,19 @@ class Channel:
82
286
  cls, name: builtins.str, data_type: NDSDataType, period: PipDuration
83
287
  ) -> Channel: ...
84
288
 
289
+ class ChannelHeader:
290
+ r"""
291
+ Used internally to map full name and trend info
292
+ this is the minimum needed information
293
+ to generate a request to the cache or other data source
294
+ """
295
+ @property
296
+ def name(self) -> builtins.str: ...
297
+ @property
298
+ def trend_type(self) -> TrendType: ...
299
+ @property
300
+ def trend_stat(self) -> TrendStat: ...
301
+
85
302
  class ChannelId:
86
303
  r"""
87
304
  Provides enough info to query a channel from an NDS server by name.
@@ -97,6 +314,14 @@ class ChannelId:
97
314
  One ChannelID will return into a channel for each.
98
315
  """
99
316
 
317
+ class ChannelName:
318
+ r"""
319
+ Provides enough info to query a channel from an NDS server by name.
320
+ """
321
+ @property
322
+ def name(self) -> builtins.str: ...
323
+ def __new__(cls, name: builtins.str) -> ChannelName: ...
324
+
100
325
  class ChannelParams:
101
326
  @property
102
327
  def active(self) -> builtins.bool: ...
@@ -270,11 +495,11 @@ class FreqDomainArray:
270
495
  @property
271
496
  def data(self) -> typing.Any: ...
272
497
  @property
273
- def id(self) -> AnalysisID: ...
498
+ def id(self) -> AnalysisId: ...
274
499
  @property
275
500
  def unit(self) -> Unit: ...
276
501
  def clone_metadata(
277
- self, id: AnalysisID, unit: Unit, new_data: typing.Any
502
+ self, id: AnalysisId, unit: Unit, new_data: typing.Any
278
503
  ) -> FreqDomainArray:
279
504
  r"""
280
505
  Copy everything from another object except replace the data
@@ -644,18 +869,7 @@ class ScopeViewHandle:
644
869
  Update the span of a view. This is a pythonic wrapper. Rust code should call update_online() or update_fixed().
645
870
  """
646
871
  def close(self) -> None: ...
647
- def get_result_store(self) -> builtins.dict[AnalysisID, typing.Any]: ...
648
-
649
- class SetMember:
650
- class Channel(SetMember):
651
- __match_args__ = ("_0",)
652
- @property
653
- def _0(self) -> Channel: ...
654
- def __new__(cls, _0: Channel) -> SetMember.Channel: ...
655
- def __len__(self) -> builtins.int: ...
656
- def __getitem__(self, key: builtins.int) -> typing.Any: ...
657
-
658
- ...
872
+ def get_result_store(self) -> builtins.dict[AnalysisId, typing.Any]: ...
659
873
 
660
874
  class SimpleUnit:
661
875
  r"""
@@ -1057,7 +1271,7 @@ class TimeDomainArray:
1057
1271
  @property
1058
1272
  def total_gap_size(self) -> builtins.int: ...
1059
1273
  @property
1060
- def id(self) -> AnalysisID: ...
1274
+ def id(self) -> AnalysisId: ...
1061
1275
  @property
1062
1276
  def unit(self) -> Unit: ...
1063
1277
  @property
@@ -1077,6 +1291,13 @@ class TimeDomainArray:
1077
1291
  but the return value can be greater or equal to the length of the array
1078
1292
  and therefore out of bounds
1079
1293
  """
1294
+ def timestamps(self) -> builtins.list[PipInstant]: ...
1295
+ def delta_t_seconds(self, t0: PipInstant) -> builtins.list[builtins.float]:
1296
+ r"""
1297
+ Get the timestamps transformed into a delta time from some t0
1298
+ return values in seconds as floating point
1299
+ Useful for getting relative timestamps to a point of time on a graph
1300
+ """
1080
1301
 
1081
1302
  class Timeline: ...
1082
1303
 
@@ -1110,6 +1331,10 @@ class ViewSet:
1110
1331
  for turning a simple list of channel names into a ViewSet with
1111
1332
  unresolved channel names
1112
1333
  """
1334
+ @staticmethod
1335
+ def from_analysis_request_ids(
1336
+ request_ids: builtins.set[AnalysisRequestId],
1337
+ ) -> ViewSet: ...
1113
1338
  def has_unresolved_channels(self) -> builtins.bool: ...
1114
1339
  def to_resolved_channel_names(self) -> builtins.list[builtins.str]:
1115
1340
  r"""
@@ -7,12 +7,12 @@
7
7
  //! This pipeline will only calculate one value at function call at a time.
8
8
 
9
9
  use crate::pipe::Pipe1;
10
- use crate::{PipeData, PipeResult, PipelineOutput, PipelineSubscriber};
10
+ use crate::{PipeData, PipeResult, PipelineError, PipelineOutput, PipelineSubscriber};
11
11
  use futures::FutureExt;
12
12
  use futures::future::BoxFuture;
13
13
  use std::sync::Arc;
14
14
  use tokio::runtime::Handle;
15
- use user_messages::UserMsgProvider;
15
+ use user_messages::{UserMsgProvider, panic_report};
16
16
 
17
17
  type AccumGenFn<I, T, U> =
18
18
  fn(Box<dyn UserMsgProvider>, Arc<I>, Option<Arc<T>>, n: f64) -> (Arc<T>, f64, PipeResult<U>);
@@ -37,8 +37,18 @@ fn accum_generate<I: PipeData, T: PipeData, U: PipeData>(
37
37
  let inp = input.clone();
38
38
  let accum_val = state.value.clone();
39
39
  let n = state.n;
40
- let jh = Handle::current().spawn_blocking(move || g(rc, inp.value, accum_val, n));
41
- let (value, new_n, output) = jh.await.unwrap();
40
+ let rc2 = rc.ump_clone();
41
+ let jh = Handle::current().spawn_blocking(move || g(rc2, inp.value, accum_val, n));
42
+ let (value, new_n, output) = match jh.await {
43
+ Ok(v) => v,
44
+ Err(e) => {
45
+ panic_report!(
46
+ rc.user_message_handle(),
47
+ "Error while running accumulator calculation thread: {}",
48
+ e.to_string()
49
+ );
50
+ }
51
+ };
42
52
  state.n = new_n;
43
53
  state.value = Some(value.clone());
44
54
  output
@@ -52,7 +62,7 @@ impl<I: PipeData, T: PipeData, U: PipeData> Accumulator<I, T, U> {
52
62
  name: String,
53
63
  input: &PipelineSubscriber<I>,
54
64
  generate: AccumGenFn<I, T, U>,
55
- ) -> PipelineSubscriber<U> {
65
+ ) -> Result<PipelineSubscriber<U>, PipelineError> {
56
66
  let p = Accumulator {
57
67
  n: 1.0, // start at 1. The generator is responsible for incrementing if needed.
58
68
  generate_ptr: generate,