dttlib 0.7.4__tar.gz → 0.7.5__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.
Potentially problematic release.
This version of dttlib might be problematic. Click here for more details.
- {dttlib-0.7.4 → dttlib-0.7.5}/Cargo.lock +7 -7
- {dttlib-0.7.4 → dttlib-0.7.5}/Cargo.toml +2 -2
- {dttlib-0.7.4 → dttlib-0.7.5}/PKG-INFO +1 -1
- {dttlib-0.7.4 → dttlib-0.7.5}/build.rs +6 -5
- dttlib-0.7.5/cycle.sh +16 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/dtt_macros/src/builder_lite.rs +16 -16
- {dttlib-0.7.4 → dttlib-0.7.5}/dtt_macros/src/lib.rs +3 -3
- {dttlib-0.7.4 → dttlib-0.7.5}/pipeline_macros/src/box_async.rs +6 -7
- {dttlib-0.7.4 → dttlib-0.7.5}/pipeline_macros/src/derive.rs +9 -8
- {dttlib-0.7.4 → dttlib-0.7.5}/pipeline_macros/src/lib.rs +3 -3
- {dttlib-0.7.4 → dttlib-0.7.5}/pipelines/src/accumulator.rs +22 -21
- {dttlib-0.7.4 → dttlib-0.7.5}/pipelines/src/complex.rs +1 -2
- dttlib-0.7.5/pipelines/src/lib.rs +472 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pipelines/src/pipe.rs +161 -102
- {dttlib-0.7.4 → dttlib-0.7.5}/pipelines/src/publisher.rs +43 -41
- {dttlib-0.7.4 → dttlib-0.7.5}/pipelines/src/python.rs +57 -46
- {dttlib-0.7.4 → dttlib-0.7.5}/pipelines/src/stateless/mod.rs +172 -71
- dttlib-0.7.5/pipelines/src/stateless/pure.rs +89 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pipelines/src/unsynced_pipe.rs +196 -103
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/arithmetic/average.rs +26 -23
- dttlib-0.7.5/src/analysis/arithmetic/mod.rs +5 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/arithmetic/real.rs +16 -11
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/arithmetic/sqrt.rs +11 -8
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/conditioning/convert.rs +48 -50
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/conditioning/decimate.rs +152 -99
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/conditioning/heterodyne.rs +27 -17
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/conditioning/mod.rs +120 -93
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/conditioning/partition.rs +53 -41
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/conditioning/subtract_start_average.rs +49 -34
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/conditioning/time_delay.rs +64 -46
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/conditioning/time_shift.rs +17 -10
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/conditioning/trim.rs +40 -36
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/custom/mod.rs +0 -2
- dttlib-0.7.5/src/analysis/fourier_tools/asd.rs +55 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/fourier_tools/csd.rs +42 -21
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/fourier_tools/fft.rs +44 -37
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/fourier_tools/mod.rs +4 -4
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/general/identity.rs +3 -3
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/general/into.rs +4 -4
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/general/maybe_into.rs +17 -8
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/general/mod.rs +1 -1
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/graph/analysis.rs +303 -200
- dttlib-0.7.5/src/analysis/graph/graph_to_pipeline.rs +687 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/graph/mod.rs +1 -2
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/graph/scheme.rs +45 -30
- dttlib-0.7.5/src/analysis/graph/view_graph_to_pipeline.rs +568 -0
- dttlib-0.7.5/src/analysis/mod.rs +9 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/result/analysis_id.rs +45 -52
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/result/analysis_result.rs +83 -90
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/result/edge_data_type.rs +74 -29
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/result/freq_domain_value.rs +30 -44
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/result/mod.rs +10 -12
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/result/record.rs +36 -41
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/result/time_domain_value.rs +32 -49
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/scope/downsample.rs +102 -80
- dttlib-0.7.5/src/analysis/scope/inline_fft.rs +224 -0
- dttlib-0.7.5/src/analysis/scope/mod.rs +4 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/scope/splice.rs +35 -31
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/types/frequency_domain_array.rs +84 -77
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/types/linear.rs +10 -6
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/types/math_traits.rs +4 -4
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/types/mod.rs +20 -19
- {dttlib-0.7.4 → dttlib-0.7.5}/src/analysis/types/time_domain_array.rs +174 -167
- {dttlib-0.7.4 → dttlib-0.7.5}/src/bin/stub_gen.rs +1 -1
- {dttlib-0.7.4 → dttlib-0.7.5}/src/c_math.rs +8 -8
- {dttlib-0.7.4 → dttlib-0.7.5}/src/constraints/mod.rs +17 -10
- {dttlib-0.7.4 → dttlib-0.7.5}/src/data_source/buffer.rs +4 -5
- {dttlib-0.7.4 → dttlib-0.7.5}/src/data_source/channel_query.rs +28 -26
- {dttlib-0.7.4 → dttlib-0.7.5}/src/data_source/data_distributor.rs +35 -24
- {dttlib-0.7.4 → dttlib-0.7.5}/src/data_source/data_source_pipeline.rs +20 -21
- {dttlib-0.7.4 → dttlib-0.7.5}/src/data_source/dummy.rs +107 -39
- {dttlib-0.7.4 → dttlib-0.7.5}/src/data_source/mod.rs +63 -50
- {dttlib-0.7.4 → dttlib-0.7.5}/src/data_source/nds2_direct.rs +102 -61
- {dttlib-0.7.4 → dttlib-0.7.5}/src/data_source/nds_cache/gap_handler.rs +54 -33
- {dttlib-0.7.4 → dttlib-0.7.5}/src/data_source/nds_cache/mod.rs +210 -160
- {dttlib-0.7.4 → dttlib-0.7.5}/src/data_source/no_data.rs +31 -16
- dttlib-0.7.5/src/data_source/random.rs +223 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/src/errors.rs +4 -7
- {dttlib-0.7.4 → dttlib-0.7.5}/src/gds_sigp/asd.rs +17 -5
- {dttlib-0.7.4 → dttlib-0.7.5}/src/gds_sigp/decimate.rs +95 -66
- {dttlib-0.7.4 → dttlib-0.7.5}/src/gds_sigp/fft.rs +55 -45
- dttlib-0.7.5/src/gds_sigp/heterodyne.rs +18 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/src/lib.rs +20 -34
- {dttlib-0.7.4 → dttlib-0.7.5}/src/params/channel_params/channel.rs +34 -48
- {dttlib-0.7.4 → dttlib-0.7.5}/src/params/channel_params/channel_id.rs +42 -34
- dttlib-0.7.5/src/params/channel_params/channel_settings.rs +352 -0
- dttlib-0.7.5/src/params/channel_params/channel_type.rs +84 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/src/params/channel_params/decimation_parameters/mod.rs +48 -37
- {dttlib-0.7.4 → dttlib-0.7.5}/src/params/channel_params/mod.rs +15 -15
- {dttlib-0.7.4 → dttlib-0.7.5}/src/params/channel_params/nds_data_type.rs +40 -46
- {dttlib-0.7.4 → dttlib-0.7.5}/src/params/channel_params/unit.rs +44 -46
- dttlib-0.7.5/src/params/constraints/mod.rs +55 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/src/params/custom_pipeline.rs +38 -22
- {dttlib-0.7.4 → dttlib-0.7.5}/src/params/excitation_params.rs +3 -5
- {dttlib-0.7.4 → dttlib-0.7.5}/src/params/mod.rs +2 -3
- {dttlib-0.7.4 → dttlib-0.7.5}/src/params/test_params.rs +25 -37
- {dttlib-0.7.4 → dttlib-0.7.5}/src/python/dtt_types.rs +8 -13
- {dttlib-0.7.4 → dttlib-0.7.5}/src/python/dttlib.rs +21 -18
- {dttlib-0.7.4 → dttlib-0.7.5}/src/python/mod.rs +2 -3
- {dttlib-0.7.4 → dttlib-0.7.5}/src/run.rs +66 -58
- {dttlib-0.7.4 → dttlib-0.7.5}/src/run_context.rs +10 -17
- {dttlib-0.7.4 → dttlib-0.7.5}/src/scope_view/mod.rs +133 -102
- {dttlib-0.7.4 → dttlib-0.7.5}/src/scope_view/pipeline_graph.rs +48 -31
- {dttlib-0.7.4 → dttlib-0.7.5}/src/scope_view/view_set.rs +32 -32
- dttlib-0.7.5/src/timeline/constraints.rs +64 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/src/timeline/ffttools.rs +138 -83
- {dttlib-0.7.4 → dttlib-0.7.5}/src/timeline/general.rs +46 -27
- {dttlib-0.7.4 → dttlib-0.7.5}/src/timeline/init.rs +70 -66
- {dttlib-0.7.4 → dttlib-0.7.5}/src/timeline/mod.rs +88 -71
- {dttlib-0.7.4 → dttlib-0.7.5}/src/tokio_setup.rs +4 -8
- dttlib-0.7.5/src/user/mod.rs +932 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/user_messages/src/lib.rs +72 -78
- dttlib-0.7.4/pipelines/src/lib.rs +0 -435
- dttlib-0.7.4/pipelines/src/stateless/pure.rs +0 -81
- dttlib-0.7.4/src/analysis/arithmetic/mod.rs +0 -5
- dttlib-0.7.4/src/analysis/fourier_tools/asd.rs +0 -53
- dttlib-0.7.4/src/analysis/graph/graph_to_pipeline.rs +0 -495
- dttlib-0.7.4/src/analysis/graph/view_graph_to_pipeline.rs +0 -442
- dttlib-0.7.4/src/analysis/mod.rs +0 -9
- dttlib-0.7.4/src/analysis/scope/inline_fft.rs +0 -192
- dttlib-0.7.4/src/analysis/scope/mod.rs +0 -5
- dttlib-0.7.4/src/data_source/random.rs +0 -153
- dttlib-0.7.4/src/gds_sigp/heterodyne.rs +0 -16
- dttlib-0.7.4/src/params/channel_params/channel_settings.rs +0 -270
- dttlib-0.7.4/src/params/channel_params/channel_type.rs +0 -91
- dttlib-0.7.4/src/params/constraints/mod.rs +0 -70
- dttlib-0.7.4/src/timeline/constraints.rs +0 -70
- dttlib-0.7.4/src/user/mod.rs +0 -885
- {dttlib-0.7.4 → dttlib-0.7.5}/.cargo/config.toml +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/.devcontainer/Dockerfile +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/.devcontainer/devcontainer.json +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/.gitignore +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/.gitlab-ci.yml +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/.python-version +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/CHANGES.md +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/COPYING +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/COPYING-GPL-3 +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/PUBLISH.md +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/README.md +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/bacon.toml +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/build_wheel.sh +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/devel_bullseye.sh +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/docs/cache_design.md +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/dtt_macros/Cargo.toml +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/dttlib.pyi +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/gen_stub +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/include/nds2.h +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/linked_libraries.json +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pipeline_macros/Cargo.toml +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pipeline_macros/src/gen.rs +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pipelines/Cargo.toml +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pipelines/src/README.md +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/publish_bullseye.sh +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pypi_build/build.sh +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pypi_build/build_docker.sh +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pypi_build/build_docker_base.sh +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pypi_build/build_docker_debian.sh +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pypi_build/dttbuild/Dockerfile +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pypi_build/dttbuild/install_python.sh +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pypi_build/dttbuild_base/Dockerfile +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pypi_build/dttbuild_base/build_clang.sh +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pypi_build/dttbuild_base_conda/Dockerfile +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pypi_build/dttbuild_base_conda/dttbuild.yaml +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pypi_build/dttbuild_debian/Dockerfile +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pypi_build/py_versions.sh +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pypi_build.sh +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pypi_upload.sh +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/pyproject.toml +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/run.py +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/setup_conda.sh +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/src/gds_sigp/mod.rs +1 -1
- {dttlib-0.7.4 → dttlib-0.7.5}/test_dtt.py +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/test_dttlib.py +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/user_messages/Cargo.toml +0 -0
- {dttlib-0.7.4 → dttlib-0.7.5}/wrapper.h +0 -0
|
@@ -1408,7 +1408,7 @@ checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"
|
|
|
1408
1408
|
|
|
1409
1409
|
[[package]]
|
|
1410
1410
|
name = "dtt_macros"
|
|
1411
|
-
version = "0.7.
|
|
1411
|
+
version = "0.7.5"
|
|
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.7.
|
|
1420
|
+
version = "0.7.5"
|
|
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=
|
|
2972
|
+
source = "git+https://git.ligo.org/cds/software/cr_tools/nds-cache-rs.git?tag=dev_14#86f9f808047a3dc2a807a841e749236065cf5943"
|
|
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.7.
|
|
3011
|
+
version = "0.7.5"
|
|
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.7.
|
|
3575
|
+
version = "0.7.5"
|
|
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.7.
|
|
3584
|
+
version = "0.7.5"
|
|
3585
3585
|
dependencies = [
|
|
3586
3586
|
"futures",
|
|
3587
3587
|
"num-complex",
|
|
@@ -4860,7 +4860,7 @@ dependencies = [
|
|
|
4860
4860
|
|
|
4861
4861
|
[[package]]
|
|
4862
4862
|
name = "user_messages"
|
|
4863
|
-
version = "0.7.
|
|
4863
|
+
version = "0.7.5"
|
|
4864
4864
|
dependencies = [
|
|
4865
4865
|
"log",
|
|
4866
4866
|
"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.7.
|
|
10
|
+
version = "0.7.5"
|
|
11
11
|
|
|
12
12
|
[package]
|
|
13
13
|
name = "dttlib"
|
|
@@ -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_c", optional = true }
|
|
85
|
-
nds-cache-rs = { git = "https://git.ligo.org/cds/software/cr_tools/nds-cache-rs.git", tag = "
|
|
85
|
+
nds-cache-rs = { git = "https://git.ligo.org/cds/software/cr_tools/nds-cache-rs.git", tag = "dev_14"}
|
|
86
86
|
ligo_hires_gps_time = {workspace = true}
|
|
87
87
|
|
|
88
88
|
# workspace
|
|
@@ -2,7 +2,6 @@ use std::env;
|
|
|
2
2
|
use std::path::PathBuf;
|
|
3
3
|
|
|
4
4
|
fn main() {
|
|
5
|
-
|
|
6
5
|
//pyo3_build_config::add_extension_module_link_args();
|
|
7
6
|
|
|
8
7
|
// for debug only
|
|
@@ -41,11 +40,13 @@ fn main() {
|
|
|
41
40
|
// println!("cargo:rustc-link-lib={}", &python_config.lib_name.as_ref().unwrap());
|
|
42
41
|
// }
|
|
43
42
|
|
|
44
|
-
let bindings = bindgen::Builder::default()
|
|
45
|
-
.header("wrapper.h")
|
|
43
|
+
let bindings = bindgen::Builder::default()
|
|
44
|
+
.header("wrapper.h")
|
|
46
45
|
.generate()
|
|
47
46
|
.expect("Unable to generate bindings");
|
|
48
47
|
|
|
49
48
|
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
|
|
50
|
-
bindings
|
|
51
|
-
|
|
49
|
+
bindings
|
|
50
|
+
.write_to_file(out_path.join("bindings.rs"))
|
|
51
|
+
.expect("Couldn't write bindings");
|
|
52
|
+
}
|
dttlib-0.7.5/cycle.sh
ADDED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
//! create builder functions for every field in a struct
|
|
2
2
|
//! except those with #[no_builder] attribute
|
|
3
|
-
//!
|
|
3
|
+
//!
|
|
4
4
|
//! # Examples
|
|
5
|
-
//!
|
|
5
|
+
//!
|
|
6
6
|
//! ```
|
|
7
7
|
//! #[builder_lite]
|
|
8
8
|
//! struct MyStruct {
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
//! field_d: DontModify
|
|
15
15
|
//! }
|
|
16
16
|
//! ```
|
|
17
|
-
//!
|
|
17
|
+
//!
|
|
18
18
|
//! expands to
|
|
19
|
-
//!
|
|
19
|
+
//!
|
|
20
20
|
//! ```
|
|
21
21
|
//! struct MyStruct {
|
|
22
22
|
//! field_a: i32,
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
//! field_c: NeedsCustomFunc,
|
|
25
25
|
//! field_d: DontModify
|
|
26
26
|
//! }
|
|
27
|
-
//!
|
|
27
|
+
//!
|
|
28
28
|
//! impl MyStruct {
|
|
29
29
|
//! pub fn with_field_a(mut self, field_a: i32) -> Self {
|
|
30
30
|
//! self.field_a = field_a;
|
|
@@ -40,10 +40,9 @@
|
|
|
40
40
|
|
|
41
41
|
use proc_macro::TokenStream;
|
|
42
42
|
use proc_macro2::Ident;
|
|
43
|
-
use quote::{quote, quote_spanned
|
|
44
|
-
use syn::{ItemStruct, parse_macro_input};
|
|
43
|
+
use quote::{ToTokens, quote, quote_spanned};
|
|
45
44
|
use syn::spanned::Spanned;
|
|
46
|
-
|
|
45
|
+
use syn::{ItemStruct, parse_macro_input};
|
|
47
46
|
|
|
48
47
|
// return index into field attributes
|
|
49
48
|
fn find_attribute(attrs: &Vec<syn::Attribute>, attr_name: &str) -> Vec<usize> {
|
|
@@ -57,8 +56,7 @@ fn find_attribute(attrs: &Vec<syn::Attribute>, attr_name: &str) -> Vec<usize> {
|
|
|
57
56
|
indices
|
|
58
57
|
}
|
|
59
58
|
|
|
60
|
-
|
|
61
|
-
pub (crate) fn impl_builder_lite(item: TokenStream) -> TokenStream {
|
|
59
|
+
pub(crate) fn impl_builder_lite(item: TokenStream) -> TokenStream {
|
|
62
60
|
let mut strct = parse_macro_input!(item as ItemStruct);
|
|
63
61
|
|
|
64
62
|
let strct_name = &strct.ident.to_token_stream();
|
|
@@ -78,7 +76,8 @@ pub (crate) fn impl_builder_lite(item: TokenStream) -> TokenStream {
|
|
|
78
76
|
|
|
79
77
|
let field_name = &field.ident.clone().into_token_stream();
|
|
80
78
|
let field_type = &field.ty.clone().into_token_stream();
|
|
81
|
-
let func_name =
|
|
79
|
+
let func_name =
|
|
80
|
+
Ident::new(format!("with_{}", field_name).as_str(), field.span()).to_token_stream();
|
|
82
81
|
|
|
83
82
|
builder_funcs.extend(quote_spanned! {
|
|
84
83
|
field.ident.span()=>
|
|
@@ -94,10 +93,11 @@ pub (crate) fn impl_builder_lite(item: TokenStream) -> TokenStream {
|
|
|
94
93
|
let struct_body = strct.clone().into_token_stream();
|
|
95
94
|
|
|
96
95
|
quote! {
|
|
97
|
-
|
|
96
|
+
#struct_body
|
|
98
97
|
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
impl #strct_name {
|
|
99
|
+
#builder_funcs
|
|
100
|
+
}
|
|
101
101
|
}
|
|
102
|
-
|
|
103
|
-
}
|
|
102
|
+
.into()
|
|
103
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
mod builder_lite;
|
|
2
2
|
|
|
3
3
|
extern crate proc_macro;
|
|
4
|
-
use proc_macro::TokenStream;
|
|
5
4
|
use crate::builder_lite::impl_builder_lite;
|
|
5
|
+
use proc_macro::TokenStream;
|
|
6
6
|
|
|
7
7
|
/// Does nothing
|
|
8
8
|
/// This macro is needed so that `#[staticmethod]` method attribute used by pyo3 still builds
|
|
@@ -53,9 +53,9 @@ pub fn builder_lite(_attr: TokenStream, input: TokenStream) -> TokenStream {
|
|
|
53
53
|
|
|
54
54
|
/// Helper attribute for build_lite.
|
|
55
55
|
/// Fields marked with no_builder don't get a builder function.
|
|
56
|
-
///
|
|
56
|
+
///
|
|
57
57
|
/// Useful for private fields or fields that need a custom builder.
|
|
58
58
|
#[proc_macro_attribute]
|
|
59
59
|
pub fn no_builder(_attr: TokenStream, input: TokenStream) -> TokenStream {
|
|
60
60
|
input
|
|
61
|
-
}
|
|
61
|
+
}
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
use proc_macro::TokenStream;
|
|
2
2
|
use quote::{quote, quote_spanned};
|
|
3
|
-
use syn::{ItemFn, parse_macro_input, parse_quote, ReturnType,};
|
|
4
3
|
use syn::spanned::Spanned;
|
|
4
|
+
use syn::{ItemFn, ReturnType, parse_macro_input, parse_quote};
|
|
5
5
|
|
|
6
6
|
//convert synchronous generators with arbitrary return values into async generators
|
|
7
7
|
// with the correct return value
|
|
8
8
|
// Function
|
|
9
|
-
pub
|
|
9
|
+
pub(crate) fn impl_box_async(item: TokenStream) -> TokenStream {
|
|
10
10
|
let fun: ItemFn = parse_macro_input!(item as ItemFn);
|
|
11
11
|
|
|
12
12
|
// try to get the underlying PipeData type
|
|
13
13
|
let ret_type = if let ReturnType::Type(_, bt) = &fun.sig.output {
|
|
14
14
|
*bt.clone()
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
15
|
+
} else {
|
|
17
16
|
return quote_spanned!(
|
|
18
17
|
fun.sig.output.span() =>
|
|
19
18
|
compile_error!("A generator function must have an output that is Into<PipeResult<PipeData>>.")
|
|
@@ -25,13 +24,13 @@ pub (crate) fn impl_box_async(item: TokenStream) -> TokenStream {
|
|
|
25
24
|
-> futures::future::BoxFuture<'_, #ret_type >
|
|
26
25
|
);
|
|
27
26
|
|
|
28
|
-
|
|
29
27
|
let mut new_sig = fun.sig.clone();
|
|
30
28
|
new_sig.output = new_out;
|
|
31
|
-
let body = &
|
|
29
|
+
let body = &fun.block;
|
|
32
30
|
quote!(
|
|
33
31
|
#new_sig {
|
|
34
32
|
async move { #body }.boxed()
|
|
35
33
|
}
|
|
36
|
-
)
|
|
34
|
+
)
|
|
35
|
+
.into()
|
|
37
36
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
use proc_macro::TokenStream;
|
|
2
2
|
use proc_macro2::Span;
|
|
3
|
-
use syn::{GenericParam, Generics, ItemStruct, parse_macro_input};
|
|
4
|
-
use syn::Ident;
|
|
5
3
|
use quote::quote;
|
|
4
|
+
use syn::Ident;
|
|
6
5
|
use syn::punctuated::Punctuated;
|
|
7
6
|
use syn::token::{Comma, Gt, Lt};
|
|
7
|
+
use syn::{GenericParam, Generics, ItemStruct, parse_macro_input};
|
|
8
8
|
|
|
9
9
|
/// create an empty implementation for a flag or super trait
|
|
10
|
-
pub
|
|
10
|
+
pub(crate) fn empty_derive(item: TokenStream, tr: &str) -> TokenStream {
|
|
11
11
|
let st: ItemStruct = parse_macro_input!(item);
|
|
12
12
|
|
|
13
13
|
let trait_ident = Ident::new(tr, Span::call_site());
|
|
@@ -31,9 +31,9 @@ pub (crate) fn empty_derive(item: TokenStream, tr: &str) -> TokenStream {
|
|
|
31
31
|
let mut new_t = t.clone();
|
|
32
32
|
new_t.bounds.clear();
|
|
33
33
|
GenericParam::Type(new_t)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
}
|
|
35
|
+
_ => generic.clone(),
|
|
36
|
+
};
|
|
37
37
|
angle_args.push(new_gp);
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -46,5 +46,6 @@ pub (crate) fn empty_derive(item: TokenStream, tr: &str) -> TokenStream {
|
|
|
46
46
|
|
|
47
47
|
quote!(
|
|
48
48
|
impl #st_gen #trait_ident for #st_id #new_gen {}
|
|
49
|
-
)
|
|
50
|
-
|
|
49
|
+
)
|
|
50
|
+
.into()
|
|
51
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
mod derive;
|
|
2
1
|
mod box_async;
|
|
2
|
+
mod derive;
|
|
3
3
|
|
|
4
4
|
extern crate proc_macro;
|
|
5
|
-
use proc_macro::TokenStream;
|
|
6
5
|
use crate::box_async::impl_box_async;
|
|
7
6
|
use crate::derive::empty_derive;
|
|
7
|
+
use proc_macro::TokenStream;
|
|
8
8
|
|
|
9
9
|
#[proc_macro_derive(StateData)]
|
|
10
10
|
pub fn state_data(input: TokenStream) -> TokenStream {
|
|
@@ -21,4 +21,4 @@ pub fn config_data(input: TokenStream) -> TokenStream {
|
|
|
21
21
|
pub fn box_async(_attr: TokenStream, input: TokenStream) -> TokenStream {
|
|
22
22
|
impl_box_async(input)
|
|
23
23
|
//input
|
|
24
|
-
}
|
|
24
|
+
}
|
|
@@ -6,16 +6,16 @@
|
|
|
6
6
|
//!
|
|
7
7
|
//! This pipeline will only calculate one value at function call at a time.
|
|
8
8
|
|
|
9
|
-
use
|
|
10
|
-
use
|
|
9
|
+
use crate::pipe::Pipe1;
|
|
10
|
+
use crate::{PipeData, PipeResult, PipelineOutput, PipelineSubscriber};
|
|
11
11
|
use futures::FutureExt;
|
|
12
|
+
use futures::future::BoxFuture;
|
|
13
|
+
use std::sync::Arc;
|
|
12
14
|
use tokio::runtime::Handle;
|
|
13
|
-
use crate::{PipeData, PipelineOutput, PipelineSubscriber, PipeResult};
|
|
14
|
-
use crate::pipe::Pipe1;
|
|
15
15
|
use user_messages::UserMsgProvider;
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
type AccumGenFn<I, T, U> =
|
|
18
|
+
fn(Box<dyn UserMsgProvider>, Arc<I>, Option<Arc<T>>, n: f64) -> (Arc<T>, f64, PipeResult<U>);
|
|
19
19
|
|
|
20
20
|
/// # Accumulator
|
|
21
21
|
/// a 1-input accumulator produces its new value for each segment as a pipeline output
|
|
@@ -27,36 +27,37 @@ pub struct Accumulator<I: PipeData, T: PipeData, U: PipeData> {
|
|
|
27
27
|
n: f64,
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
fn accum_generate<I: PipeData, T:PipeData, U: PipeData>(
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
fn accum_generate<I: PipeData, T: PipeData, U: PipeData>(
|
|
31
|
+
rc: Box<dyn UserMsgProvider>,
|
|
32
|
+
state: &'_ mut Accumulator<I, T, U>,
|
|
33
|
+
input: PipelineOutput<I>,
|
|
34
|
+
) -> BoxFuture<'_, PipeResult<U>> {
|
|
33
35
|
async move {
|
|
34
36
|
let g = state.generate_ptr;
|
|
35
37
|
let inp = input.clone();
|
|
36
38
|
let accum_val = state.value.clone();
|
|
37
39
|
let n = state.n;
|
|
38
|
-
let jh = Handle::current().spawn_blocking(
|
|
39
|
-
move || {
|
|
40
|
-
g(rc, inp.value, accum_val, n)
|
|
41
|
-
}
|
|
42
|
-
);
|
|
40
|
+
let jh = Handle::current().spawn_blocking(move || g(rc, inp.value, accum_val, n));
|
|
43
41
|
let (value, new_n, output) = jh.await.unwrap();
|
|
44
42
|
state.n = new_n;
|
|
45
43
|
state.value = Some(value.clone());
|
|
46
44
|
output
|
|
47
|
-
}
|
|
45
|
+
}
|
|
46
|
+
.boxed()
|
|
48
47
|
}
|
|
49
48
|
|
|
50
|
-
|
|
51
49
|
impl<I: PipeData, T: PipeData, U: PipeData> Accumulator<I, T, U> {
|
|
52
|
-
pub async fn start(
|
|
53
|
-
|
|
50
|
+
pub async fn start(
|
|
51
|
+
rc: Box<dyn UserMsgProvider>,
|
|
52
|
+
name: String,
|
|
53
|
+
input: &PipelineSubscriber<I>,
|
|
54
|
+
generate: AccumGenFn<I, T, U>,
|
|
55
|
+
) -> PipelineSubscriber<U> {
|
|
54
56
|
let p = Accumulator {
|
|
55
|
-
n: 1.0,
|
|
57
|
+
n: 1.0, // start at 1. The generator is responsible for incrementing if needed.
|
|
56
58
|
generate_ptr: generate,
|
|
57
59
|
value: None,
|
|
58
60
|
};
|
|
59
|
-
Pipe1::create(rc, name, accum_generate::<I,T,U>, p, None, None, input).await
|
|
61
|
+
Pipe1::create(rc, name, accum_generate::<I, T, U>, p, None, None, input).await
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
|
-
|