diff --git a/index.html b/index.html index 661903e0..80f0a009 100644 --- a/index.html +++ b/index.html @@ -2,10 +2,10 @@ - Redirecting to master branch - - - + Redirecting to main branch + + + \ No newline at end of file diff --git a/main/.buildinfo b/main/.buildinfo index 8a569ce1..121b0321 100644 --- a/main/.buildinfo +++ b/main/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 383afb9c63caf10cc1381549f29c53b5 +config: 8a9bc61ff2508878a9b7747be79961e7 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/main/.doctrees/explanations.doctree b/main/.doctrees/explanations.doctree index 164d0e07..8b4bfe24 100644 Binary files a/main/.doctrees/explanations.doctree and b/main/.doctrees/explanations.doctree differ diff --git a/main/.doctrees/explanations/decisions.doctree b/main/.doctrees/explanations/decisions.doctree new file mode 100644 index 00000000..d6f515b5 Binary files /dev/null and b/main/.doctrees/explanations/decisions.doctree differ diff --git a/main/.doctrees/explanations/decisions/0001-record-architecture-decisions.doctree b/main/.doctrees/explanations/decisions/0001-record-architecture-decisions.doctree new file mode 100644 index 00000000..6ea5245f Binary files /dev/null and b/main/.doctrees/explanations/decisions/0001-record-architecture-decisions.doctree differ diff --git a/main/.doctrees/explanations/decisions/0002-switched-to-python-copier-template.doctree b/main/.doctrees/explanations/decisions/0002-switched-to-python-copier-template.doctree new file mode 100644 index 00000000..de1bedec Binary files /dev/null and b/main/.doctrees/explanations/decisions/0002-switched-to-python-copier-template.doctree differ diff --git a/main/.doctrees/explanations/technical-terms.doctree b/main/.doctrees/explanations/technical-terms.doctree index fcaef7cb..10cc71e1 100644 Binary files a/main/.doctrees/explanations/technical-terms.doctree and b/main/.doctrees/explanations/technical-terms.doctree differ diff --git a/main/.doctrees/explanations/why-squash-can-change-path.doctree b/main/.doctrees/explanations/why-squash-can-change-path.doctree index bc48bb2e..459f0a2e 100644 Binary files a/main/.doctrees/explanations/why-squash-can-change-path.doctree and b/main/.doctrees/explanations/why-squash-can-change-path.doctree differ diff --git a/main/.doctrees/explanations/why-stack-frames.doctree b/main/.doctrees/explanations/why-stack-frames.doctree index 040d1b2f..c7979996 100644 Binary files a/main/.doctrees/explanations/why-stack-frames.doctree and b/main/.doctrees/explanations/why-stack-frames.doctree differ diff --git a/main/.doctrees/how-to.doctree b/main/.doctrees/how-to.doctree index 4d117f60..35ea7307 100644 Binary files a/main/.doctrees/how-to.doctree and b/main/.doctrees/how-to.doctree differ diff --git a/main/.doctrees/how-to/contribute.doctree b/main/.doctrees/how-to/contribute.doctree new file mode 100644 index 00000000..367dc044 Binary files /dev/null and b/main/.doctrees/how-to/contribute.doctree differ diff --git a/main/.doctrees/how-to/iterate-a-spec.doctree b/main/.doctrees/how-to/iterate-a-spec.doctree index 82f6a1c6..d025cd5f 100644 Binary files a/main/.doctrees/how-to/iterate-a-spec.doctree and b/main/.doctrees/how-to/iterate-a-spec.doctree differ diff --git a/main/.doctrees/how-to/run-container.doctree b/main/.doctrees/how-to/run-container.doctree new file mode 100644 index 00000000..d74b6226 Binary files /dev/null and b/main/.doctrees/how-to/run-container.doctree differ diff --git a/main/.doctrees/how-to/serialize-a-spec.doctree b/main/.doctrees/how-to/serialize-a-spec.doctree index 976dca0d..53b77408 100644 Binary files a/main/.doctrees/how-to/serialize-a-spec.doctree and b/main/.doctrees/how-to/serialize-a-spec.doctree differ diff --git a/main/.doctrees/index.doctree b/main/.doctrees/index.doctree index 605947ed..36b54fc8 100644 Binary files a/main/.doctrees/index.doctree and b/main/.doctrees/index.doctree differ diff --git a/main/.doctrees/reference.doctree b/main/.doctrees/reference.doctree index f8d8470d..acafd0d2 100644 Binary files a/main/.doctrees/reference.doctree and b/main/.doctrees/reference.doctree differ diff --git a/main/.doctrees/reference/api.doctree b/main/.doctrees/reference/api.doctree index 69fb9ed7..74c8deaa 100644 Binary files a/main/.doctrees/reference/api.doctree and b/main/.doctrees/reference/api.doctree differ diff --git a/main/.doctrees/reference/rest_api.doctree b/main/.doctrees/reference/rest_api.doctree index 5d32cab6..4059591e 100644 Binary files a/main/.doctrees/reference/rest_api.doctree and b/main/.doctrees/reference/rest_api.doctree differ diff --git a/main/.doctrees/tutorials.doctree b/main/.doctrees/tutorials.doctree index a4886bf1..8849c895 100644 Binary files a/main/.doctrees/tutorials.doctree and b/main/.doctrees/tutorials.doctree differ diff --git a/main/.doctrees/tutorials/creating-a-spec.doctree b/main/.doctrees/tutorials/creating-a-spec.doctree index 4c0e2bf9..db87bee6 100644 Binary files a/main/.doctrees/tutorials/creating-a-spec.doctree and b/main/.doctrees/tutorials/creating-a-spec.doctree differ diff --git a/main/.doctrees/tutorials/installation.doctree b/main/.doctrees/tutorials/installation.doctree index 34c91b83..1fffde7c 100644 Binary files a/main/.doctrees/tutorials/installation.doctree and b/main/.doctrees/tutorials/installation.doctree differ diff --git a/main/.doctrees/tutorials/rest-service.doctree b/main/.doctrees/tutorials/rest-service.doctree index 4b640b06..d45f7d32 100644 Binary files a/main/.doctrees/tutorials/rest-service.doctree and b/main/.doctrees/tutorials/rest-service.doctree differ diff --git a/main/_downloads/0b4799657e877d5b1b4cacd9b2acb170/why-squash-can-change-path-3.pdf b/main/_downloads/0b4799657e877d5b1b4cacd9b2acb170/why-squash-can-change-path-3.pdf index b24de864..ef77a52d 100644 Binary files a/main/_downloads/0b4799657e877d5b1b4cacd9b2acb170/why-squash-can-change-path-3.pdf and b/main/_downloads/0b4799657e877d5b1b4cacd9b2acb170/why-squash-can-change-path-3.pdf differ diff --git a/main/_downloads/259d09caa9d289e5e3237369eb66aaf5/api-14.pdf b/main/_downloads/259d09caa9d289e5e3237369eb66aaf5/api-14.pdf index f9c73b5b..7fc270f1 100644 Binary files a/main/_downloads/259d09caa9d289e5e3237369eb66aaf5/api-14.pdf and b/main/_downloads/259d09caa9d289e5e3237369eb66aaf5/api-14.pdf differ diff --git a/main/_downloads/26cbb08b79302005a689c4e8dd87625d/api-5.pdf b/main/_downloads/26cbb08b79302005a689c4e8dd87625d/api-5.pdf index e4ba229a..22e19556 100644 Binary files a/main/_downloads/26cbb08b79302005a689c4e8dd87625d/api-5.pdf and b/main/_downloads/26cbb08b79302005a689c4e8dd87625d/api-5.pdf differ diff --git a/main/_downloads/2978570c668d252b9da1fe49a06ec7ac/api-4.py b/main/_downloads/2978570c668d252b9da1fe49a06ec7ac/api-4.py index 79f5f57d..a337b2ed 100644 --- a/main/_downloads/2978570c668d252b9da1fe49a06ec7ac/api-4.py +++ b/main/_downloads/2978570c668d252b9da1fe49a06ec7ac/api-4.py @@ -1,7 +1,9 @@ # Example Spec from scanspec.plot import plot_spec +from scanspec.regions import Ellipse from scanspec.specs import Line -spec = Line("z", 1, 2, 3) * Line("y", 3, 4, 5).zip(Line("x", 4, 5, 5)) +grid = Line("y", 3, 8, 10) * ~Line("x", 1 ,8, 10) +spec = grid & Ellipse("x", "y", 5, 5, 2, 3, 75) plot_spec(spec) \ No newline at end of file diff --git a/main/_downloads/32c9e69b107f5cd11ed75edfef7a521c/creating-a-spec-4.pdf b/main/_downloads/32c9e69b107f5cd11ed75edfef7a521c/creating-a-spec-4.pdf index dcd451a1..cab9aec9 100644 Binary files a/main/_downloads/32c9e69b107f5cd11ed75edfef7a521c/creating-a-spec-4.pdf and b/main/_downloads/32c9e69b107f5cd11ed75edfef7a521c/creating-a-spec-4.pdf differ diff --git a/main/_downloads/3f697368b6d069641068f1e1077fb6d0/api-10.pdf b/main/_downloads/3f697368b6d069641068f1e1077fb6d0/api-10.pdf index 63826e04..89db9fd2 100644 Binary files a/main/_downloads/3f697368b6d069641068f1e1077fb6d0/api-10.pdf and b/main/_downloads/3f697368b6d069641068f1e1077fb6d0/api-10.pdf differ diff --git a/main/_downloads/43c491207b6c41467113b7cb385139ba/api-13.pdf b/main/_downloads/43c491207b6c41467113b7cb385139ba/api-13.pdf index 641b4777..75de981f 100644 Binary files a/main/_downloads/43c491207b6c41467113b7cb385139ba/api-13.pdf and b/main/_downloads/43c491207b6c41467113b7cb385139ba/api-13.pdf differ diff --git a/main/_downloads/43d9474bab264cd0429cb1665f9955a8/api-15.pdf b/main/_downloads/43d9474bab264cd0429cb1665f9955a8/api-15.pdf index 97bbff14..f6a6cb31 100644 Binary files a/main/_downloads/43d9474bab264cd0429cb1665f9955a8/api-15.pdf and b/main/_downloads/43d9474bab264cd0429cb1665f9955a8/api-15.pdf differ diff --git a/main/_downloads/46002abc3e44ab78d2ec586ac55ecbd5/api-4.pdf b/main/_downloads/46002abc3e44ab78d2ec586ac55ecbd5/api-4.pdf index a7dd9580..28a4da41 100644 Binary files a/main/_downloads/46002abc3e44ab78d2ec586ac55ecbd5/api-4.pdf and b/main/_downloads/46002abc3e44ab78d2ec586ac55ecbd5/api-4.pdf differ diff --git a/main/_downloads/460d5ecae88292ff9f7461d1ce40d981/api-2.pdf b/main/_downloads/460d5ecae88292ff9f7461d1ce40d981/api-2.pdf index fa9cc33c..99c2fe03 100644 Binary files a/main/_downloads/460d5ecae88292ff9f7461d1ce40d981/api-2.pdf and b/main/_downloads/460d5ecae88292ff9f7461d1ce40d981/api-2.pdf differ diff --git a/main/_downloads/478bf00be18d7d4ce67afbd9964ddfd7/api-11.pdf b/main/_downloads/478bf00be18d7d4ce67afbd9964ddfd7/api-11.pdf index 12eaf646..ef0c9381 100644 Binary files a/main/_downloads/478bf00be18d7d4ce67afbd9964ddfd7/api-11.pdf and b/main/_downloads/478bf00be18d7d4ce67afbd9964ddfd7/api-11.pdf differ diff --git a/main/_downloads/577932ffad65c458a1e7d7b06e2d619e/api-2.png b/main/_downloads/577932ffad65c458a1e7d7b06e2d619e/api-2.png index 6cd4c9cc..39cc28ed 100644 Binary files a/main/_downloads/577932ffad65c458a1e7d7b06e2d619e/api-2.png and b/main/_downloads/577932ffad65c458a1e7d7b06e2d619e/api-2.png differ diff --git a/main/_downloads/59ccb090bb2d3360ace4709fff9b5b3b/creating-a-spec-1.pdf b/main/_downloads/59ccb090bb2d3360ace4709fff9b5b3b/creating-a-spec-1.pdf index 4657d683..fb4ace49 100644 Binary files a/main/_downloads/59ccb090bb2d3360ace4709fff9b5b3b/creating-a-spec-1.pdf and b/main/_downloads/59ccb090bb2d3360ace4709fff9b5b3b/creating-a-spec-1.pdf differ diff --git a/main/_downloads/5babad101a1fb402fa8708a1d700b2bd/api-12.pdf b/main/_downloads/5babad101a1fb402fa8708a1d700b2bd/api-12.pdf index 3e2c1fc2..afad5951 100644 Binary files a/main/_downloads/5babad101a1fb402fa8708a1d700b2bd/api-12.pdf and b/main/_downloads/5babad101a1fb402fa8708a1d700b2bd/api-12.pdf differ diff --git a/main/_downloads/5c0624426b92b4d678699185e497f06b/creating-a-spec-6.pdf b/main/_downloads/5c0624426b92b4d678699185e497f06b/creating-a-spec-6.pdf index 04d13f1c..3bd8b897 100644 Binary files a/main/_downloads/5c0624426b92b4d678699185e497f06b/creating-a-spec-6.pdf and b/main/_downloads/5c0624426b92b4d678699185e497f06b/creating-a-spec-6.pdf differ diff --git a/main/_downloads/6ac1affbbd25c62f767d0d736dcb9ac6/api-3.png b/main/_downloads/6ac1affbbd25c62f767d0d736dcb9ac6/api-3.png index e075a818..c92ffa1b 100644 Binary files a/main/_downloads/6ac1affbbd25c62f767d0d736dcb9ac6/api-3.png and b/main/_downloads/6ac1affbbd25c62f767d0d736dcb9ac6/api-3.png differ diff --git a/main/_downloads/6b2bfdefec22ee159c8ced5f7866a2cb/why-squash-can-change-path-4.pdf b/main/_downloads/6b2bfdefec22ee159c8ced5f7866a2cb/why-squash-can-change-path-4.pdf index 298fae82..6a54b0c9 100644 Binary files a/main/_downloads/6b2bfdefec22ee159c8ced5f7866a2cb/why-squash-can-change-path-4.pdf and b/main/_downloads/6b2bfdefec22ee159c8ced5f7866a2cb/why-squash-can-change-path-4.pdf differ diff --git a/main/_downloads/79becd8c0b77145922e83bcf9587b0df/api-9.pdf b/main/_downloads/79becd8c0b77145922e83bcf9587b0df/api-9.pdf index 35ae628c..8c72de64 100644 Binary files a/main/_downloads/79becd8c0b77145922e83bcf9587b0df/api-9.pdf and b/main/_downloads/79becd8c0b77145922e83bcf9587b0df/api-9.pdf differ diff --git a/main/_downloads/7be99933a51115eeac94ea28dcc94a10/api-3.py b/main/_downloads/7be99933a51115eeac94ea28dcc94a10/api-3.py index 00a898c7..aff5125b 100644 --- a/main/_downloads/7be99933a51115eeac94ea28dcc94a10/api-3.py +++ b/main/_downloads/7be99933a51115eeac94ea28dcc94a10/api-3.py @@ -1,7 +1,9 @@ # Example Spec from scanspec.plot import plot_spec -from scanspec.specs import Line, Repeat +from scanspec.regions import Circle +from scanspec.specs import Line -spec = Repeat(2, gap=False) * ~Line.bounded("x", 3, 4, 1) +grid = Line("y", 1, 3, 10) * ~Line("x", 0, 2, 10) +spec = grid & Circle("x", "y", 1, 2, 0.9) plot_spec(spec) \ No newline at end of file diff --git a/main/_downloads/7f5d6f98d851a6f87ee17b4e1a2c477d/api-3.pdf b/main/_downloads/7f5d6f98d851a6f87ee17b4e1a2c477d/api-3.pdf index d463fe36..8ff38365 100644 Binary files a/main/_downloads/7f5d6f98d851a6f87ee17b4e1a2c477d/api-3.pdf and b/main/_downloads/7f5d6f98d851a6f87ee17b4e1a2c477d/api-3.pdf differ diff --git a/main/_downloads/8d1f05c70d13d9eb2d237e906361b08f/api-4.hires.png b/main/_downloads/8d1f05c70d13d9eb2d237e906361b08f/api-4.hires.png index e2caf8e4..6cc0e647 100644 Binary files a/main/_downloads/8d1f05c70d13d9eb2d237e906361b08f/api-4.hires.png and b/main/_downloads/8d1f05c70d13d9eb2d237e906361b08f/api-4.hires.png differ diff --git a/main/_downloads/90481c9e5c2b3588d1b16f603ccb3a86/creating-a-spec-3.pdf b/main/_downloads/90481c9e5c2b3588d1b16f603ccb3a86/creating-a-spec-3.pdf index 200fd691..7097f4b3 100644 Binary files a/main/_downloads/90481c9e5c2b3588d1b16f603ccb3a86/creating-a-spec-3.pdf and b/main/_downloads/90481c9e5c2b3588d1b16f603ccb3a86/creating-a-spec-3.pdf differ diff --git a/main/_downloads/920016fcda583eee66f9e3f3c37d90ca/api-1.pdf b/main/_downloads/920016fcda583eee66f9e3f3c37d90ca/api-1.pdf index 06bea5df..35925c2c 100644 Binary files a/main/_downloads/920016fcda583eee66f9e3f3c37d90ca/api-1.pdf and b/main/_downloads/920016fcda583eee66f9e3f3c37d90ca/api-1.pdf differ diff --git a/main/_downloads/9b910feaa68e0b54f476927a47285377/api-2.hires.png b/main/_downloads/9b910feaa68e0b54f476927a47285377/api-2.hires.png index fd809205..248823e9 100644 Binary files a/main/_downloads/9b910feaa68e0b54f476927a47285377/api-2.hires.png and b/main/_downloads/9b910feaa68e0b54f476927a47285377/api-2.hires.png differ diff --git a/main/_downloads/a40a2da1920d27bcf335a4a10024addd/api-8.pdf b/main/_downloads/a40a2da1920d27bcf335a4a10024addd/api-8.pdf index b2940eee..74dc7758 100644 Binary files a/main/_downloads/a40a2da1920d27bcf335a4a10024addd/api-8.pdf and b/main/_downloads/a40a2da1920d27bcf335a4a10024addd/api-8.pdf differ diff --git a/main/_downloads/af2c138d163058422058018877fb711d/api-7.pdf b/main/_downloads/af2c138d163058422058018877fb711d/api-7.pdf index 16fe3731..9bc9a14e 100644 Binary files a/main/_downloads/af2c138d163058422058018877fb711d/api-7.pdf and b/main/_downloads/af2c138d163058422058018877fb711d/api-7.pdf differ diff --git a/main/_downloads/b61fec1d185d5d29d1735e1c5f45786d/api-1.py b/main/_downloads/b61fec1d185d5d29d1735e1c5f45786d/api-1.py index afdf3cbb..87c0f949 100644 --- a/main/_downloads/b61fec1d185d5d29d1735e1c5f45786d/api-1.py +++ b/main/_downloads/b61fec1d185d5d29d1735e1c5f45786d/api-1.py @@ -2,6 +2,8 @@ from scanspec.plot import plot_spec from scanspec.specs import Line +from scanspec.regions import Circle -spec = Line("y", 1, 2, 3) * Line("x", 3, 4, 12) +cube = Line("z", 1, 3, 3) * Line("y", 1, 3, 10) * ~Line("x", 0, 2, 10) +spec = cube & Circle("x", "y", 1, 2, 0.9) plot_spec(spec) \ No newline at end of file diff --git a/main/_downloads/bace78a87ef701e7b08f72f39db31591/api-16.pdf b/main/_downloads/bace78a87ef701e7b08f72f39db31591/api-16.pdf index d2ed1803..00528a87 100644 Binary files a/main/_downloads/bace78a87ef701e7b08f72f39db31591/api-16.pdf and b/main/_downloads/bace78a87ef701e7b08f72f39db31591/api-16.pdf differ diff --git a/main/_downloads/c1cf2d085f7ede85d58df873f9e4588b/api-2.py b/main/_downloads/c1cf2d085f7ede85d58df873f9e4588b/api-2.py index 4a2e2b75..845343f9 100644 --- a/main/_downloads/c1cf2d085f7ede85d58df873f9e4588b/api-2.py +++ b/main/_downloads/c1cf2d085f7ede85d58df873f9e4588b/api-2.py @@ -1,7 +1,9 @@ # Example Spec from scanspec.plot import plot_spec +from scanspec.regions import Polygon from scanspec.specs import Line -spec = 2 * ~Line.bounded("x", 3, 4, 1) +grid = Line("y", 3, 8, 10) * ~Line("x", 1 ,8, 10) +spec = grid & Polygon("x", "y", [1.0, 6.0, 8.0, 2.0], [4.0, 10.0, 6.0, 1.0]) plot_spec(spec) \ No newline at end of file diff --git a/main/_downloads/c2faec58e8a7872b8c73e00e780c4f8b/creating-a-spec-2.pdf b/main/_downloads/c2faec58e8a7872b8c73e00e780c4f8b/creating-a-spec-2.pdf index 248783cf..2d6bab58 100644 Binary files a/main/_downloads/c2faec58e8a7872b8c73e00e780c4f8b/creating-a-spec-2.pdf and b/main/_downloads/c2faec58e8a7872b8c73e00e780c4f8b/creating-a-spec-2.pdf differ diff --git a/main/_downloads/cc141685a493616a8f29e461c61b1b0b/api-6.pdf b/main/_downloads/cc141685a493616a8f29e461c61b1b0b/api-6.pdf index 67c244b8..a52c3297 100644 Binary files a/main/_downloads/cc141685a493616a8f29e461c61b1b0b/api-6.pdf and b/main/_downloads/cc141685a493616a8f29e461c61b1b0b/api-6.pdf differ diff --git a/main/_downloads/d63649a5a6f78b5a752e39a4af7c1464/api-1.png b/main/_downloads/d63649a5a6f78b5a752e39a4af7c1464/api-1.png index e9e24a1e..a31ba707 100644 Binary files a/main/_downloads/d63649a5a6f78b5a752e39a4af7c1464/api-1.png and b/main/_downloads/d63649a5a6f78b5a752e39a4af7c1464/api-1.png differ diff --git a/main/_downloads/d710b479db32b9052157f9dc9f9d4f05/api-3.hires.png b/main/_downloads/d710b479db32b9052157f9dc9f9d4f05/api-3.hires.png index 6947f592..813dc60a 100644 Binary files a/main/_downloads/d710b479db32b9052157f9dc9f9d4f05/api-3.hires.png and b/main/_downloads/d710b479db32b9052157f9dc9f9d4f05/api-3.hires.png differ diff --git a/main/_downloads/e97e6c4ea088783de917c4b5859e1595/why-squash-can-change-path-1.pdf b/main/_downloads/e97e6c4ea088783de917c4b5859e1595/why-squash-can-change-path-1.pdf index d615b76e..bcebbc51 100644 Binary files a/main/_downloads/e97e6c4ea088783de917c4b5859e1595/why-squash-can-change-path-1.pdf and b/main/_downloads/e97e6c4ea088783de917c4b5859e1595/why-squash-can-change-path-1.pdf differ diff --git a/main/_downloads/ec8d232d0953cdaac6529cb67293b0e8/creating-a-spec-5.pdf b/main/_downloads/ec8d232d0953cdaac6529cb67293b0e8/creating-a-spec-5.pdf index 6d381a0a..095091a8 100644 Binary files a/main/_downloads/ec8d232d0953cdaac6529cb67293b0e8/creating-a-spec-5.pdf and b/main/_downloads/ec8d232d0953cdaac6529cb67293b0e8/creating-a-spec-5.pdf differ diff --git a/main/_downloads/edf4182424d7c4118287d2ea50bef6bb/why-squash-can-change-path-2.pdf b/main/_downloads/edf4182424d7c4118287d2ea50bef6bb/why-squash-can-change-path-2.pdf index aba09680..6adb7f87 100644 Binary files a/main/_downloads/edf4182424d7c4118287d2ea50bef6bb/why-squash-can-change-path-2.pdf and b/main/_downloads/edf4182424d7c4118287d2ea50bef6bb/why-squash-can-change-path-2.pdf differ diff --git a/main/_downloads/f169874319858b7c51d001cb0d90893f/api-4.png b/main/_downloads/f169874319858b7c51d001cb0d90893f/api-4.png index a09eaa89..3f0e826d 100644 Binary files a/main/_downloads/f169874319858b7c51d001cb0d90893f/api-4.png and b/main/_downloads/f169874319858b7c51d001cb0d90893f/api-4.png differ diff --git a/main/_downloads/ff9fe3a1c02bde9717bcf50e7f8dd25b/api-1.hires.png b/main/_downloads/ff9fe3a1c02bde9717bcf50e7f8dd25b/api-1.hires.png index a93b5bc3..7e96c75b 100644 Binary files a/main/_downloads/ff9fe3a1c02bde9717bcf50e7f8dd25b/api-1.hires.png and b/main/_downloads/ff9fe3a1c02bde9717bcf50e7f8dd25b/api-1.hires.png differ diff --git a/main/_images/api-1.png b/main/_images/api-1.png index e9e24a1e..a31ba707 100644 Binary files a/main/_images/api-1.png and b/main/_images/api-1.png differ diff --git a/main/_images/api-2.png b/main/_images/api-2.png index 6cd4c9cc..39cc28ed 100644 Binary files a/main/_images/api-2.png and b/main/_images/api-2.png differ diff --git a/main/_images/api-3.png b/main/_images/api-3.png index e075a818..c92ffa1b 100644 Binary files a/main/_images/api-3.png and b/main/_images/api-3.png differ diff --git a/main/_images/api-4.png b/main/_images/api-4.png index a09eaa89..3f0e826d 100644 Binary files a/main/_images/api-4.png and b/main/_images/api-4.png differ diff --git a/main/_images/inheritance-71879fa8c5979d3d8c5ee96fb056aace560c72e4.svg b/main/_images/inheritance-71879fa8c5979d3d8c5ee96fb056aace560c72e4.svg new file mode 100644 index 00000000..50294ea8 --- /dev/null +++ b/main/_images/inheritance-71879fa8c5979d3d8c5ee96fb056aace560c72e4.svg @@ -0,0 +1,164 @@ + + +inheritance392524bb86 + + +Circle + + +Circle + + + + + +Region + + +Region + + + + + +Region->Circle + + + + + +CombinationOf + + +CombinationOf + + + + + +Region->CombinationOf + + + + + +Ellipse + + +Ellipse + + + + + +Region->Ellipse + + + + + +Polygon + + +Polygon + + + + + +Region->Polygon + + + + + +Range + + +Range + + + + + +Region->Range + + + + + +Rectangle + + +Rectangle + + + + + +Region->Rectangle + + + + + +DifferenceOf + + +DifferenceOf + + + + + +CombinationOf->DifferenceOf + + + + + +IntersectionOf + + +IntersectionOf + + + + + +CombinationOf->IntersectionOf + + + + + +SymmetricDifferenceOf + + +SymmetricDifferenceOf + + + + + +CombinationOf->SymmetricDifferenceOf + + + + + +UnionOf + + +UnionOf + + + + + +CombinationOf->UnionOf + + + + + \ No newline at end of file diff --git a/main/_images/inheritance-912426ea7002dfc5798bad76e41322e7af33cb94.svg b/main/_images/inheritance-912426ea7002dfc5798bad76e41322e7af33cb94.svg new file mode 100644 index 00000000..a3ac5f97 --- /dev/null +++ b/main/_images/inheritance-912426ea7002dfc5798bad76e41322e7af33cb94.svg @@ -0,0 +1,164 @@ + + +inheritancec3ef874399 + + +Concat + + +Concat + + + + + +Spec + + +Spec + + + + + +Spec->Concat + + + + + +Line + + +Line + + + + + +Spec->Line + + + + + +Mask + + +Mask + + + + + +Spec->Mask + + + + + +Product + + +Product + + + + + +Spec->Product + + + + + +Repeat + + +Repeat + + + + + +Spec->Repeat + + + + + +Snake + + +Snake + + + + + +Spec->Snake + + + + + +Spiral + + +Spiral + + + + + +Spec->Spiral + + + + + +Squash + + +Squash + + + + + +Spec->Squash + + + + + +Static + + +Static + + + + + +Spec->Static + + + + + +Zip + + +Zip + + + + + +Spec->Zip + + + + + \ No newline at end of file diff --git a/main/_modules/index.html b/main/_modules/index.html index 70cd122c..8f7ea339 100644 --- a/main/_modules/index.html +++ b/main/_modules/index.html @@ -7,7 +7,7 @@ - Overview: module code — scanspec 0.6.5 documentation + Overview: module code — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -38,7 +38,7 @@ - + @@ -48,7 +48,7 @@ @@ -175,13 +175,6 @@ - - - @@ -341,13 +334,6 @@ - - - diff --git a/main/_modules/scanspec/core.html b/main/_modules/scanspec/core.html index 409c4029..c32e6931 100644 --- a/main/_modules/scanspec/core.html +++ b/main/_modules/scanspec/core.html @@ -7,7 +7,7 @@ - scanspec.core — scanspec 0.6.5 documentation + scanspec.core — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -38,7 +38,7 @@ - + @@ -48,7 +48,7 @@ @@ -175,13 +175,6 @@ - - - @@ -341,13 +334,6 @@ - - - @@ -620,7 +606,6 @@

Source code for scanspec.core

     discriminator: str,
     config: Optional[Type[BaseConfig]] = None,
 ) -> Union[Type, Callable[[Type], Type]]:
-
     super_cls._ref_classes = set()
     super_cls._model = None
 
@@ -744,8 +729,8 @@ 

Source code for scanspec.core

             # Need to calculate gap as not passed one
             # We have a gap if upper[i] != lower[i+1] for any axes
             axes_gap = [
-                np.roll(u, 1) != l
-                for u, l in zip(self.upper.values(), self.lower.values())
+                np.roll(upper, 1) != lower
+                for upper, lower in zip(self.upper.values(), self.lower.values())
             ]
             self.gap = np.logical_or.reduce(axes_gap)
         # Check all axes and ordering are the same
@@ -754,11 +739,11 @@ 

Source code for scanspec.core

             f"{list(self.midpoints)} != {list(self.lower)} != {list(self.upper)}"
         )
         # Check all lengths are the same
-        lengths = set(
+        lengths = {
             len(arr)
             for d in (self.midpoints, self.lower, self.upper)
             for arr in d.values()
-        )
+        }
         lengths.add(len(self.gap))
         assert len(lengths) <= 1, f"Mismatching lengths {list(lengths)}"
 
@@ -875,10 +860,10 @@ 

Source code for scanspec.core

 
 def _merge_frames(
     *stack: Frames[Axis],
-    dict_merge=Callable[[Sequence[AxesPoints[Axis]]], AxesPoints[Axis]],
+    dict_merge=Callable[[Sequence[AxesPoints[Axis]]], AxesPoints[Axis]],  # type: ignore
     gap_merge=Callable[[Sequence[np.ndarray]], Optional[np.ndarray]],
 ) -> Frames[Axis]:
-    types = set(type(fs) for fs in stack)
+    types = {type(fs) for fs in stack}
     assert len(types) == 1, f"Mismatching types for {stack}"
     cls = types.pop()
 
diff --git a/main/_modules/scanspec/plot.html b/main/_modules/scanspec/plot.html
index e2ec90cc..7a71a0a1 100644
--- a/main/_modules/scanspec/plot.html
+++ b/main/_modules/scanspec/plot.html
@@ -7,7 +7,7 @@
   
     
     
-    scanspec.plot — scanspec 0.6.5 documentation
+    scanspec.plot — scanspec 0.6.6.dev6+g11e1e20 documentation
   
   
   
@@ -38,7 +38,7 @@
 
   
 
-    
+    
     
     
     
@@ -48,7 +48,7 @@
     
     
@@ -175,13 +175,6 @@
                       
                     
                 
-
-                
-                
   
 
@@ -341,13 +334,6 @@ - - -
@@ -525,7 +511,10 @@

Source code for scanspec.plot

         head = [a[-1] for a in reversed(arrays)]
         tail = [a[-1] - (a[-1] - a[-2]) * 0.1 for a in reversed(arrays)]
         axes.annotate(
-            "", head[:2], tail[:2], arrowprops=dict(color="lightgrey", arrowstyle="-|>")
+            "",
+            head[:2],
+            tail[:2],
+            arrowprops={"color": "lightgrey", "arrowstyle": "-|>"},
         )
     elif len(arrays) == 3:
         arrows = [a[-2:] for a in reversed(arrays)]
@@ -551,7 +540,7 @@ 

Source code for scanspec.plot

         t /= t[-1]
         # Scale the arrays so splines don't favour larger scaled axes
         tck, _ = interpolate.splprep(scaled_arrays, k=2, s=0)
-        starts = sorted(list(index_colours))
+        starts = sorted(index_colours)
         stops = starts[1:] + [len(arrays[0]) - 1]
         for start, stop in zip(starts, stops):
             tnew = np.linspace(t[start], t[stop], num=1001)
diff --git a/main/_modules/scanspec/regions.html b/main/_modules/scanspec/regions.html
index 464cfe26..27248ee1 100644
--- a/main/_modules/scanspec/regions.html
+++ b/main/_modules/scanspec/regions.html
@@ -7,7 +7,7 @@
   
     
     
-    scanspec.regions — scanspec 0.6.5 documentation
+    scanspec.regions — scanspec 0.6.6.dev6+g11e1e20 documentation
   
   
   
@@ -38,7 +38,7 @@
 
   
 
-    
+    
     
     
     
@@ -48,7 +48,7 @@
     
     
@@ -175,13 +175,6 @@
                       
                     
                 
-
-                
-                
   
 
@@ -341,13 +334,6 @@ - - -
diff --git a/main/_modules/scanspec/service.html b/main/_modules/scanspec/service.html index ca644f4e..ae358919 100644 --- a/main/_modules/scanspec/service.html +++ b/main/_modules/scanspec/service.html @@ -7,7 +7,7 @@ - scanspec.service — scanspec 0.6.5 documentation + scanspec.service — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -38,7 +38,7 @@ - + @@ -48,7 +48,7 @@ @@ -175,13 +175,6 @@ - - -
@@ -341,13 +334,6 @@ - - -
@@ -630,7 +616,7 @@

Source code for scanspec.service

 [docs]
 @app.post("/valid", response_model=ValidResponse)
 def valid(
-    spec: Spec = Body(..., examples=[_EXAMPLE_SPEC])
+    spec: Spec = Body(..., examples=[_EXAMPLE_SPEC]),
 ) -> Union[ValidResponse, JSONResponse]:
     """Validate wether a ScanSpec can produce a viable scan.
 
@@ -653,7 +639,7 @@ 

Source code for scanspec.service

     request: PointsRequest = Body(
         ...,
         examples=[_EXAMPLE_POINTS_REQUEST],
-    )
+    ),
 ) -> MidpointsResponse:
     """Generate midpoints from a scanspec.
 
@@ -684,7 +670,7 @@ 

Source code for scanspec.service

     request: PointsRequest = Body(
         ...,
         examples=[_EXAMPLE_POINTS_REQUEST],
-    )
+    ),
 ) -> BoundsResponse:
     """Generate bounds from a scanspec.
 
@@ -714,7 +700,7 @@ 

Source code for scanspec.service

     spec: Spec = Body(
         ...,
         examples=[_EXAMPLE_SPEC],
-    )
+    ),
 ) -> GapResponse:
     """Generate gaps from a scanspec.
 
@@ -739,7 +725,7 @@ 

Source code for scanspec.service

 [docs]
 @app.post("/smalleststep", response_model=SmallestStepResponse)
 def smallest_step(
-    spec: Spec = Body(..., examples=[_EXAMPLE_SPEC])
+    spec: Spec = Body(..., examples=[_EXAMPLE_SPEC]),
 ) -> SmallestStepResponse:
     """Calculate the smallest step in a scan, both absolutely and per-axis.
 
diff --git a/main/_modules/scanspec/specs.html b/main/_modules/scanspec/specs.html
index 0d0ab805..7a6d3ac3 100644
--- a/main/_modules/scanspec/specs.html
+++ b/main/_modules/scanspec/specs.html
@@ -7,7 +7,7 @@
   
     
     
-    scanspec.specs — scanspec 0.6.5 documentation
+    scanspec.specs — scanspec 0.6.6.dev6+g11e1e20 documentation
   
   
   
@@ -38,7 +38,7 @@
 
   
 
-    
+    
     
     
     
@@ -48,7 +48,7 @@
     
     
@@ -175,13 +175,6 @@
                       
                     
                 
-
-                
-                
   
 
@@ -341,13 +334,6 @@ - - -
@@ -608,7 +594,7 @@

Source code for scanspec.specs

 [docs]
     def serialize(self) -> Mapping[str, Any]:
         """Serialize the spec to a dictionary."""
-        return asdict(self)
+ return asdict(self) # type: ignore
diff --git a/main/_sources/explanations.md.txt b/main/_sources/explanations.md.txt index 3bfd6b06..73ab289b 100644 --- a/main/_sources/explanations.md.txt +++ b/main/_sources/explanations.md.txt @@ -1,15 +1,10 @@ ---- -orphan: true ---- - # Explanations Explanations of how it works and why it works that way. ```{toctree} :maxdepth: 1 +:glob: -explanations/technical-terms -explanations/why-stack-frames -explanations/why-squash-can-change-path +explanations/* ``` diff --git a/main/_sources/explanations/decisions.md.txt b/main/_sources/explanations/decisions.md.txt new file mode 100644 index 00000000..0533b98d --- /dev/null +++ b/main/_sources/explanations/decisions.md.txt @@ -0,0 +1,12 @@ +# Architectural Decision Records + +Architectural decisions are made throughout a project's lifetime. As a way of keeping track of these decisions, we record these decisions in Architecture Decision Records (ADRs) listed below. + +```{toctree} +:glob: true +:maxdepth: 1 + +decisions/* +``` + +For more information on ADRs see this [blog by Michael Nygard](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions). diff --git a/main/_sources/explanations/decisions/0001-record-architecture-decisions.md.txt b/main/_sources/explanations/decisions/0001-record-architecture-decisions.md.txt new file mode 100644 index 00000000..44d234ef --- /dev/null +++ b/main/_sources/explanations/decisions/0001-record-architecture-decisions.md.txt @@ -0,0 +1,18 @@ +# 1. Record architecture decisions + +## Status + +Accepted + +## Context + +We need to record the architectural decisions made on this project. + +## Decision + +We will use Architecture Decision Records, as [described by Michael Nygard](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions). + +## Consequences + +See Michael Nygard's article, linked above. To create new ADRs we will copy and +paste from existing ones. diff --git a/main/_sources/explanations/decisions/0002-switched-to-python-copier-template.md.txt b/main/_sources/explanations/decisions/0002-switched-to-python-copier-template.md.txt new file mode 100644 index 00000000..66fe5d8b --- /dev/null +++ b/main/_sources/explanations/decisions/0002-switched-to-python-copier-template.md.txt @@ -0,0 +1,28 @@ +# 2. Adopt python-copier-template for project structure + +## Status + +Accepted + +## Context + +We should use the following [python-copier-template](https://github.com/DiamondLightSource/python-copier-template). +The template will ensure consistency in developer +environments and package management. + +## Decision + +We have switched to using the template. + +## Consequences + +This module will use a fixed set of tools as developed in `python-copier-template` +and can pull from this template to update the packaging to the latest techniques. + +As such, the developer environment may have changed, the following could be +different: + +- linting +- formatting +- pip venv setup +- CI/CD diff --git a/main/_sources/how-to.md.txt b/main/_sources/how-to.md.txt index 8a4b3c9e..6b161417 100644 --- a/main/_sources/how-to.md.txt +++ b/main/_sources/how-to.md.txt @@ -1,14 +1,10 @@ ---- -orphan: true ---- - # How-to Guides Practical step-by-step guides for the more experienced user. ```{toctree} :maxdepth: 1 +:glob: -how-to/iterate-a-spec -how-to/serialize-a-spec +how-to/* ``` diff --git a/main/_sources/how-to/contribute.md.txt b/main/_sources/how-to/contribute.md.txt new file mode 100644 index 00000000..f9c4ca1d --- /dev/null +++ b/main/_sources/how-to/contribute.md.txt @@ -0,0 +1,2 @@ +```{include} ../../.github/CONTRIBUTING.md +``` \ No newline at end of file diff --git a/main/_sources/how-to/run-container.md.txt b/main/_sources/how-to/run-container.md.txt new file mode 100644 index 00000000..579c1cd0 --- /dev/null +++ b/main/_sources/how-to/run-container.md.txt @@ -0,0 +1,14 @@ +# Run in a container + +Pre-built containers with scanspec and its dependencies already +installed are available on [Github Container Registry](https://ghcr.io/dls-controls/scanspec). + +## Starting the container + +To pull the container from github container registry and run: + +``` +$ docker run ghcr.io/dls-controls/scanspec:main --version +``` + +To get a released version, use a numbered release instead of `main`. diff --git a/main/_sources/index.md.txt b/main/_sources/index.md.txt index 64390f0d..a6f58e33 100644 --- a/main/_sources/index.md.txt +++ b/main/_sources/index.md.txt @@ -12,8 +12,7 @@ html_theme.sidebar_secondary.remove: true How the documentation is structured ----------------------------------- -Documentation is split into four categories, also accessible from links in the -top bar. +Documentation is split into [four categories](https://diataxis.fr), also accessible from links in the top bar. diff --git a/main/_sources/reference.md.txt b/main/_sources/reference.md.txt index 83a03333..da17b81e 100644 --- a/main/_sources/reference.md.txt +++ b/main/_sources/reference.md.txt @@ -4,9 +4,9 @@ Technical reference material including APIs and release notes. ```{toctree} :maxdepth: 1 +:glob: -reference/api -reference/rest_api -reference/contributing +reference/* genindex +Release Notes ``` diff --git a/main/_sources/reference/api.md.txt b/main/_sources/reference/api.md.txt new file mode 100644 index 00000000..6a6204e2 --- /dev/null +++ b/main/_sources/reference/api.md.txt @@ -0,0 +1,73 @@ +# API + +```{eval-rst} +.. automodule:: scanspec + + ``scanspec`` + ------------ + +``` + +The top level scanspec module contains a number of packages that can be used +from code: + +- [](#scanspec.core): Core classes like [](#Frames) and [](#Path) +- [](#scanspec.specs): [](#Spec) and its subclasses +- [](#scanspec.regions): [](#Region) and its subclasses +- [](#scanspec.plot): [](#plot_spec) to visualize a scan +- [](#scanspec.service): Defines queries and field structure in REST such as [](#MidpointsResponse) + +```{eval-rst} +.. data:: scanspec.__version__ + :type: str + + Version number as calculated by https://github.com/dls-controls/versiongit +``` + +```{eval-rst} +.. automodule:: scanspec.core + :members: + + ``scanspec.core`` + ----------------- +``` + +```{eval-rst} +.. automodule:: scanspec.specs + :members: + + ``scanspec.specs`` + ------------------ + + .. inheritance-diagram:: scanspec.specs + :top-classes: scanspec.specs.Spec + :parts: 1 +``` + +```{eval-rst} +.. automodule:: scanspec.regions + :members: + + ``scanspec.regions`` + -------------------- + + .. inheritance-diagram:: scanspec.regions + :top-classes: scanspec.regions.Region + :parts: 1 +``` + +```{eval-rst} +.. automodule:: scanspec.plot + :members: + + ``scanspec.plot`` + ----------------- +``` + +```{eval-rst} +.. automodule:: scanspec.service + :members: + + ``scanspec.service`` + -------------------- +``` diff --git a/main/_sources/reference/rest_api.md.txt b/main/_sources/reference/rest_api.md.txt new file mode 100644 index 00000000..f54aabcb --- /dev/null +++ b/main/_sources/reference/rest_api.md.txt @@ -0,0 +1,7 @@ +# REST API + +The endpoints of the REST service are documented below. + +```{eval-rst} +.. openapi:: ../../schema.json +``` diff --git a/main/_sources/tutorials.md.txt b/main/_sources/tutorials.md.txt index 0f5a750c..b88db528 100644 --- a/main/_sources/tutorials.md.txt +++ b/main/_sources/tutorials.md.txt @@ -4,6 +4,7 @@ Tutorials for installation and typical usage. New users start here. ```{toctree} :maxdepth: 1 +:glob: tutorials/installation tutorials/creating-a-spec diff --git a/main/_sources/tutorials/installation.md.txt b/main/_sources/tutorials/installation.md.txt index f109fb37..3e004ec0 100644 --- a/main/_sources/tutorials/installation.md.txt +++ b/main/_sources/tutorials/installation.md.txt @@ -21,17 +21,17 @@ $ source /path/to/venv/bin/activate ## Installing the library -You can now use `pip` to install the library: +You can now use `pip` to install the library and its dependencies: ``` -python3 -m pip install scanspec +$ python3 -m pip install scanspec ``` If you require a feature that is not currently released you can also install from github: ``` -python3 -m pip install git+git://github.com/dls-controls/scanspec.git +$ python3 -m pip install git+https://github.com/dls-controls/scanspec.git ``` If you need to do any plotting (recommended), you should install the `plotting` extra: @@ -51,5 +51,5 @@ The library should now be installed and the commandline interface on your path. You can check the version that has been installed by typing: ``` -scanspec --version +$ scanspec --version ``` diff --git a/main/_static/documentation_options.js b/main/_static/documentation_options.js index 1d0f3bee..30e5f107 100644 --- a/main/_static/documentation_options.js +++ b/main/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '0.6.5', + VERSION: '0.6.6.dev6+g11e1e20', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/main/explanations.html b/main/explanations.html index 9c3509c6..7439bf85 100644 --- a/main/explanations.html +++ b/main/explanations.html @@ -8,7 +8,7 @@ - Explanations — scanspec 0.6.5 documentation + Explanations — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -39,7 +39,7 @@ - + @@ -49,13 +49,13 @@ - + @@ -178,13 +178,6 @@ - - -
@@ -346,13 +339,6 @@ - - -
@@ -436,9 +422,14 @@ aria-label="Section Navigation">
@@ -498,9 +489,10 @@

Explanations @@ -525,11 +517,11 @@

Explanations

next

-

Technical Terms

+

Architectural Decision Records

@@ -547,7 +539,7 @@

Explanations - + diff --git a/main/explanations/decisions.html b/main/explanations/decisions.html new file mode 100644 index 00000000..8a1dc497 --- /dev/null +++ b/main/explanations/decisions.html @@ -0,0 +1,599 @@ + + + + + + + + + + + Architectural Decision Records — scanspec 0.6.6.dev6+g11e1e20 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/explanations/decisions/0001-record-architecture-decisions.html b/main/explanations/decisions/0001-record-architecture-decisions.html new file mode 100644 index 00000000..e9b5f941 --- /dev/null +++ b/main/explanations/decisions/0001-record-architecture-decisions.html @@ -0,0 +1,626 @@ + + + + + + + + + + + 1. Record architecture decisions — scanspec 0.6.6.dev6+g11e1e20 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

1. Record architecture decisions#

+
+

Status#

+

Accepted

+
+
+

Context#

+

We need to record the architectural decisions made on this project.

+
+
+

Decision#

+

We will use Architecture Decision Records, as described by Michael Nygard.

+
+
+

Consequences#

+

See Michael Nygard’s article, linked above. To create new ADRs we will copy and +paste from existing ones.

+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/explanations/decisions/0002-switched-to-python-copier-template.html b/main/explanations/decisions/0002-switched-to-python-copier-template.html new file mode 100644 index 00000000..bbb85410 --- /dev/null +++ b/main/explanations/decisions/0002-switched-to-python-copier-template.html @@ -0,0 +1,636 @@ + + + + + + + + + + + 2. Adopt python-copier-template for project structure — scanspec 0.6.6.dev6+g11e1e20 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

2. Adopt python-copier-template for project structure#

+
+

Status#

+

Accepted

+
+
+

Context#

+

We should use the following python-copier-template. +The template will ensure consistency in developer +environments and package management.

+
+
+

Decision#

+

We have switched to using the template.

+
+
+

Consequences#

+

This module will use a fixed set of tools as developed in python-copier-template +and can pull from this template to update the packaging to the latest techniques.

+

As such, the developer environment may have changed, the following could be +different:

+
    +
  • linting

  • +
  • formatting

  • +
  • pip venv setup

  • +
  • CI/CD

  • +
+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/explanations/technical-terms.html b/main/explanations/technical-terms.html index 12045dd8..a0f0fffc 100644 --- a/main/explanations/technical-terms.html +++ b/main/explanations/technical-terms.html @@ -8,7 +8,7 @@ - Technical Terms — scanspec 0.6.5 documentation + Technical Terms — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -39,7 +39,7 @@ - + @@ -49,14 +49,14 @@ - - + + @@ -178,13 +178,6 @@ - - - @@ -346,13 +339,6 @@ - - - @@ -436,9 +422,14 @@ aria-label="Section Navigation"> @@ -549,20 +540,20 @@

previous

-

Explanations

+

2. Adopt python-copier-template for project structure

next

-

Why create a stack of Frames?

+

Why Squash (and Mask) can change the Path

@@ -596,7 +587,7 @@ @@ -346,13 +339,6 @@ - - -
@@ -436,9 +422,14 @@ aria-label="Section Navigation"> @@ -602,20 +593,20 @@

Why this matters

previous

-

Why create a stack of Frames?

+

Technical Terms

next

-

Reference

+

Why create a stack of Frames?

@@ -647,7 +638,7 @@

Why this matters - + diff --git a/main/explanations/why-stack-frames.html b/main/explanations/why-stack-frames.html index 05bfbf2e..1577e554 100644 --- a/main/explanations/why-stack-frames.html +++ b/main/explanations/why-stack-frames.html @@ -8,7 +8,7 @@ - Why create a stack of Frames? — scanspec 0.6.5 documentation + Why create a stack of Frames? — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -39,7 +39,7 @@ - + @@ -49,14 +49,14 @@ - - + + @@ -178,13 +178,6 @@ - - - @@ -346,13 +339,6 @@ - - - @@ -436,9 +422,14 @@ aria-label="Section Navigation"> @@ -570,20 +561,20 @@

How does this stack relate to HDF5 Dimensions?

previous

-

Technical Terms

+

Why Squash (and Mask) can change the Path

next

-

Why Squash (and Mask) can change the Path

+

Reference

@@ -616,7 +607,7 @@

How does this stack relate to HDF5 Dimensions? - + diff --git a/main/genindex.html b/main/genindex.html index 8b0c0c9d..81df0c40 100644 --- a/main/genindex.html +++ b/main/genindex.html @@ -7,7 +7,7 @@ - Index — scanspec 0.6.5 documentation + Index — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -38,7 +38,7 @@ - + @@ -48,7 +48,7 @@ @@ -175,13 +175,6 @@ - - - @@ -339,13 +332,6 @@ - - - @@ -431,8 +417,8 @@ diff --git a/main/how-to.html b/main/how-to.html index 37fe6559..c54165a4 100644 --- a/main/how-to.html +++ b/main/how-to.html @@ -8,7 +8,7 @@ - How-to Guides — scanspec 0.6.5 documentation + How-to Guides — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -39,7 +39,7 @@ - + @@ -49,13 +49,13 @@ - + @@ -178,13 +178,6 @@ - - - @@ -346,13 +339,6 @@ - - - @@ -436,7 +422,9 @@ aria-label="Section Navigation"> @@ -497,7 +485,9 @@

How-to Guides @@ -523,11 +513,11 @@

How-to Guides

next

-

How to Iterate a Spec

+

Contribute to the project

@@ -545,7 +535,7 @@

How-to Guides - + diff --git a/main/how-to/contribute.html b/main/how-to/contribute.html new file mode 100644 index 00000000..4dcea6b0 --- /dev/null +++ b/main/how-to/contribute.html @@ -0,0 +1,624 @@ + + + + + + + + + + + Contribute to the project — scanspec 0.6.6.dev6+g11e1e20 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Contribute to the project#

+

Contributions and issues are most welcome! All issues and pull requests are +handled through GitHub. Also, please check for any existing issues before +filing a new one. If you have a great idea but it involves big changes, please +file a ticket before making a pull request! We want to make sure you don’t spend +your time coding something that might not fit the scope of the project.

+
+

Issue or Discussion?#

+

Github also offers discussions as a place to ask questions and share ideas. If +your issue is open ended and it is not obvious when it can be “closed”, please +raise it as a discussion instead.

+
+
+

Code Coverage#

+

While 100% code coverage does not make a library bug-free, it significantly +reduces the number of easily caught bugs! Please make sure coverage remains the +same or is improved by a pull request!

+
+
+

Developer Information#

+

It is recommended that developers use a vscode devcontainer. This repository contains configuration to set up a containerized development environment that suits its own needs.

+

This project was created using the Diamond Light Source Copier Template for Python projects.

+

For more information on common tasks like setting up a developer environment, running the tests, and setting a pre-commit hook, see the template’s How-to guides.

+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/how-to/iterate-a-spec.html b/main/how-to/iterate-a-spec.html index 623917f7..6404ebe6 100644 --- a/main/how-to/iterate-a-spec.html +++ b/main/how-to/iterate-a-spec.html @@ -8,7 +8,7 @@ - How to Iterate a Spec — scanspec 0.6.5 documentation + How to Iterate a Spec — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -39,7 +39,7 @@ - + @@ -49,14 +49,14 @@ - - + + @@ -178,13 +178,6 @@ - - - @@ -346,13 +339,6 @@ - - - @@ -436,7 +422,9 @@ aria-label="Section Navigation"> @@ -614,20 +602,20 @@

If you need to know whether there is a gap between points

previous

-

How-to Guides

+

Contribute to the project

next

-

How to Serialize and Deserialize a Spec

+

Run in a container

@@ -660,7 +648,7 @@

If you need to know whether there is a gap between points - + diff --git a/main/how-to/run-container.html b/main/how-to/run-container.html new file mode 100644 index 00000000..ff34f2ee --- /dev/null +++ b/main/how-to/run-container.html @@ -0,0 +1,609 @@ + + + + + + + + + + + Run in a container — scanspec 0.6.6.dev6+g11e1e20 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Run in a container#

+

Pre-built containers with scanspec and its dependencies already +installed are available on Github Container Registry.

+
+

Starting the container#

+

To pull the container from github container registry and run:

+
$ docker run ghcr.io/dls-controls/scanspec:main --version
+
+
+

To get a released version, use a numbered release instead of main.

+
+
+ + +
+ + + + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/how-to/serialize-a-spec.html b/main/how-to/serialize-a-spec.html index 23f6516f..f6cc6ead 100644 --- a/main/how-to/serialize-a-spec.html +++ b/main/how-to/serialize-a-spec.html @@ -8,7 +8,7 @@ - How to Serialize and Deserialize a Spec — scanspec 0.6.5 documentation + How to Serialize and Deserialize a Spec — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -39,7 +39,7 @@ - + @@ -49,14 +49,14 @@ - + @@ -178,13 +178,6 @@ - - - @@ -346,13 +339,6 @@ - - - @@ -436,7 +422,9 @@ aria-label="Section Navigation"> @@ -536,12 +524,12 @@

How to Deserialize

previous

-

How to Iterate a Spec

+

Run in a container

How to Deserialize - + diff --git a/main/http-routingtable.html b/main/http-routingtable.html index f83bd473..4239faab 100644 --- a/main/http-routingtable.html +++ b/main/http-routingtable.html @@ -7,7 +7,7 @@ - HTTP Routing Table — scanspec 0.6.5 documentation + HTTP Routing Table — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -38,7 +38,7 @@ - + @@ -48,7 +48,7 @@ @@ -182,13 +182,6 @@ - - - @@ -348,13 +341,6 @@ - - - diff --git a/main/index.html b/main/index.html index fb645019..ab97f45e 100644 --- a/main/index.html +++ b/main/index.html @@ -8,7 +8,7 @@ - scanspec — scanspec 0.6.5 documentation + scanspec — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -39,7 +39,7 @@ - + @@ -49,7 +49,7 @@ @@ -177,13 +177,6 @@ - - - @@ -343,13 +336,6 @@ - - - @@ -450,15 +436,15 @@
-

CI -Coverage +

+

CI +Coverage PyPI License

scanspec#

-

-

Specify step and flyscan Paths using combinations of:

+

Specify step and flyscan paths in a serializable, efficient and Pythonic way using combinations of:

  • Specs like Line or Spiral

  • Optionally Snaking

  • @@ -521,8 +507,7 @@

    scanspec

    How the documentation is structured#

    -

    Documentation is split into four categories, also accessible from links in the -top bar.

    +

    Documentation is split into four categories, also accessible from links in the top bar.

    @@ -555,7 +540,9 @@

    How the documentation is structured diff --git a/main/objects.inv b/main/objects.inv index ba520d53..ef7d3d0e 100644 Binary files a/main/objects.inv and b/main/objects.inv differ diff --git a/main/plot_directive/explanations/why-squash-can-change-path-1.pdf b/main/plot_directive/explanations/why-squash-can-change-path-1.pdf index d615b76e..bcebbc51 100644 Binary files a/main/plot_directive/explanations/why-squash-can-change-path-1.pdf and b/main/plot_directive/explanations/why-squash-can-change-path-1.pdf differ diff --git a/main/plot_directive/explanations/why-squash-can-change-path-2.pdf b/main/plot_directive/explanations/why-squash-can-change-path-2.pdf index aba09680..6adb7f87 100644 Binary files a/main/plot_directive/explanations/why-squash-can-change-path-2.pdf and b/main/plot_directive/explanations/why-squash-can-change-path-2.pdf differ diff --git a/main/plot_directive/explanations/why-squash-can-change-path-3.pdf b/main/plot_directive/explanations/why-squash-can-change-path-3.pdf index b24de864..ef77a52d 100644 Binary files a/main/plot_directive/explanations/why-squash-can-change-path-3.pdf and b/main/plot_directive/explanations/why-squash-can-change-path-3.pdf differ diff --git a/main/plot_directive/explanations/why-squash-can-change-path-4.pdf b/main/plot_directive/explanations/why-squash-can-change-path-4.pdf index 298fae82..6a54b0c9 100644 Binary files a/main/plot_directive/explanations/why-squash-can-change-path-4.pdf and b/main/plot_directive/explanations/why-squash-can-change-path-4.pdf differ diff --git a/main/plot_directive/reference/api-1.hires.png b/main/plot_directive/reference/api-1.hires.png index a93b5bc3..7e96c75b 100644 Binary files a/main/plot_directive/reference/api-1.hires.png and b/main/plot_directive/reference/api-1.hires.png differ diff --git a/main/plot_directive/reference/api-1.pdf b/main/plot_directive/reference/api-1.pdf index 06bea5df..35925c2c 100644 Binary files a/main/plot_directive/reference/api-1.pdf and b/main/plot_directive/reference/api-1.pdf differ diff --git a/main/plot_directive/reference/api-1.png b/main/plot_directive/reference/api-1.png index e9e24a1e..a31ba707 100644 Binary files a/main/plot_directive/reference/api-1.png and b/main/plot_directive/reference/api-1.png differ diff --git a/main/plot_directive/reference/api-1.py b/main/plot_directive/reference/api-1.py index afdf3cbb..87c0f949 100644 --- a/main/plot_directive/reference/api-1.py +++ b/main/plot_directive/reference/api-1.py @@ -2,6 +2,8 @@ from scanspec.plot import plot_spec from scanspec.specs import Line +from scanspec.regions import Circle -spec = Line("y", 1, 2, 3) * Line("x", 3, 4, 12) +cube = Line("z", 1, 3, 3) * Line("y", 1, 3, 10) * ~Line("x", 0, 2, 10) +spec = cube & Circle("x", "y", 1, 2, 0.9) plot_spec(spec) \ No newline at end of file diff --git a/main/plot_directive/reference/api-10.pdf b/main/plot_directive/reference/api-10.pdf index 63826e04..89db9fd2 100644 Binary files a/main/plot_directive/reference/api-10.pdf and b/main/plot_directive/reference/api-10.pdf differ diff --git a/main/plot_directive/reference/api-11.pdf b/main/plot_directive/reference/api-11.pdf index 12eaf646..ef0c9381 100644 Binary files a/main/plot_directive/reference/api-11.pdf and b/main/plot_directive/reference/api-11.pdf differ diff --git a/main/plot_directive/reference/api-12.pdf b/main/plot_directive/reference/api-12.pdf index 3e2c1fc2..afad5951 100644 Binary files a/main/plot_directive/reference/api-12.pdf and b/main/plot_directive/reference/api-12.pdf differ diff --git a/main/plot_directive/reference/api-13.pdf b/main/plot_directive/reference/api-13.pdf index 641b4777..75de981f 100644 Binary files a/main/plot_directive/reference/api-13.pdf and b/main/plot_directive/reference/api-13.pdf differ diff --git a/main/plot_directive/reference/api-14.pdf b/main/plot_directive/reference/api-14.pdf index f9c73b5b..7fc270f1 100644 Binary files a/main/plot_directive/reference/api-14.pdf and b/main/plot_directive/reference/api-14.pdf differ diff --git a/main/plot_directive/reference/api-15.pdf b/main/plot_directive/reference/api-15.pdf index 97bbff14..f6a6cb31 100644 Binary files a/main/plot_directive/reference/api-15.pdf and b/main/plot_directive/reference/api-15.pdf differ diff --git a/main/plot_directive/reference/api-16.pdf b/main/plot_directive/reference/api-16.pdf index d2ed1803..00528a87 100644 Binary files a/main/plot_directive/reference/api-16.pdf and b/main/plot_directive/reference/api-16.pdf differ diff --git a/main/plot_directive/reference/api-2.hires.png b/main/plot_directive/reference/api-2.hires.png index fd809205..248823e9 100644 Binary files a/main/plot_directive/reference/api-2.hires.png and b/main/plot_directive/reference/api-2.hires.png differ diff --git a/main/plot_directive/reference/api-2.pdf b/main/plot_directive/reference/api-2.pdf index fa9cc33c..99c2fe03 100644 Binary files a/main/plot_directive/reference/api-2.pdf and b/main/plot_directive/reference/api-2.pdf differ diff --git a/main/plot_directive/reference/api-2.png b/main/plot_directive/reference/api-2.png index 6cd4c9cc..39cc28ed 100644 Binary files a/main/plot_directive/reference/api-2.png and b/main/plot_directive/reference/api-2.png differ diff --git a/main/plot_directive/reference/api-2.py b/main/plot_directive/reference/api-2.py index 4a2e2b75..845343f9 100644 --- a/main/plot_directive/reference/api-2.py +++ b/main/plot_directive/reference/api-2.py @@ -1,7 +1,9 @@ # Example Spec from scanspec.plot import plot_spec +from scanspec.regions import Polygon from scanspec.specs import Line -spec = 2 * ~Line.bounded("x", 3, 4, 1) +grid = Line("y", 3, 8, 10) * ~Line("x", 1 ,8, 10) +spec = grid & Polygon("x", "y", [1.0, 6.0, 8.0, 2.0], [4.0, 10.0, 6.0, 1.0]) plot_spec(spec) \ No newline at end of file diff --git a/main/plot_directive/reference/api-3.hires.png b/main/plot_directive/reference/api-3.hires.png index 6947f592..813dc60a 100644 Binary files a/main/plot_directive/reference/api-3.hires.png and b/main/plot_directive/reference/api-3.hires.png differ diff --git a/main/plot_directive/reference/api-3.pdf b/main/plot_directive/reference/api-3.pdf index d463fe36..8ff38365 100644 Binary files a/main/plot_directive/reference/api-3.pdf and b/main/plot_directive/reference/api-3.pdf differ diff --git a/main/plot_directive/reference/api-3.png b/main/plot_directive/reference/api-3.png index e075a818..c92ffa1b 100644 Binary files a/main/plot_directive/reference/api-3.png and b/main/plot_directive/reference/api-3.png differ diff --git a/main/plot_directive/reference/api-3.py b/main/plot_directive/reference/api-3.py index 00a898c7..aff5125b 100644 --- a/main/plot_directive/reference/api-3.py +++ b/main/plot_directive/reference/api-3.py @@ -1,7 +1,9 @@ # Example Spec from scanspec.plot import plot_spec -from scanspec.specs import Line, Repeat +from scanspec.regions import Circle +from scanspec.specs import Line -spec = Repeat(2, gap=False) * ~Line.bounded("x", 3, 4, 1) +grid = Line("y", 1, 3, 10) * ~Line("x", 0, 2, 10) +spec = grid & Circle("x", "y", 1, 2, 0.9) plot_spec(spec) \ No newline at end of file diff --git a/main/plot_directive/reference/api-4.hires.png b/main/plot_directive/reference/api-4.hires.png index e2caf8e4..6cc0e647 100644 Binary files a/main/plot_directive/reference/api-4.hires.png and b/main/plot_directive/reference/api-4.hires.png differ diff --git a/main/plot_directive/reference/api-4.pdf b/main/plot_directive/reference/api-4.pdf index a7dd9580..28a4da41 100644 Binary files a/main/plot_directive/reference/api-4.pdf and b/main/plot_directive/reference/api-4.pdf differ diff --git a/main/plot_directive/reference/api-4.png b/main/plot_directive/reference/api-4.png index a09eaa89..3f0e826d 100644 Binary files a/main/plot_directive/reference/api-4.png and b/main/plot_directive/reference/api-4.png differ diff --git a/main/plot_directive/reference/api-4.py b/main/plot_directive/reference/api-4.py index 79f5f57d..a337b2ed 100644 --- a/main/plot_directive/reference/api-4.py +++ b/main/plot_directive/reference/api-4.py @@ -1,7 +1,9 @@ # Example Spec from scanspec.plot import plot_spec +from scanspec.regions import Ellipse from scanspec.specs import Line -spec = Line("z", 1, 2, 3) * Line("y", 3, 4, 5).zip(Line("x", 4, 5, 5)) +grid = Line("y", 3, 8, 10) * ~Line("x", 1 ,8, 10) +spec = grid & Ellipse("x", "y", 5, 5, 2, 3, 75) plot_spec(spec) \ No newline at end of file diff --git a/main/plot_directive/reference/api-5.pdf b/main/plot_directive/reference/api-5.pdf index e4ba229a..22e19556 100644 Binary files a/main/plot_directive/reference/api-5.pdf and b/main/plot_directive/reference/api-5.pdf differ diff --git a/main/plot_directive/reference/api-6.pdf b/main/plot_directive/reference/api-6.pdf index 67c244b8..a52c3297 100644 Binary files a/main/plot_directive/reference/api-6.pdf and b/main/plot_directive/reference/api-6.pdf differ diff --git a/main/plot_directive/reference/api-7.pdf b/main/plot_directive/reference/api-7.pdf index 16fe3731..9bc9a14e 100644 Binary files a/main/plot_directive/reference/api-7.pdf and b/main/plot_directive/reference/api-7.pdf differ diff --git a/main/plot_directive/reference/api-8.pdf b/main/plot_directive/reference/api-8.pdf index b2940eee..74dc7758 100644 Binary files a/main/plot_directive/reference/api-8.pdf and b/main/plot_directive/reference/api-8.pdf differ diff --git a/main/plot_directive/reference/api-9.pdf b/main/plot_directive/reference/api-9.pdf index 35ae628c..8c72de64 100644 Binary files a/main/plot_directive/reference/api-9.pdf and b/main/plot_directive/reference/api-9.pdf differ diff --git a/main/plot_directive/tutorials/creating-a-spec-1.pdf b/main/plot_directive/tutorials/creating-a-spec-1.pdf index 4657d683..fb4ace49 100644 Binary files a/main/plot_directive/tutorials/creating-a-spec-1.pdf and b/main/plot_directive/tutorials/creating-a-spec-1.pdf differ diff --git a/main/plot_directive/tutorials/creating-a-spec-2.pdf b/main/plot_directive/tutorials/creating-a-spec-2.pdf index 248783cf..2d6bab58 100644 Binary files a/main/plot_directive/tutorials/creating-a-spec-2.pdf and b/main/plot_directive/tutorials/creating-a-spec-2.pdf differ diff --git a/main/plot_directive/tutorials/creating-a-spec-3.pdf b/main/plot_directive/tutorials/creating-a-spec-3.pdf index 200fd691..7097f4b3 100644 Binary files a/main/plot_directive/tutorials/creating-a-spec-3.pdf and b/main/plot_directive/tutorials/creating-a-spec-3.pdf differ diff --git a/main/plot_directive/tutorials/creating-a-spec-4.pdf b/main/plot_directive/tutorials/creating-a-spec-4.pdf index dcd451a1..cab9aec9 100644 Binary files a/main/plot_directive/tutorials/creating-a-spec-4.pdf and b/main/plot_directive/tutorials/creating-a-spec-4.pdf differ diff --git a/main/plot_directive/tutorials/creating-a-spec-5.pdf b/main/plot_directive/tutorials/creating-a-spec-5.pdf index 6d381a0a..095091a8 100644 Binary files a/main/plot_directive/tutorials/creating-a-spec-5.pdf and b/main/plot_directive/tutorials/creating-a-spec-5.pdf differ diff --git a/main/plot_directive/tutorials/creating-a-spec-6.pdf b/main/plot_directive/tutorials/creating-a-spec-6.pdf index 04d13f1c..3bd8b897 100644 Binary files a/main/plot_directive/tutorials/creating-a-spec-6.pdf and b/main/plot_directive/tutorials/creating-a-spec-6.pdf differ diff --git a/main/py-modindex.html b/main/py-modindex.html index 1f4ad553..54201662 100644 --- a/main/py-modindex.html +++ b/main/py-modindex.html @@ -7,7 +7,7 @@ - Python Module Index — scanspec 0.6.5 documentation + Python Module Index — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -38,7 +38,7 @@ - + @@ -48,7 +48,7 @@ @@ -178,13 +178,6 @@ - - -

@@ -344,13 +337,6 @@ - - - diff --git a/main/reference.html b/main/reference.html index edcd4858..f4aa5a4f 100644 --- a/main/reference.html +++ b/main/reference.html @@ -8,7 +8,7 @@ - Reference — scanspec 0.6.5 documentation + Reference — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -39,7 +39,7 @@ - + @@ -49,14 +49,14 @@ - + @@ -178,13 +178,6 @@ - - - @@ -346,13 +339,6 @@ - - - @@ -438,8 +424,8 @@ @@ -501,8 +487,8 @@

ReferenceAPI
  • REST API
  • -
  • Contributing to the project
  • Index
  • +
  • Release Notes
  • @@ -518,12 +504,12 @@

    Reference

    previous

    -

    Why Squash (and Mask) can change the Path

    +

    Why create a stack of Frames?

    Reference - + diff --git a/main/reference/api.html b/main/reference/api.html index 6a18b549..8e317383 100644 --- a/main/reference/api.html +++ b/main/reference/api.html @@ -8,7 +8,7 @@ - API — scanspec 0.6.5 documentation + API — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -39,7 +39,7 @@ - + @@ -49,7 +49,7 @@ @@ -178,13 +178,6 @@ - - - @@ -346,13 +339,6 @@ - - - @@ -438,8 +424,8 @@ @@ -505,11 +491,11 @@

    scanspec

    The top level scanspec module contains a number of packages that can be used from code:

    @@ -921,7 +907,7 @@

    scanspec

    scanspec.specs#

    -
    +

    Inheritance diagram of scanspec.specs

    @@ -1361,7 +1347,7 @@

    scanspec

    scanspec.regions#

    -
    +

    Inheritance diagram of scanspec.regions

    @@ -1484,9 +1470,9 @@

    scanspec plot_spec(spec) -

    (Source code, png, hires.png, pdf)

    +

    (Source code, png, hires.png, pdf)

    -../_images/api-17.png +../_images/api-1.png

    @@ -1506,9 +1492,9 @@

    scanspec plot_spec(spec) -

    (Source code, png, hires.png, pdf)

    +

    (Source code, png, hires.png, pdf)

    -../_images/api-18.png +../_images/api-2.png
    @@ -1528,9 +1514,9 @@

    scanspec plot_spec(spec) -

    (Source code, png, hires.png, pdf)

    +

    (Source code, png, hires.png, pdf)

    -../_images/api-19.png +../_images/api-3.png
    @@ -1550,9 +1536,9 @@

    scanspec plot_spec(spec) -

    (Source code, png, hires.png, pdf)

    +

    (Source code, png, hires.png, pdf)

    -../_images/api-20.png +../_images/api-4.png
    @@ -1583,9 +1569,9 @@

    scanspec plot_spec(spec) -

    (Source code, png, hires.png, pdf)

    +

    (Source code, png, hires.png, pdf)

    -../_images/api-21.png +../_images/api-1.png
    @@ -1608,7 +1594,7 @@

    scanspec
    -class scanspec.service.PointsFormat(value, names=None, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]#
    +class scanspec.service.PointsFormat(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#

    Bases: str, Enum

    Formats in which we can return points.

    @@ -1949,7 +1935,7 @@

    scanspec
    - + @@ -1964,7 +1950,7 @@

    scanspec @@ -346,13 +339,6 @@ - - -

    @@ -438,8 +424,8 @@ @@ -638,11 +624,11 @@

    REST API

    next

    -

    Contributing to the project

    +

    Index

    @@ -660,7 +646,7 @@

    REST API
    - + @@ -675,7 +661,7 @@

    REST API @@ -343,13 +336,6 @@ - - -

    diff --git a/main/searchindex.js b/main/searchindex.js index fb9581c9..21b554c7 100644 --- a/main/searchindex.js +++ b/main/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["explanations", "explanations/technical-terms", "explanations/why-squash-can-change-path", "explanations/why-stack-frames", "genindex", "how-to", "how-to/iterate-a-spec", "how-to/serialize-a-spec", "index", "reference", "reference/api", "reference/contributing", "reference/rest_api", "tutorials", "tutorials/creating-a-spec", "tutorials/installation", "tutorials/rest-service"], "filenames": ["explanations.md", "explanations/technical-terms.rst", "explanations/why-squash-can-change-path.rst", "explanations/why-stack-frames.rst", "genindex.md", "how-to.md", "how-to/iterate-a-spec.rst", "how-to/serialize-a-spec.rst", "index.md", "reference.md", "reference/api.rst", "reference/contributing.rst", "reference/rest_api.rst", "tutorials.md", "tutorials/creating-a-spec.rst", "tutorials/installation.md", "tutorials/rest-service.rst"], "titles": ["Explanations", "Technical Terms", "Why Squash (and Mask) can change the Path", "Why create a stack of Frames?", "Index", "How-to Guides", "How to Iterate a Spec", "How to Serialize and Deserialize a Spec", "scanspec", "Reference", "API", "Contributing to the project", "REST API", "Tutorials", "Creating a Scan Spec", "Installation", "Running a REST service for generating points"], "terms": {"how": [0, 10, 14, 16], "work": [0, 6, 8], "why": [0, 1, 6, 8, 10], "wai": [0, 6, 8, 10], "technic": [0, 8, 9, 10], "term": [0, 8, 10], "creat": [0, 1, 2, 6, 8, 10, 13, 16], "stack": [0, 2, 6, 8, 10], "frame": [0, 6, 8, 10, 12, 14], "squash": [0, 8, 10], "mask": [0, 3, 8, 10], "can": [0, 1, 3, 6, 7, 8, 10, 11, 12, 14, 15, 16], "chang": [0, 3, 8, 10, 11], "path": [0, 3, 6, 8, 10, 14, 15], "thi": [1, 6, 7, 10, 14, 15, 16], "page": [1, 2], "draw": [1, 10], "togeth": [1, 2, 3, 10], "some": [1, 2, 3, 14], "us": [1, 3, 6, 7, 8, 10, 14, 15, 16], "throughout": 1, "document": [1, 10, 11, 12], "consid": [1, 2, 3], "1d": [1, 14], "line": [1, 2, 3, 6, 7, 8, 10, 16], "scan": [1, 2, 3, 8, 10, 12, 13, 16], "A": [1, 2, 3, 6, 10, 12], "fix": [1, 10], "refer": [1, 3, 8], "i": [1, 2, 3, 10, 11, 12, 14, 15, 16], "e": [1, 10, 12], "motor": [1, 2, 6], "durat": [1, 8, 10], "In": [1, 6, 16], "diagram": 1, "abov": [1, 2, 3, 10, 14], "x": [1, 2, 3, 6, 7, 8, 10, 14, 16], "spec": [1, 2, 3, 5, 8, 12, 13], "ax": [1, 8, 10], "return": [1, 10, 12, 16], "should": [1, 3, 6, 10, 11, 14, 15, 16], "given": [1, 8, 10, 14], "singl": [1, 3, 6, 10], "multidimension": 1, "locat": 1, "space": [1, 10], "each": [1, 2, 3, 6, 8, 10, 12, 14, 16], "made": 1, "up": [1, 10, 11, 16], "lower": [1, 3, 6, 10, 12, 14], "midpoint": [1, 3, 8, 10, 12, 14], "upper": [1, 3, 6, 8, 10, 12, 14], "ar": [1, 2, 3, 6, 8, 10, 11, 12, 14, 16], "avail": 1, "an": [1, 2, 7, 8, 10, 12, 14], "inter": 1, "from": [1, 2, 3, 6, 7, 8, 10, 12, 15], "arrai": [1, 3, 6, 10, 12], "vector": 1, "three": 1, "thei": [1, 2, 3, 10], "describ": [1, 10], "trajectori": 1, "taken": [1, 10, 14], "while": [1, 11], "detector": [1, 2], "activ": [1, 15], "fly": [1, 3, 8, 10], "denot": 1, "differ": [1, 10], "colour": [1, 10, 14], "section": 1, "repeat": [1, 2, 10], "possibli": 1, "snake": [1, 3, 6, 8, 10], "seri": [1, 10], "along": [1, 3, 10], "number": [1, 2, 3, 10, 11], "whole": 1, "produc": [1, 2, 6, 8, 10, 12], "object": [1, 2, 3, 6, 10], "grid": [1, 3, 6, 8, 10], "would": [1, 2, 3, 14, 16], "two": [1, 2, 3, 10, 12, 14], "calcul": [1, 3, 6, 8, 10, 12], "consum": [1, 6, 8, 10], "rout": [1, 10], "through": [1, 2, 6, 8, 10, 11], "_stack_": 1, "If": [1, 2, 3, 10, 11, 14, 15], "wa": [1, 7], "within": [1, 2, 10, 14], "anoth": [1, 2, 10], "length": [1, 8, 10], "5": [1, 3, 6, 7, 8, 10, 14, 16], "contain": [1, 3, 6, 10, 11], "15": 1, "list": [1, 2, 3, 10], "which": [2, 3, 8, 10, 16], "when": [2, 3, 6, 8, 10, 11], "everi": [2, 10], "other": [2, 10], "run": [2, 6, 8, 10, 11, 13, 15], "revers": [2, 10], "merg": [2, 10], "mai": [2, 6, 10, 12, 14], "compar": 2, "unsquash": 2, "version": [2, 10, 12], "nest": [2, 3, 10], "slower": [2, 3, 10], "so": [2, 3, 6, 10, 15], "more": [2, 5, 8, 10], "than": [2, 8, 10], "onc": [2, 3, 6, 10], "time": [2, 3, 10, 11], "where": [2, 6, 10, 14], "case": 2, "The": [2, 3, 10, 11, 12, 14, 15, 16], "illustr": 2, "below": [2, 12], "onli": [2, 10, 14], "check_path_chang": [2, 10], "fals": [2, 6, 10], "pass": [2, 10, 16], "otherwis": [2, 10, 12], "fail": 2, "valueerror": 2, "take": [2, 3, 6], "set": [2, 10, 11, 12, 14], "slowest": [2, 3, 10], "move": [2, 3, 6, 10], "second": [2, 3, 10], "origin": 2, "make": [2, 3, 11, 14], "user": [2, 5, 8, 13], "had": 2, "demand": 2, "alwai": 2, "one": [2, 6, 10, 11, 14], "direct": 2, "could": [2, 6, 14], "invalid": 2, "For": [2, 3, 6, 10, 14], "exampl": [2, 6, 7, 8, 10, 14, 16], "non": [2, 3, 10], "y": [2, 3, 6, 7, 8, 10, 14, 16], "z": [2, 10, 14], "scanspec": [2, 3, 6, 7, 12, 14, 15, 16], "import": [2, 3, 6, 7, 8, 10, 14], "plot": [2, 8, 15, 16], "plot_spec": [2, 10, 14], "0": [2, 3, 6, 7, 8, 10, 12, 14, 16], "1": [2, 3, 6, 7, 8, 10, 14], "3": [2, 3, 6, 7, 8, 10, 14, 15, 16], "sourc": [2, 8, 10, 14, 15], "code": [2, 10, 12, 14, 16], "png": [2, 10, 14], "hire": [2, 10, 14], "pdf": [2, 10, 14], "we": [2, 3, 6, 7, 10, 11, 14, 16], "must": [2, 10], "even": 2, "order": [2, 10], "abl": 2, "keep": [2, 6], "jump": 2, "after": [2, 10, 12], "iter": [2, 3, 5, 8, 10, 14], "between": [2, 10, 12, 14], "first": [2, 3, 6, 10, 14], "apart": 2, "invari": 2, "mean": [2, 3, 10], "write": [2, 3], "data": [2, 3, 10], "reshap": [2, 3], "vd": [2, 3], "dimension": [2, 3, 8], "unfortun": 2, "neg": 2, "stride": 2, "support": [2, 10], "strategi": [2, 3], "need": [2, 3, 10, 15], "flag": 2, "explicitli": 2, "allow": [2, 16], "result": [2, 14], "potenti": 2, "surpris": 2, "tell": 3, "you": [3, 10, 11, 14, 15, 16], "paramet": [3, 7, 10, 16], "give": [3, 6, 16], "point": [3, 8, 10, 12, 13, 15], "let": [3, 7], "actual": [3, 10], "execut": [3, 6, 10], "interpret": [3, 10], "fastest": [3, 10], "faster": [3, 10], "per": [3, 10, 12], "posit": [3, 8, 10], "axi": [3, 6, 7, 10, 12, 16], "travers": [3, 10], "4": [3, 7, 8, 10, 14, 16], "6": [3, 7, 10, 14, 16], "2": [3, 6, 7, 8, 10], "len": [3, 6, 8, 10], "8": [3, 8, 10, 15], "product": [3, 7, 8, 10, 14, 16], "have": [3, 6, 10, 11], "same": [3, 8, 10, 11], "size": [3, 6, 10, 12], "outer": [3, 7, 10, 16], "inner": [3, 7, 10, 14, 16], "18": 3, "all": [3, 10, 11], "most": [3, 10, 11, 16], "compact": 3, "represent": [3, 10], "imagin": 3, "100x2000x2000": 3, "just": 3, "100": [3, 11], "2000": 3, "float64": 3, "32": 3, "8kb": 3, "ram": 3, "our": [3, 14], "form": [3, 10], "2gb": 3, "itself": 3, "like": [3, 8, 10, 14, 16], "over": [3, 8], "long": [3, 10], "period": 3, "sens": 3, "save": 3, "memori": [3, 6], "stop": [3, 7, 10, 16], "regular": 3, "caus": 3, "circl": [3, 8, 10, 14], "won": 3, "t": [3, 11], "depend": 3, "ani": [3, 10, 11, 12, 15], "its": [3, 7, 10], "specifi": [3, 8, 10], "written": 3, "disk": 3, "simplest": 3, "simpli": 3, "imag": 3, "setpoint": 3, "reader": 3, "pick": 3, "out": [3, 6], "requir": [3, 10, 15], "howev": 3, "inform": [3, 6, 10, 11], "hold": 3, "until": 3, "turn": [3, 7], "destroi": 3, "perform": [3, 8, 10], "reason": [3, 6], "advis": 3, "hdf": 3, "see": [3, 6, 10, 12, 14, 16], "detail": 3, "practic": [5, 8], "step": [5, 6, 8, 10, 12], "experienc": [5, 8], "serial": [5, 8, 10, 14], "deseri": [5, 8, 10, 14], "specif": [6, 10], "To": [6, 14, 16], "few": 6, "conduct": 6, "get": [6, 14], "method": [6, 10], "d": [6, 16], "print": [6, 8, 10], "simpl": [6, 14], "particularli": 6, "numpi": 6, "unpack": 6, "dictionari": [6, 7, 10], "bound": [6, 8, 10, 12, 14], "small": 6, "enough": 6, "fit": [6, 11], "machin": 6, "entir": 6, "segment": 6, "75": [6, 10], "25": 6, "instanc": 6, "shot": 6, "view": 6, "new": [6, 8, 10, 11, 13], "intermedi": 6, "mani": [6, 10], "wrapper": 6, "them": [6, 8, 10, 14], "also": [6, 8, 10, 11, 15], "maximum": [6, 10, 12], "core": [6, 8], "chunk": [6, 8, 10], "subset": 6, "start": [6, 7, 8, 10, 13, 14, 16], "num": [6, 7, 8, 10, 16], "someth": [6, 11], "turnaround": [6, 10, 14], "back": [6, 7], "forth": 6, "check": [6, 10, 11], "attribut": 6, "true": [6, 10], "sai": 6, "previou": [6, 10], "On": 6, "veri": 6, "last": [6, 10, 14], "insert": [6, 10], "row": 6, "ha": [7, 14, 15], "repr": 7, "show": [7, 14, 16], "instanti": 7, "recurs": [7, 10], "type": [7, 10, 14, 15, 16], "flyscan": [8, 10], "combin": [8, 10, 14], "spiral": [8, 10], "option": 8, "zip": [8, 10, 14], "concat": [8, 10], "compos": 8, "multipl": [8, 10], "region": 8, "restrict": [8, 10], "rather": 8, "expand": [8, 10], "reconstruct": 8, "server": 8, "It": [8, 10, 15], "cycler": 8, "dl": [8, 10, 15], "control": [8, 10, 15], "pypi": 8, "pip": [8, 15], "instal": [8, 13], "http": [8, 16], "github": [8, 11, 15], "io": 8, "releas": [8, 9, 15], "2d": [8, 10], "insid": [8, 10], "spend": [8, 10, 11], "12": [8, 10, 16], "10": [8, 10, 16], "radiu": [8, 10], "look": [8, 10], "directli": 8, "conveni": [8, 10], "1818181818181817": 8, "8333333333333333": 8, "7222222222222222": 8, "44": 8, "30": [8, 10], "ndarrai": [8, 10], "split": 8, "four": 8, "categori": 8, "access": 8, "link": 8, "top": [8, 10], "bar": 8, "tutori": [8, 14, 16], "rest": [8, 9, 10, 13, 15], "servic": [8, 12, 13, 15], "gener": [8, 10, 12, 13, 15], "typic": [8, 10, 13], "usag": [8, 13], "here": [8, 13, 14], "guid": 8, "explan": 8, "api": [8, 9, 16], "contribut": [8, 9], "project": [8, 9], "index": [8, 9, 10], "materi": [8, 9], "includ": [8, 9, 10, 14], "note": [8, 9], "level": 10, "modul": 10, "packag": 10, "class": 10, "subclass": 10, "visual": 10, "defin": [10, 14], "queri": 10, "field": 10, "structur": 10, "midpointsrespons": [10, 12], "__version__": 10, "str": 10, "versiongit": 10, "if_instance_do": 10, "cl": 10, "func": 10, "callabl": 10, "notimpl": 10, "helper": 10, "implement": 10, "oper": [10, 14], "overload": 10, "variabl": [10, 14], "alia": 10, "typevar": 10, "axespoint": 10, "map": [10, 16], "float": 10, "g": 10, "xmotor": 10, "ymotor": 10, "dict": 10, "none": 10, "gap": [10, 12], "np": 10, "base": 10, "repres": 10, "dure": 10, "suppli": 10, "linear": 10, "part": 10, "whether": [10, 12], "element": 10, "These": [10, 14], "present": 10, "extract": 10, "indic": [10, 12, 14], "calculate_gap": 10, "provid": 10, "modulo": 10, "recalcul": 10, "bool": 10, "concaten": 10, "self": 10, "both": [10, 12], "necessarili": 10, "inherit": 10, "reorder": 10, "forc": 10, "frames2": 10, "share": [10, 11], "fx": 10, "fy": 10, "7": 10, "snakedfram": 10, "altern": 10, "repetit": 10, "classmethod": 10, "from_fram": 10, "extend": 10, "past": 10, "gap_between_fram": 10, "frames1": 10, "end": [10, 11, 14], "squash_fram": 10, "output": [10, 14, 16], "input": [10, 14], "int": 10, "next": 10, "end_index": 10, "dtype": 10, "int64": 10, "better": 10, "instead": [10, 11], "mp": 10, "p": 10, "properti": 10, "discriminated_union_of_subclass": 10, "super_cl": 10, "discrimin": 10, "config": 10, "baseconfig": 10, "add": 10, "union": 10, "identifi": 10, "raw": 10, "json": [10, 16], "name": [10, 16], "param": 10, "valid": [10, 12], "pars": 10, "pydant": 10, "parse_obj_a": 10, "express": 10, "abc": 10, "abstractmethod": 10, "def": 10, "dataclass": 10, "left": 10, "right": 10, "subtract": 10, "intliter": 10, "valu": 10, "my_sum": 10, "assert": 10, "13": 10, "superclass": 10, "determin": 10, "default": 10, "decor": 10, "necessari": 10, "function": [10, 14], "strictconfig": 10, "configur": 10, "static": 10, "special": 10, "kei": 10, "serializ": 10, "abstract": 10, "baseclass": 10, "operand": 10, "integ": 10, "wrap": 10, "exclud": 10, "outsid": 10, "shape": 10, "tupl": 10, "final": 10, "simplifi": 10, "tandem": 10, "obj": 10, "fieldinfo": 10, "pydanticundefin": 10, "descript": [10, 12], "Will": 10, "extra": [10, 15], "liter": 10, "entireti": 10, "min": 10, "consecut": 10, "empti": 10, "want": [10, 11, 14, 16], "do": [10, 14, 15, 16], "There": [10, 16], "arrow": [10, 14], "hand": 10, "appear": 10, "earlier": 10, "later": [10, 15], "parallel": 10, "individu": 10, "l2": 10, "l1": 10, "r1": 10, "modifi": 10, "fall": 10, "push": 10, "down": 10, "avoid": 10, "bracket": 10, "span": 10, "join": 10, "dimens": 10, "what": [10, 11, 14], "linearli": 10, "extrem": 10, "motion": [10, 14], "x_axi": 10, "y_axi": 10, "x_start": 10, "centr": [10, 14], "y_start": 10, "x_rang": 10, "width": 10, "y_rang": 10, "rotat": 10, "much": 10, "angl": 10, "archimedean": 10, "height": 10, "50": 10, "dr": 10, "ring": 10, "equal": 10, "continu": 10, "combinationof": 10, "unionof": [10, 14], "intersectionof": [10, 14], "differenceof": [10, 14], "symmetricdifferenceof": [10, 14], "rang": 10, "rectangl": 10, "polygon": 10, "ellips": 10, "either": 10, "axis_set": 10, "overlap": 10, "get_mask": 10, "ones": 10, "b": 10, "r": 10, "match": 10, "minimum": [10, 12], "inclus": 10, "max": 10, "x_min": 10, "y_min": 10, "x_max": 10, "y_max": 10, "clockwis": 10, "xy": 10, "x_vert": 10, "nx1": 10, "coordin": [10, 16], "vertic": 10, "min_len": 10, "y_vert": 10, "x_middl": 10, "central": 10, "y_middl": 10, "exc_min": 10, "9": 10, "x_radiu": 10, "y_radiu": 10, "degre": 10, "find_region": 10, "yield": 10, "children": 10, "grei": [10, 14], "mark": [10, 14], "fill": 10, "less": 10, "200": [10, 12], "shown": 10, "black": [10, 14], "cube": 10, "variou": 10, "format": [10, 12, 16], "validrespons": [10, 12], "input_spec": 10, "valid_spec": 10, "respons": [10, 12], "model": 10, "pointsformat": 10, "qualnam": 10, "boundari": 10, "enum": 10, "pointsrequest": 10, "max_fram": [10, 16], "100000": 10, "float_list": [10, 16], "request": [10, 11, 12, 16], "generatedpointsrespons": 10, "total_fram": [10, 16], "total": 10, "returned_fram": [10, 16], "due": 10, "downsampl": 10, "etc": 10, "boundsrespons": [10, 12], "gaprespons": [10, 12], "boolean": 10, "presenc": 10, "smalleststeprespons": [10, 12], "absolut": [10, 12], "smallest": [10, 12], "distanc": 10, "per_axi": 10, "about": 10, "bodi": 10, "ellipsi": 10, "jsonrespons": 10, "wether": [10, 12], "viabl": [10, 12], "canon": [10, 12], "error": [10, 12, 16], "middl": [10, 12, 16], "info": [10, 12], "correspond": [10, 12], "smallest_step": 10, "ignor": [10, 12], "run_app": 10, "cor": [10, 16], "port": 10, "8080": [10, 16], "applic": [10, 16], "scanspec_schema_text": 10, "openapi": [10, 16], "schema": 10, "string": 10, "welcom": 11, "pull": 11, "handl": 11, "pleas": 11, "exist": [11, 15], "befor": 11, "file": 11, "great": 11, "idea": 11, "involv": 11, "big": 11, "ticket": 11, "sure": 11, "don": 11, "your": 11, "might": [11, 14], "scope": 11, "offer": 11, "place": 11, "ask": 11, "question": 11, "open": [11, 16], "obviou": 11, "close": 11, "rais": 11, "doe": 11, "librari": 11, "bug": 11, "free": 11, "significantli": 11, "reduc": 11, "easili": 11, "caught": 11, "remain": 11, "improv": 11, "environ": 11, "test": 11, "standard": 11, "follow": [11, 14], "endpoint": [12, 16], "post": [12, 16], "arg": 12, "statu": 12, "ok": 12, "success": 12, "422": [12, 16], "unprocess": 12, "entiti": 12, "smalleststep": 12, "increas": 14, "complex": 14, "ll": 14, "enter": 14, "interact": 14, "python": 14, "termin": [14, 15, 16], "graph": 14, "dot": 14, "arrowhead": 14, "cross": 14, "quickli": 14, "client": [14, 16], "evalu": 14, "ad": 14, "program": 14, "disjoint": 14, "guarante": 14, "appli": 14, "demonstr": 14, "read": 14, "system": 14, "send": [14, 16], "python3": 15, "recommend": 15, "interfer": 15, "softwar": 15, "m": 15, "venv": 15, "bin": 15, "now": [15, 16], "featur": 15, "current": 15, "git": 15, "com": 15, "commandlin": [15, 16], "interfac": 15, "been": 15, "nice": 16, "util": 16, "expos": 16, "those": 16, "web": 16, "gui": 16, "bring": 16, "compat": 16, "localhost": 16, "press": 16, "ctrl": 16, "c": 16, "quit": 16, "browser": 16, "doc": 16, "swagger": 16, "ui": 16, "editor": 16, "curl": 16, "command": 16, "ensur": 16, "h": 16, "accept": 16, "content": 16, "becaus": 16, "miss": 16, "sever": 16, "inspect": 16, "organis": 16, "1024": 16, "333333333333333": 16, "666666666666667": 16, "000000000000002": 16}, "objects": {"": [[12, 0, 1, "post--bounds", "/bounds"], [12, 0, 1, "post--gap", "/gap"], [12, 0, 1, "post--midpoints", "/midpoints"], [12, 0, 1, "post--smalleststep", "/smalleststep"], [12, 0, 1, "post--valid", "/valid"], [10, 1, 0, "-", "scanspec"]], "scanspec": [[10, 1, 0, "-", "core"], [10, 1, 0, "-", "plot"], [10, 1, 0, "-", "regions"], [10, 1, 0, "-", "service"], [10, 1, 0, "-", "specs"]], "scanspec.core": [[10, 2, 1, "", "AxesPoints"], [10, 3, 1, "", "Axis"], [10, 3, 1, "", "Frames"], [10, 3, 1, "", "Midpoints"], [10, 3, 1, "", "Path"], [10, 3, 1, "", "SnakedFrames"], [10, 3, 1, "", "StrictConfig"], [10, 7, 1, "", "discriminated_union_of_subclasses"], [10, 7, 1, "", "gap_between_frames"], [10, 7, 1, "", "if_instance_do"], [10, 7, 1, "", "squash_frames"]], "scanspec.core.Frames": [[10, 4, 1, "", "axes"], [10, 4, 1, "", "concat"], [10, 4, 1, "", "extract"], [10, 5, 1, "", "gap"], [10, 5, 1, "", "lower"], [10, 5, 1, "", "midpoints"], [10, 5, 1, "", "upper"], [10, 4, 1, "", "zip"]], "scanspec.core.Midpoints": [[10, 6, 1, "", "axes"], [10, 5, 1, "", "stack"]], "scanspec.core.Path": [[10, 4, 1, "", "consume"], [10, 5, 1, "", "end_index"], [10, 5, 1, "", "index"], [10, 5, 1, "", "lengths"], [10, 5, 1, "", "stack"]], "scanspec.core.SnakedFrames": [[10, 4, 1, "", "extract"], [10, 4, 1, "", "from_frames"]], "scanspec.plot": [[10, 7, 1, "", "plot_spec"]], "scanspec.regions": [[10, 3, 1, "", "Circle"], [10, 3, 1, "", "CombinationOf"], [10, 3, 1, "", "DifferenceOf"], [10, 3, 1, "", "Ellipse"], [10, 3, 1, "", "IntersectionOf"], [10, 3, 1, "", "Polygon"], [10, 3, 1, "", "Range"], [10, 3, 1, "", "Rectangle"], [10, 3, 1, "", "Region"], [10, 3, 1, "", "SymmetricDifferenceOf"], [10, 3, 1, "", "UnionOf"], [10, 7, 1, "", "find_regions"], [10, 7, 1, "", "get_mask"]], "scanspec.regions.Region": [[10, 4, 1, "", "axis_sets"], [10, 4, 1, "", "mask"]], "scanspec.scanspec": [[10, 2, 1, "", "__version__"]], "scanspec.service": [[10, 3, 1, "", "BoundsResponse"], [10, 3, 1, "", "GapResponse"], [10, 3, 1, "", "GeneratedPointsResponse"], [10, 3, 1, "", "MidpointsResponse"], [10, 2, 1, "", "Points"], [10, 3, 1, "", "PointsFormat"], [10, 3, 1, "", "PointsRequest"], [10, 3, 1, "", "SmallestStepResponse"], [10, 3, 1, "", "ValidResponse"], [10, 7, 1, "", "bounds"], [10, 7, 1, "", "gap"], [10, 7, 1, "", "midpoints"], [10, 7, 1, "", "run_app"], [10, 7, 1, "", "scanspec_schema_text"], [10, 7, 1, "", "smallest_step"], [10, 7, 1, "", "valid"]], "scanspec.specs": [[10, 3, 1, "", "Concat"], [10, 2, 1, "", "DURATION"], [10, 3, 1, "", "Line"], [10, 3, 1, "", "Mask"], [10, 3, 1, "", "Product"], [10, 3, 1, "", "Repeat"], [10, 3, 1, "", "Snake"], [10, 3, 1, "", "Spec"], [10, 3, 1, "", "Spiral"], [10, 3, 1, "", "Squash"], [10, 3, 1, "", "Static"], [10, 3, 1, "", "Zip"], [10, 7, 1, "", "fly"], [10, 7, 1, "", "step"]], "scanspec.specs.Line": [[10, 4, 1, "", "bounded"]], "scanspec.specs.Spec": [[10, 4, 1, "", "axes"], [10, 4, 1, "", "calculate"], [10, 4, 1, "", "concat"], [10, 4, 1, "", "deserialize"], [10, 4, 1, "", "frames"], [10, 4, 1, "", "midpoints"], [10, 4, 1, "", "serialize"], [10, 4, 1, "", "shape"], [10, 4, 1, "", "zip"]], "scanspec.specs.Spiral": [[10, 4, 1, "", "spaced"]], "scanspec.specs.Static": [[10, 4, 1, "", "duration"]]}, "objtypes": {"0": "http:post", "1": "py:module", "2": "py:data", "3": "py:class", "4": "py:method", "5": "py:attribute", "6": "py:property", "7": "py:function"}, "objnames": {"0": ["http", "post", "HTTP post"], "1": ["py", "module", "Python module"], "2": ["py", "data", "Python data"], "3": ["py", "class", "Python class"], "4": ["py", "method", "Python method"], "5": ["py", "attribute", "Python attribute"], "6": ["py", "property", "Python property"], "7": ["py", "function", "Python function"]}, "titleterms": {"explan": 0, "technic": 1, "term": 1, "axi": [1, 2], "point": [1, 6, 16], "frame": [1, 2, 3], "stack": [1, 3], "path": [1, 2], "why": [2, 3], "squash": [2, 3], "mask": [2, 14], "can": 2, "chang": 2, "unsnak": 2, "snake": [2, 14], "odd": 2, "length": 2, "thi": [2, 3], "matter": 2, "creat": [3, 14, 15], "an": 3, "exampl": 3, "them": 3, "flat": 3, "sequenc": 3, "what": 3, "about": 3, "region": [3, 10, 14], "how": [3, 5, 6, 7, 8], "doe": 3, "relat": 3, "hdf5": 3, "dimens": 3, "index": 4, "guid": [5, 11], "iter": 6, "spec": [6, 7, 10, 14, 16], "If": 6, "you": 6, "onli": 6, "need": 6, "midpoint": [6, 16], "do": 6, "fly": 6, "scan": [6, 14], "want": 6, "most": 6, "perform": 6, "option": 6, "know": 6, "whether": 6, "i": [6, 8], "gap": 6, "between": 6, "serial": 7, "deseri": 7, "scanspec": [8, 10], "document": 8, "structur": 8, "refer": 9, "api": [10, 12], "core": 10, "plot": [10, 14], "servic": [10, 16], "contribut": 11, "project": 11, "issu": 11, "discuss": 11, "code": 11, "coverag": 11, "develop": 11, "rest": [12, 16], "tutori": 13, "line": 14, "from": 14, "commandlin": 14, "2": 14, "ax": 14, "grid": 14, "multipl": 14, "conclus": 14, "instal": 15, "check": 15, "your": 15, "version": 15, "python": 15, "virtual": 15, "environ": 15, "librari": 15, "run": 16, "gener": 16, "server": 16, "valid": 16}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Explanations": [[0, "explanations"]], "Technical Terms": [[1, "technical-terms"]], "Axis": [[1, "axis"]], "Point": [[1, "point"]], "Frame": [[1, "frame"]], "Stack of Frames": [[1, "stack-of-frames"]], "Path": [[1, "path"]], "Why Squash (and Mask) can change the Path": [[2, "why-squash-and-mask-can-change-the-path"]], "Squash unsnaked axis into a snaked Frames": [[2, "squash-unsnaked-axis-into-a-snaked-frames"]], "Squash snaked axis into unsnaked odd length axis": [[2, "squash-snaked-axis-into-unsnaked-odd-length-axis"]], "Why this matters": [[2, "why-this-matters"]], "Why create a stack of Frames?": [[3, "why-create-a-stack-of-frames"]], "An Example": [[3, "an-example"]], "Why not squash them into a flat sequence?": [[3, "why-not-squash-them-into-a-flat-sequence"]], "What about Regions?": [[3, "what-about-regions"]], "How does this stack relate to HDF5 Dimensions?": [[3, "how-does-this-stack-relate-to-hdf5-dimensions"]], "Index": [[4, "index"]], "How-to Guides": [[5, "how-to-guides"]], "How to Iterate a Spec": [[6, "how-to-iterate-a-spec"]], "If you only need the midpoints": [[6, "if-you-only-need-the-midpoints"]], "If you need to do a fly scan": [[6, "if-you-need-to-do-a-fly-scan"]], "If you want the most performant option": [[6, "if-you-want-the-most-performant-option"]], "If you need to know whether there is a gap between points": [[6, "if-you-need-to-know-whether-there-is-a-gap-between-points"]], "How to Serialize and Deserialize a Spec": [[7, "how-to-serialize-and-deserialize-a-spec"]], "How to Serialize": [[7, "how-to-serialize"]], "How to Deserialize": [[7, "how-to-deserialize"]], "scanspec": [[8, "scanspec"], [10, "scanspec"]], "How the documentation is structured": [[8, "how-the-documentation-is-structured"]], "Reference": [[9, "reference"]], "API": [[10, "module-scanspec"]], "scanspec.core": [[10, "scanspec-core"]], "scanspec.specs": [[10, "scanspec-specs"]], "scanspec.regions": [[10, "scanspec-regions"]], "scanspec.plot": [[10, "scanspec-plot"]], "scanspec.service": [[10, "scanspec-service"]], "Contributing to the project": [[11, "contributing-to-the-project"]], "Issue or Discussion?": [[11, "issue-or-discussion"]], "Code coverage": [[11, "code-coverage"]], "Developer guide": [[11, "developer-guide"]], "REST API": [[12, "rest-api"]], "Tutorials": [[13, "tutorials"]], "Creating a Scan Spec": [[14, "creating-a-scan-spec"]], "Line": [[14, "line"]], "Plotting from the commandline": [[14, "plotting-from-the-commandline"]], "Line with 2 axes": [[14, "line-with-2-axes"]], "Grid": [[14, "grid"]], "Snaked Grid": [[14, "snaked-grid"]], "Masking with Regions": [[14, "masking-with-regions"]], "Masking with Multiple Regions": [[14, "masking-with-multiple-regions"]], "Conclusion": [[14, "conclusion"]], "Installation": [[15, "installation"]], "Check your version of python": [[15, "check-your-version-of-python"]], "Create a virtual environment": [[15, "create-a-virtual-environment"]], "Installing the library": [[15, "installing-the-library"]], "Running a REST service for generating points": [[16, "running-a-rest-service-for-generating-points"]], "Running the server": [[16, "running-the-server"]], "Validating a Spec": [[16, "validating-a-spec"]], "Generating Midpoints": [[16, "generating-midpoints"]]}, "indexentries": {"axespoints (in module scanspec.core)": [[10, "scanspec.core.AxesPoints"]], "axis (class in scanspec.core)": [[10, "scanspec.core.Axis"]], "boundsresponse (class in scanspec.service)": [[10, "scanspec.service.BoundsResponse"]], "circle (class in scanspec.regions)": [[10, "scanspec.regions.Circle"]], "combinationof (class in scanspec.regions)": [[10, "scanspec.regions.CombinationOf"]], "concat (class in scanspec.specs)": [[10, "scanspec.specs.Concat"]], "duration (in module scanspec.specs)": [[10, "scanspec.specs.DURATION"]], "differenceof (class in scanspec.regions)": [[10, "scanspec.regions.DifferenceOf"]], "ellipse (class in scanspec.regions)": [[10, "scanspec.regions.Ellipse"]], "frames (class in scanspec.core)": [[10, "scanspec.core.Frames"]], "gapresponse (class in scanspec.service)": [[10, "scanspec.service.GapResponse"]], "generatedpointsresponse (class in scanspec.service)": [[10, "scanspec.service.GeneratedPointsResponse"]], "intersectionof (class in scanspec.regions)": [[10, "scanspec.regions.IntersectionOf"]], "line (class in scanspec.specs)": [[10, "scanspec.specs.Line"]], "mask (class in scanspec.specs)": [[10, "scanspec.specs.Mask"]], "midpoints (class in scanspec.core)": [[10, "scanspec.core.Midpoints"]], "midpointsresponse (class in scanspec.service)": [[10, "scanspec.service.MidpointsResponse"]], "path (class in scanspec.core)": [[10, "scanspec.core.Path"]], "points (in module scanspec.service)": [[10, "scanspec.service.Points"]], "pointsformat (class in scanspec.service)": [[10, "scanspec.service.PointsFormat"]], "pointsrequest (class in scanspec.service)": [[10, "scanspec.service.PointsRequest"]], "polygon (class in scanspec.regions)": [[10, "scanspec.regions.Polygon"]], "product (class in scanspec.specs)": [[10, "scanspec.specs.Product"]], "range (class in scanspec.regions)": [[10, "scanspec.regions.Range"]], "rectangle (class in scanspec.regions)": [[10, "scanspec.regions.Rectangle"]], "region (class in scanspec.regions)": [[10, "scanspec.regions.Region"]], "repeat (class in scanspec.specs)": [[10, "scanspec.specs.Repeat"]], "smalleststepresponse (class in scanspec.service)": [[10, "scanspec.service.SmallestStepResponse"]], "snake (class in scanspec.specs)": [[10, "scanspec.specs.Snake"]], "snakedframes (class in scanspec.core)": [[10, "scanspec.core.SnakedFrames"]], "spec (class in scanspec.specs)": [[10, "scanspec.specs.Spec"]], "spiral (class in scanspec.specs)": [[10, "scanspec.specs.Spiral"]], "squash (class in scanspec.specs)": [[10, "scanspec.specs.Squash"]], "static (class in scanspec.specs)": [[10, "scanspec.specs.Static"]], "strictconfig (class in scanspec.core)": [[10, "scanspec.core.StrictConfig"]], "symmetricdifferenceof (class in scanspec.regions)": [[10, "scanspec.regions.SymmetricDifferenceOf"]], "unionof (class in scanspec.regions)": [[10, "scanspec.regions.UnionOf"]], "validresponse (class in scanspec.service)": [[10, "scanspec.service.ValidResponse"]], "zip (class in scanspec.specs)": [[10, "scanspec.specs.Zip"]], "axes (scanspec.core.midpoints property)": [[10, "scanspec.core.Midpoints.axes"]], "axes() (scanspec.core.frames method)": [[10, "scanspec.core.Frames.axes"]], "axes() (scanspec.specs.spec method)": [[10, "scanspec.specs.Spec.axes"]], "axis_sets() (scanspec.regions.region method)": [[10, "scanspec.regions.Region.axis_sets"]], "bounded() (scanspec.specs.line class method)": [[10, "scanspec.specs.Line.bounded"]], "bounds() (in module scanspec.service)": [[10, "scanspec.service.bounds"]], "calculate() (scanspec.specs.spec method)": [[10, "scanspec.specs.Spec.calculate"]], "concat() (scanspec.core.frames method)": [[10, "scanspec.core.Frames.concat"]], "concat() (scanspec.specs.spec method)": [[10, "scanspec.specs.Spec.concat"]], "consume() (scanspec.core.path method)": [[10, "scanspec.core.Path.consume"]], "deserialize() (scanspec.specs.spec class method)": [[10, "scanspec.specs.Spec.deserialize"]], "discriminated_union_of_subclasses() (in module scanspec.core)": [[10, "scanspec.core.discriminated_union_of_subclasses"]], "duration() (scanspec.specs.static class method)": [[10, "scanspec.specs.Static.duration"]], "end_index (scanspec.core.path attribute)": [[10, "scanspec.core.Path.end_index"]], "extract() (scanspec.core.frames method)": [[10, "scanspec.core.Frames.extract"]], "extract() (scanspec.core.snakedframes method)": [[10, "scanspec.core.SnakedFrames.extract"]], "find_regions() (in module scanspec.regions)": [[10, "scanspec.regions.find_regions"]], "fly() (in module scanspec.specs)": [[10, "scanspec.specs.fly"]], "frames() (scanspec.specs.spec method)": [[10, "scanspec.specs.Spec.frames"]], "from_frames() (scanspec.core.snakedframes class method)": [[10, "scanspec.core.SnakedFrames.from_frames"]], "gap (scanspec.core.frames attribute)": [[10, "scanspec.core.Frames.gap"]], "gap() (in module scanspec.service)": [[10, "scanspec.service.gap"]], "gap_between_frames() (in module scanspec.core)": [[10, "scanspec.core.gap_between_frames"]], "get_mask() (in module scanspec.regions)": [[10, "scanspec.regions.get_mask"]], "if_instance_do() (in module scanspec.core)": [[10, "scanspec.core.if_instance_do"]], "index (scanspec.core.path attribute)": [[10, "scanspec.core.Path.index"]], "lengths (scanspec.core.path attribute)": [[10, "scanspec.core.Path.lengths"]], "lower (scanspec.core.frames attribute)": [[10, "scanspec.core.Frames.lower"]], "mask() (scanspec.regions.region method)": [[10, "scanspec.regions.Region.mask"]], "midpoints (scanspec.core.frames attribute)": [[10, "scanspec.core.Frames.midpoints"]], "midpoints() (in module scanspec.service)": [[10, "scanspec.service.midpoints"]], "midpoints() (scanspec.specs.spec method)": [[10, "scanspec.specs.Spec.midpoints"]], "module": [[10, "module-scanspec"], [10, "module-scanspec.core"], [10, "module-scanspec.plot"], [10, "module-scanspec.regions"], [10, "module-scanspec.service"], [10, "module-scanspec.specs"]], "plot_spec() (in module scanspec.plot)": [[10, "scanspec.plot.plot_spec"]], "run_app() (in module scanspec.service)": [[10, "scanspec.service.run_app"]], "scanspec": [[10, "module-scanspec"]], "scanspec.__version__ (in module scanspec)": [[10, "scanspec.scanspec.__version__"]], "scanspec.core": [[10, "module-scanspec.core"]], "scanspec.plot": [[10, "module-scanspec.plot"]], "scanspec.regions": [[10, "module-scanspec.regions"]], "scanspec.service": [[10, "module-scanspec.service"]], "scanspec.specs": [[10, "module-scanspec.specs"]], "scanspec_schema_text() (in module scanspec.service)": [[10, "scanspec.service.scanspec_schema_text"]], "serialize() (scanspec.specs.spec method)": [[10, "scanspec.specs.Spec.serialize"]], "shape() (scanspec.specs.spec method)": [[10, "scanspec.specs.Spec.shape"]], "smallest_step() (in module scanspec.service)": [[10, "scanspec.service.smallest_step"]], "spaced() (scanspec.specs.spiral class method)": [[10, "scanspec.specs.Spiral.spaced"]], "squash_frames() (in module scanspec.core)": [[10, "scanspec.core.squash_frames"]], "stack (scanspec.core.midpoints attribute)": [[10, "scanspec.core.Midpoints.stack"]], "stack (scanspec.core.path attribute)": [[10, "scanspec.core.Path.stack"]], "step() (in module scanspec.specs)": [[10, "scanspec.specs.step"]], "upper (scanspec.core.frames attribute)": [[10, "scanspec.core.Frames.upper"]], "valid() (in module scanspec.service)": [[10, "scanspec.service.valid"]], "zip() (scanspec.core.frames method)": [[10, "scanspec.core.Frames.zip"]], "zip() (scanspec.specs.spec method)": [[10, "scanspec.specs.Spec.zip"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["explanations", "explanations/decisions", "explanations/decisions/0001-record-architecture-decisions", "explanations/decisions/0002-switched-to-python-copier-template", "explanations/technical-terms", "explanations/why-squash-can-change-path", "explanations/why-stack-frames", "genindex", "how-to", "how-to/contribute", "how-to/iterate-a-spec", "how-to/run-container", "how-to/serialize-a-spec", "index", "reference", "reference/api", "reference/rest_api", "tutorials", "tutorials/creating-a-spec", "tutorials/installation", "tutorials/rest-service"], "filenames": ["explanations.md", "explanations/decisions.md", "explanations/decisions/0001-record-architecture-decisions.md", "explanations/decisions/0002-switched-to-python-copier-template.md", "explanations/technical-terms.rst", "explanations/why-squash-can-change-path.rst", "explanations/why-stack-frames.rst", "genindex.md", "how-to.md", "how-to/contribute.md", "how-to/iterate-a-spec.rst", "how-to/run-container.md", "how-to/serialize-a-spec.rst", "index.md", "reference.md", "reference/api.md", "reference/rest_api.md", "tutorials.md", "tutorials/creating-a-spec.rst", "tutorials/installation.md", "tutorials/rest-service.rst"], "titles": ["Explanations", "Architectural Decision Records", "1. Record architecture decisions", "2. Adopt python-copier-template for project structure", "Technical Terms", "Why Squash (and Mask) can change the Path", "Why create a stack of Frames?", "Index", "How-to Guides", "Contribute to the project", "How to Iterate a Spec", "Run in a container", "How to Serialize and Deserialize a Spec", "scanspec", "Reference", "API", "REST API", "Tutorials", "Creating a Scan Spec", "Installation", "Running a REST service for generating points"], "terms": {"how": [0, 9, 15, 18, 20], "work": [0, 10, 13], "why": [0, 4, 10, 13, 15], "wai": [0, 1, 10, 13, 15], "architectur": [0, 13], "decis": [0, 13], "record": [0, 13], "technic": [0, 13, 14, 15], "term": [0, 13, 15], "squash": [0, 13, 15], "mask": [0, 6, 13, 15], "can": [0, 3, 4, 6, 9, 10, 12, 13, 15, 16, 18, 19, 20], "chang": [0, 3, 6, 9, 13, 15], "path": [0, 6, 10, 13, 15, 18, 19], "creat": [0, 2, 4, 5, 9, 10, 13, 15, 17, 20], "stack": [0, 5, 10, 13, 15], "frame": [0, 10, 13, 15, 16, 18], "ar": [1, 4, 5, 6, 9, 10, 11, 13, 15, 16, 18, 20], "made": [1, 2, 4], "throughout": [1, 4], "project": [1, 2, 8, 13], "": [1, 2, 9], "lifetim": 1, "As": [1, 3], "keep": [1, 5, 10], "track": 1, "we": [1, 2, 3, 5, 6, 9, 10, 12, 15, 18, 20], "adr": [1, 2], "list": [1, 4, 5, 6, 15], "below": [1, 5, 16], "1": [1, 5, 6, 10, 12, 13, 15, 18], "2": [1, 6, 10, 12, 13, 15], "adopt": 1, "python": [1, 9, 13, 18], "copier": [1, 9], "templat": [1, 9], "structur": [1, 15], "For": [1, 5, 6, 9, 10, 15, 18], "more": [1, 5, 8, 9, 13, 15], "inform": [1, 6, 10, 15], "see": [1, 2, 6, 9, 10, 15, 16, 18, 20], "thi": [1, 2, 3, 4, 9, 10, 12, 15, 18, 19, 20], "blog": 1, "michael": [1, 2], "nygard": [1, 2], "accept": [2, 3, 20], "need": [2, 5, 6, 9, 15, 19], "us": [2, 3, 4, 6, 9, 10, 11, 12, 13, 15, 18, 19, 20], "describ": [2, 4, 15], "articl": 2, "link": [2, 13], "abov": [2, 4, 5, 6, 15, 18], "To": [2, 10, 11, 18, 20], "new": [2, 9, 10, 13, 15, 17], "copi": 2, "past": [2, 15], "from": [2, 3, 4, 5, 6, 10, 11, 12, 13, 15, 16, 19], "exist": [2, 9, 19], "ones": [2, 15], "should": [3, 4, 6, 10, 15, 18, 19, 20], "follow": [3, 18], "The": [3, 5, 6, 15, 16, 18, 19, 20], "ensur": [3, 20], "consist": 3, "develop": 3, "environ": [3, 9], "packag": [3, 15], "manag": 3, "have": [3, 6, 9, 10, 15], "switch": 3, "modul": [3, 15], "fix": [3, 4, 15], "set": [3, 5, 9, 15, 16, 18], "tool": 3, "pull": [3, 9, 11], "updat": 3, "latest": 3, "techniqu": 3, "mai": [3, 5, 10, 15, 16, 18], "could": [3, 5, 10, 18], "differ": [3, 4, 15], "lint": 3, "format": [3, 15, 16, 20], "pip": [3, 13, 19], "venv": [3, 19], "setup": 3, "ci": 3, "cd": 3, "page": [4, 5], "draw": [4, 15], "togeth": [4, 5, 6, 15], "some": [4, 5, 6, 18], "document": [4, 15, 16], "consid": [4, 5, 6], "1d": [4, 18], "line": [4, 5, 6, 10, 12, 13, 15, 20], "scan": [4, 5, 6, 13, 15, 16, 17, 20], "A": [4, 5, 6, 10, 15, 16], "refer": [4, 6, 13], "i": [4, 5, 6, 9, 15, 16, 18, 19, 20], "e": [4, 15, 16], "motor": [4, 5, 10], "durat": [4, 13, 15], "In": [4, 10, 20], "diagram": 4, "x": [4, 5, 6, 10, 12, 13, 15, 18, 20], "spec": [4, 5, 6, 8, 13, 16, 17], "ax": [4, 13, 15], "return": [4, 15, 16, 20], "given": [4, 13, 15, 18], "singl": [4, 6, 10, 15], "multidimension": 4, "locat": 4, "space": [4, 15], "each": [4, 5, 6, 10, 13, 15, 16, 18, 20], "up": [4, 9, 15, 20], "lower": [4, 6, 10, 15, 16, 18], "midpoint": [4, 6, 13, 15, 16, 18], "upper": [4, 6, 10, 13, 15, 16, 18], "avail": [4, 11], "an": [4, 5, 12, 13, 15, 16, 18], "inter": 4, "arrai": [4, 6, 10, 15, 16], "vector": 4, "three": 4, "thei": [4, 5, 6, 15], "trajectori": 4, "taken": [4, 15, 18], "while": [4, 9], "detector": [4, 5], "activ": [4, 19], "fly": [4, 6, 13, 15], "denot": 4, "colour": [4, 15, 18], "section": 4, "repeat": [4, 5, 15], "possibli": 4, "snake": [4, 6, 10, 13, 15], "seri": [4, 15], "along": [4, 6, 15], "number": [4, 5, 6, 9, 11, 15], "whole": 4, "produc": [4, 5, 10, 13, 15, 16], "object": [4, 5, 6, 10, 15], "grid": [4, 6, 10, 13, 15], "would": [4, 5, 6, 18, 20], "two": [4, 5, 6, 15, 16, 18], "calcul": [4, 6, 10, 13, 15, 16], "consum": [4, 10, 13, 15], "rout": [4, 15], "through": [4, 5, 9, 10, 13, 15], "_stack_": 4, "If": [4, 5, 6, 9, 15, 18, 19], "wa": [4, 9, 12], "within": [4, 5, 15, 18], "anoth": [4, 5, 15], "length": [4, 13, 15], "5": [4, 6, 10, 12, 13, 15, 18, 20], "contain": [4, 6, 8, 9, 10, 13, 15], "15": 4, "which": [5, 6, 13, 15, 20], "when": [5, 6, 9, 10, 13, 15], "everi": [5, 15], "other": [5, 15], "run": [5, 8, 9, 10, 13, 15, 17, 19], "revers": [5, 15], "merg": [5, 15], "compar": 5, "unsquash": 5, "version": [5, 11, 15, 16], "nest": [5, 6, 15], "slower": [5, 6, 15], "so": [5, 6, 10, 15, 19], "than": [5, 13, 15], "onc": [5, 6, 10, 15], "time": [5, 6, 9, 15], "where": [5, 10, 15, 18], "case": 5, "illustr": 5, "onli": [5, 15, 18], "check_path_chang": [5, 15], "fals": [5, 10, 15], "pass": [5, 15, 20], "otherwis": [5, 15, 16], "fail": 5, "valueerror": 5, "take": [5, 6, 10], "slowest": [5, 6, 15], "move": [5, 6, 10, 15], "second": [5, 6, 15], "origin": 5, "make": [5, 6, 9, 18], "user": [5, 8, 13, 17], "had": 5, "demand": 5, "alwai": 5, "one": [5, 9, 10, 15, 18], "direct": 5, "invalid": 5, "exampl": [5, 10, 12, 13, 15, 18, 20], "non": [5, 6, 15], "y": [5, 6, 10, 12, 13, 15, 18, 20], "z": [5, 15, 18], "scanspec": [5, 6, 10, 11, 12, 16, 18, 19, 20], "import": [5, 6, 10, 12, 13, 15, 18], "plot": [5, 13, 19, 20], "plot_spec": [5, 15, 18], "0": [5, 6, 10, 12, 13, 15, 16, 18, 20], "3": [5, 6, 10, 12, 13, 15, 18, 19, 20], "sourc": [5, 9, 13, 15, 18, 19], "code": [5, 15, 16, 18, 20], "png": [5, 15, 18], "hire": [5, 15, 18], "pdf": [5, 15, 18], "must": [5, 15], "even": 5, "order": [5, 15], "abl": 5, "jump": 5, "after": [5, 15, 16], "iter": [5, 6, 8, 13, 15, 18], "between": [5, 15, 16, 18], "first": [5, 6, 10, 15, 18], "apart": 5, "invari": 5, "mean": [5, 6, 15], "write": [5, 6], "data": [5, 6, 15], "reshap": [5, 6], "vd": [5, 6], "dimension": [5, 6, 13], "unfortun": 5, "neg": 5, "stride": 5, "support": [5, 15], "strategi": [5, 6], "flag": 5, "explicitli": 5, "allow": [5, 20], "result": [5, 18], "potenti": 5, "surpris": 5, "tell": 6, "you": [6, 9, 15, 18, 19, 20], "paramet": [6, 12, 15, 20], "give": [6, 10, 20], "point": [6, 13, 15, 16, 17, 19], "let": [6, 12], "actual": [6, 15], "execut": [6, 10, 15], "interpret": [6, 15], "fastest": [6, 15], "faster": [6, 15], "per": [6, 15, 16], "posit": [6, 13, 15], "axi": [6, 10, 12, 15, 16, 20], "travers": [6, 15], "4": [6, 12, 13, 15, 18, 20], "6": [6, 12, 15, 18, 20], "len": [6, 10, 13, 15], "8": [6, 13, 15, 19], "product": [6, 12, 13, 15, 18, 20], "same": [6, 9, 13, 15], "size": [6, 10, 15, 16], "outer": [6, 12, 15, 20], "inner": [6, 12, 15, 18, 20], "18": 6, "all": [6, 9, 15], "most": [6, 9, 15, 20], "compact": 6, "represent": [6, 15], "imagin": 6, "100x2000x2000": 6, "just": 6, "100": [6, 9], "2000": 6, "float64": 6, "32": 6, "8kb": 6, "ram": 6, "our": [6, 18], "form": [6, 15], "2gb": 6, "itself": 6, "like": [6, 9, 13, 15, 18, 20], "over": [6, 13], "long": [6, 15], "period": 6, "sens": 6, "save": 6, "memori": [6, 10], "stop": [6, 12, 15, 20], "regular": 6, "caus": 6, "circl": [6, 13, 15, 18], "won": 6, "t": [6, 9], "depend": [6, 11, 19], "ani": [6, 9, 15, 16, 19], "its": [6, 9, 11, 12, 15, 19], "specifi": [6, 13, 15], "written": 6, "disk": 6, "simplest": 6, "simpli": 6, "imag": 6, "setpoint": 6, "reader": 6, "pick": 6, "out": [6, 10], "requir": [6, 15, 19], "howev": 6, "hold": 6, "until": 6, "turn": [6, 12], "destroi": 6, "perform": [6, 13, 15], "reason": [6, 10], "advis": 6, "hdf": 6, "detail": 6, "practic": [8, 13], "step": [8, 10, 13, 15, 16], "experienc": [8, 13], "contribut": [8, 13], "serial": [8, 13, 15, 18], "deseri": [8, 13, 15, 18], "welcom": 9, "request": [9, 15, 16, 20], "handl": 9, "github": [9, 11, 13, 19], "also": [9, 10, 13, 15, 19], "pleas": 9, "check": [9, 10, 15], "befor": 9, "file": 9, "great": 9, "idea": 9, "involv": 9, "big": 9, "ticket": 9, "want": [9, 15, 18, 20], "sure": 9, "don": 9, "spend": [9, 13, 15], "your": 9, "someth": [9, 10], "might": [9, 18], "fit": [9, 10], "scope": 9, "offer": 9, "place": 9, "ask": 9, "question": 9, "share": [9, 15], "open": [9, 20], "end": [9, 15, 18], "obviou": 9, "close": 9, "rais": 9, "instead": [9, 11, 15], "doe": 9, "librari": 9, "bug": 9, "free": 9, "significantli": 9, "reduc": 9, "easili": 9, "caught": 9, "remain": 9, "improv": 9, "It": [9, 13, 15, 19], "recommend": [9, 19], "vscode": 9, "devcontain": 9, "repositori": 9, "configur": [9, 15], "container": 9, "suit": 9, "own": 9, "diamond": 9, "light": 9, "common": 9, "task": 9, "test": 9, "pre": [9, 11], "commit": 9, "hook": 9, "guid": [9, 13], "specif": [10, 15], "few": 10, "conduct": 10, "get": [10, 11, 18], "method": [10, 15], "d": [10, 20], "print": [10, 13, 15], "simpl": [10, 18], "particularli": 10, "numpi": 10, "unpack": 10, "dictionari": [10, 12, 15], "bound": [10, 13, 15, 16, 18], "small": 10, "enough": 10, "machin": 10, "entir": 10, "segment": 10, "75": [10, 15], "25": 10, "instanc": 10, "shot": 10, "view": 10, "intermedi": 10, "mani": [10, 15], "wrapper": 10, "them": [10, 13, 15, 18], "maximum": [10, 15, 16], "core": [10, 13], "chunk": [10, 13, 15], "subset": 10, "start": [10, 12, 13, 15, 17, 18, 20], "num": [10, 12, 13, 15, 20], "turnaround": [10, 15, 18], "back": [10, 12], "forth": 10, "attribut": 10, "true": [10, 15], "sai": 10, "previou": [10, 15], "On": 10, "veri": 10, "last": [10, 15, 18], "insert": [10, 15], "row": 10, "built": 11, "alreadi": 11, "instal": [11, 13, 17], "registri": 11, "docker": 11, "ghcr": 11, "io": [11, 13], "dl": [11, 13, 15, 19], "control": [11, 13, 15, 19], "main": 11, "releas": [11, 13, 14, 19], "ha": [12, 18, 19], "repr": 12, "show": [12, 18, 20], "instanti": 12, "recurs": [12, 15], "type": [12, 15, 18, 19, 20], "flyscan": [13, 15], "serializ": [13, 15], "effici": 13, "combin": [13, 15, 18], "spiral": [13, 15], "option": 13, "zip": [13, 15, 18], "concat": [13, 15], "compos": 13, "multipl": [13, 15], "region": 13, "restrict": [13, 15], "rather": 13, "expand": [13, 15], "reconstruct": 13, "server": 13, "cycler": 13, "pypi": 13, "http": [13, 19, 20], "2d": [13, 15], "insid": [13, 15], "12": [13, 15, 20], "10": [13, 15, 20], "radiu": [13, 15], "look": [13, 15], "directli": 13, "conveni": [13, 15], "1818181818181817": 13, "8333333333333333": 13, "7222222222222222": 13, "44": 13, "30": [13, 15], "ndarrai": [13, 15], "split": 13, "four": 13, "categori": 13, "access": 13, "top": [13, 15], "bar": 13, "tutori": [13, 18, 20], "rest": [13, 14, 15, 17, 19], "servic": [13, 16, 17, 19], "gener": [13, 15, 16, 17, 19], "typic": [13, 15, 17], "usag": [13, 17], "here": [13, 17, 18], "explan": 13, "api": [13, 14, 20], "index": [13, 14, 15], "note": [13, 14], "materi": [13, 14], "includ": [13, 14, 15, 18], "level": 15, "class": 15, "subclass": 15, "visual": 15, "defin": [15, 18], "queri": 15, "field": 15, "midpointsrespons": [15, 16], "__version__": 15, "str": 15, "versiongit": 15, "if_instance_do": 15, "cl": 15, "func": 15, "callabl": 15, "notimpl": 15, "helper": 15, "implement": 15, "oper": [15, 18], "overload": 15, "variabl": [15, 18], "alia": 15, "typevar": 15, "axespoint": 15, "map": [15, 20], "float": 15, "g": 15, "xmotor": 15, "ymotor": 15, "dict": 15, "none": 15, "gap": [15, 16], "np": 15, "base": 15, "repres": 15, "dure": 15, "suppli": 15, "linear": 15, "part": 15, "whether": [15, 16], "element": 15, "These": [15, 18], "present": 15, "extract": 15, "indic": [15, 16, 18], "calculate_gap": 15, "provid": 15, "modulo": 15, "recalcul": 15, "bool": 15, "concaten": 15, "self": 15, "both": [15, 16], "necessarili": 15, "inherit": 15, "reorder": 15, "forc": 15, "frames2": 15, "fx": 15, "fy": 15, "7": 15, "snakedfram": 15, "altern": 15, "repetit": 15, "classmethod": 15, "from_fram": 15, "extend": 15, "gap_between_fram": 15, "frames1": 15, "squash_fram": 15, "output": [15, 18, 20], "input": [15, 18], "int": 15, "next": 15, "end_index": 15, "dtype": 15, "int64": 15, "better": 15, "mp": 15, "p": 15, "properti": 15, "discriminated_union_of_subclass": 15, "super_cl": 15, "discrimin": 15, "config": 15, "baseconfig": 15, "add": 15, "union": 15, "identifi": 15, "raw": 15, "json": [15, 20], "name": [15, 20], "param": 15, "valid": [15, 16], "pars": 15, "pydant": 15, "parse_obj_a": 15, "express": 15, "abc": 15, "abstractmethod": 15, "def": 15, "dataclass": 15, "left": 15, "right": 15, "subtract": 15, "intliter": 15, "valu": 15, "my_sum": 15, "assert": 15, "13": 15, "superclass": 15, "determin": 15, "default": 15, "decor": 15, "necessari": 15, "function": [15, 18], "strictconfig": 15, "static": 15, "special": 15, "kei": 15, "abstract": 15, "baseclass": 15, "operand": 15, "integ": 15, "wrap": 15, "exclud": 15, "outsid": 15, "shape": 15, "tupl": 15, "final": 15, "simplifi": 15, "tandem": 15, "obj": 15, "fieldinfo": 15, "pydanticundefin": 15, "descript": [15, 16], "Will": 15, "extra": [15, 19], "liter": 15, "entireti": 15, "min": 15, "consecut": 15, "empti": 15, "do": [15, 18, 19, 20], "There": [15, 20], "arrow": [15, 18], "hand": 15, "appear": 15, "earlier": 15, "later": [15, 19], "parallel": 15, "individu": 15, "l2": 15, "l1": 15, "r1": 15, "modifi": 15, "fall": 15, "push": 15, "down": 15, "avoid": 15, "bracket": 15, "span": 15, "join": 15, "dimens": 15, "what": [15, 18], "linearli": 15, "extrem": 15, "motion": [15, 18], "x_axi": 15, "y_axi": 15, "x_start": 15, "centr": [15, 18], "y_start": 15, "x_rang": 15, "width": 15, "y_rang": 15, "rotat": 15, "much": 15, "angl": 15, "archimedean": 15, "height": 15, "50": 15, "dr": 15, "ring": 15, "equal": 15, "continu": 15, "combinationof": 15, "unionof": [15, 18], "intersectionof": [15, 18], "differenceof": [15, 18], "symmetricdifferenceof": [15, 18], "rang": 15, "rectangl": 15, "polygon": 15, "ellips": 15, "either": 15, "axis_set": 15, "overlap": 15, "get_mask": 15, "b": 15, "r": 15, "match": 15, "minimum": [15, 16], "inclus": 15, "max": 15, "x_min": 15, "y_min": 15, "x_max": 15, "y_max": 15, "clockwis": 15, "xy": 15, "x_vert": 15, "nx1": 15, "coordin": [15, 20], "vertic": 15, "min_len": 15, "y_vert": 15, "x_middl": 15, "central": 15, "y_middl": 15, "exc_min": 15, "9": 15, "x_radiu": 15, "y_radiu": 15, "degre": 15, "find_region": 15, "yield": 15, "children": 15, "grei": [15, 18], "mark": [15, 18], "fill": 15, "less": 15, "200": [15, 16], "shown": 15, "black": [15, 18], "cube": 15, "variou": 15, "validrespons": [15, 16], "input_spec": 15, "valid_spec": 15, "respons": [15, 16], "model": 15, "pointsformat": 15, "qualnam": 15, "boundari": 15, "enum": 15, "pointsrequest": 15, "max_fram": [15, 20], "100000": 15, "float_list": [15, 20], "generatedpointsrespons": 15, "total_fram": [15, 20], "total": 15, "returned_fram": [15, 20], "due": 15, "downsampl": 15, "etc": 15, "boundsrespons": [15, 16], "gaprespons": [15, 16], "boolean": 15, "presenc": 15, "smalleststeprespons": [15, 16], "absolut": [15, 16], "smallest": [15, 16], "distanc": 15, "per_axi": 15, "about": 15, "bodi": 15, "ellipsi": 15, "jsonrespons": 15, "wether": [15, 16], "viabl": [15, 16], "canon": [15, 16], "error": [15, 16, 20], "middl": [15, 16, 20], "info": [15, 16], "correspond": [15, 16], "smallest_step": 15, "ignor": [15, 16], "run_app": 15, "cor": [15, 20], "port": 15, "8080": [15, 20], "applic": [15, 20], "scanspec_schema_text": 15, "openapi": [15, 20], "schema": 15, "string": 15, "endpoint": [16, 20], "post": [16, 20], "arg": 16, "statu": 16, "ok": 16, "success": 16, "422": [16, 20], "unprocess": 16, "entiti": 16, "smalleststep": 16, "increas": 18, "complex": 18, "ll": 18, "enter": 18, "interact": 18, "termin": [18, 19, 20], "graph": 18, "dot": 18, "arrowhead": 18, "cross": 18, "quickli": 18, "client": [18, 20], "evalu": 18, "ad": 18, "program": 18, "disjoint": 18, "guarante": 18, "appli": 18, "demonstr": 18, "read": 18, "system": 18, "send": [18, 20], "python3": 19, "interfer": 19, "softwar": 19, "m": 19, "bin": 19, "now": [19, 20], "featur": 19, "current": 19, "git": 19, "com": 19, "commandlin": [19, 20], "interfac": 19, "been": 19, "nice": 20, "util": 20, "expos": 20, "those": 20, "web": 20, "gui": 20, "bring": 20, "compat": 20, "localhost": 20, "press": 20, "ctrl": 20, "c": 20, "quit": 20, "browser": 20, "doc": 20, "swagger": 20, "ui": 20, "editor": 20, "curl": 20, "command": 20, "h": 20, "content": 20, "becaus": 20, "miss": 20, "sever": 20, "inspect": 20, "organis": 20, "1024": 20, "333333333333333": 20, "666666666666667": 20, "000000000000002": 20}, "objects": {"": [[16, 0, 1, "post--bounds", "/bounds"], [16, 0, 1, "post--gap", "/gap"], [16, 0, 1, "post--midpoints", "/midpoints"], [16, 0, 1, "post--smalleststep", "/smalleststep"], [16, 0, 1, "post--valid", "/valid"], [15, 1, 0, "-", "scanspec"]], "scanspec": [[15, 1, 0, "-", "core"], [15, 1, 0, "-", "plot"], [15, 1, 0, "-", "regions"], [15, 1, 0, "-", "service"], [15, 1, 0, "-", "specs"]], "scanspec.core": [[15, 2, 1, "", "AxesPoints"], [15, 3, 1, "", "Axis"], [15, 3, 1, "", "Frames"], [15, 3, 1, "", "Midpoints"], [15, 3, 1, "", "Path"], [15, 3, 1, "", "SnakedFrames"], [15, 3, 1, "", "StrictConfig"], [15, 7, 1, "", "discriminated_union_of_subclasses"], [15, 7, 1, "", "gap_between_frames"], [15, 7, 1, "", "if_instance_do"], [15, 7, 1, "", "squash_frames"]], "scanspec.core.Frames": [[15, 4, 1, "", "axes"], [15, 4, 1, "", "concat"], [15, 4, 1, "", "extract"], [15, 5, 1, "", "gap"], [15, 5, 1, "", "lower"], [15, 5, 1, "", "midpoints"], [15, 5, 1, "", "upper"], [15, 4, 1, "", "zip"]], "scanspec.core.Midpoints": [[15, 6, 1, "", "axes"], [15, 5, 1, "", "stack"]], "scanspec.core.Path": [[15, 4, 1, "", "consume"], [15, 5, 1, "", "end_index"], [15, 5, 1, "", "index"], [15, 5, 1, "", "lengths"], [15, 5, 1, "", "stack"]], "scanspec.core.SnakedFrames": [[15, 4, 1, "", "extract"], [15, 4, 1, "", "from_frames"]], "scanspec.plot": [[15, 7, 1, "", "plot_spec"]], "scanspec.regions": [[15, 3, 1, "", "Circle"], [15, 3, 1, "", "CombinationOf"], [15, 3, 1, "", "DifferenceOf"], [15, 3, 1, "", "Ellipse"], [15, 3, 1, "", "IntersectionOf"], [15, 3, 1, "", "Polygon"], [15, 3, 1, "", "Range"], [15, 3, 1, "", "Rectangle"], [15, 3, 1, "", "Region"], [15, 3, 1, "", "SymmetricDifferenceOf"], [15, 3, 1, "", "UnionOf"], [15, 7, 1, "", "find_regions"], [15, 7, 1, "", "get_mask"]], "scanspec.regions.Region": [[15, 4, 1, "", "axis_sets"], [15, 4, 1, "", "mask"]], "scanspec.scanspec": [[15, 2, 1, "", "__version__"]], "scanspec.service": [[15, 3, 1, "", "BoundsResponse"], [15, 3, 1, "", "GapResponse"], [15, 3, 1, "", "GeneratedPointsResponse"], [15, 3, 1, "", "MidpointsResponse"], [15, 2, 1, "", "Points"], [15, 3, 1, "", "PointsFormat"], [15, 3, 1, "", "PointsRequest"], [15, 3, 1, "", "SmallestStepResponse"], [15, 3, 1, "", "ValidResponse"], [15, 7, 1, "", "bounds"], [15, 7, 1, "", "gap"], [15, 7, 1, "", "midpoints"], [15, 7, 1, "", "run_app"], [15, 7, 1, "", "scanspec_schema_text"], [15, 7, 1, "", "smallest_step"], [15, 7, 1, "", "valid"]], "scanspec.specs": [[15, 3, 1, "", "Concat"], [15, 2, 1, "", "DURATION"], [15, 3, 1, "", "Line"], [15, 3, 1, "", "Mask"], [15, 3, 1, "", "Product"], [15, 3, 1, "", "Repeat"], [15, 3, 1, "", "Snake"], [15, 3, 1, "", "Spec"], [15, 3, 1, "", "Spiral"], [15, 3, 1, "", "Squash"], [15, 3, 1, "", "Static"], [15, 3, 1, "", "Zip"], [15, 7, 1, "", "fly"], [15, 7, 1, "", "step"]], "scanspec.specs.Line": [[15, 4, 1, "", "bounded"]], "scanspec.specs.Spec": [[15, 4, 1, "", "axes"], [15, 4, 1, "", "calculate"], [15, 4, 1, "", "concat"], [15, 4, 1, "", "deserialize"], [15, 4, 1, "", "frames"], [15, 4, 1, "", "midpoints"], [15, 4, 1, "", "serialize"], [15, 4, 1, "", "shape"], [15, 4, 1, "", "zip"]], "scanspec.specs.Spiral": [[15, 4, 1, "", "spaced"]], "scanspec.specs.Static": [[15, 4, 1, "", "duration"]]}, "objtypes": {"0": "http:post", "1": "py:module", "2": "py:data", "3": "py:class", "4": "py:method", "5": "py:attribute", "6": "py:property", "7": "py:function"}, "objnames": {"0": ["http", "post", "HTTP post"], "1": ["py", "module", "Python module"], "2": ["py", "data", "Python data"], "3": ["py", "class", "Python class"], "4": ["py", "method", "Python method"], "5": ["py", "attribute", "Python attribute"], "6": ["py", "property", "Python property"], "7": ["py", "function", "Python function"]}, "titleterms": {"explan": 0, "architectur": [1, 2], "decis": [1, 2, 3], "record": [1, 2], "1": 2, "statu": [2, 3], "context": [2, 3], "consequ": [2, 3], "2": [3, 18], "adopt": 3, "python": [3, 19], "copier": 3, "templat": 3, "project": [3, 9], "structur": [3, 13], "technic": 4, "term": 4, "axi": [4, 5], "point": [4, 10, 20], "frame": [4, 5, 6], "stack": [4, 6], "path": [4, 5], "why": [5, 6], "squash": [5, 6], "mask": [5, 18], "can": 5, "chang": 5, "unsnak": 5, "snake": [5, 18], "odd": 5, "length": 5, "thi": [5, 6], "matter": 5, "creat": [6, 18, 19], "an": 6, "exampl": 6, "them": 6, "flat": 6, "sequenc": 6, "what": 6, "about": 6, "region": [6, 15, 18], "how": [6, 8, 10, 12, 13], "doe": 6, "relat": 6, "hdf5": 6, "dimens": 6, "index": 7, "guid": 8, "contribut": 9, "issu": 9, "discuss": 9, "code": 9, "coverag": 9, "develop": 9, "inform": 9, "iter": 10, "spec": [10, 12, 15, 18, 20], "If": 10, "you": 10, "onli": 10, "need": 10, "midpoint": [10, 20], "do": 10, "fly": 10, "scan": [10, 18], "want": 10, "most": 10, "perform": 10, "option": 10, "know": 10, "whether": 10, "i": [10, 13], "gap": 10, "between": 10, "run": [11, 20], "contain": 11, "start": 11, "serial": 12, "deseri": 12, "scanspec": [13, 15], "document": 13, "refer": 14, "api": [15, 16], "core": 15, "plot": [15, 18], "servic": [15, 20], "rest": [16, 20], "tutori": 17, "line": 18, "from": 18, "commandlin": 18, "ax": 18, "grid": 18, "multipl": 18, "conclus": 18, "instal": 19, "check": 19, "your": 19, "version": 19, "virtual": 19, "environ": 19, "librari": 19, "gener": 20, "server": 20, "valid": 20}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Explanations": [[0, "explanations"]], "Architectural Decision Records": [[1, "architectural-decision-records"]], "1. Record architecture decisions": [[2, "record-architecture-decisions"]], "Status": [[2, "status"], [3, "status"]], "Context": [[2, "context"], [3, "context"]], "Decision": [[2, "decision"], [3, "decision"]], "Consequences": [[2, "consequences"], [3, "consequences"]], "2. Adopt python-copier-template for project structure": [[3, "adopt-python-copier-template-for-project-structure"]], "Technical Terms": [[4, "technical-terms"]], "Axis": [[4, "axis"]], "Point": [[4, "point"]], "Frame": [[4, "frame"]], "Stack of Frames": [[4, "stack-of-frames"]], "Path": [[4, "path"]], "Why Squash (and Mask) can change the Path": [[5, "why-squash-and-mask-can-change-the-path"]], "Squash unsnaked axis into a snaked Frames": [[5, "squash-unsnaked-axis-into-a-snaked-frames"]], "Squash snaked axis into unsnaked odd length axis": [[5, "squash-snaked-axis-into-unsnaked-odd-length-axis"]], "Why this matters": [[5, "why-this-matters"]], "Why create a stack of Frames?": [[6, "why-create-a-stack-of-frames"]], "An Example": [[6, "an-example"]], "Why not squash them into a flat sequence?": [[6, "why-not-squash-them-into-a-flat-sequence"]], "What about Regions?": [[6, "what-about-regions"]], "How does this stack relate to HDF5 Dimensions?": [[6, "how-does-this-stack-relate-to-hdf5-dimensions"]], "Index": [[7, "index"]], "How-to Guides": [[8, "how-to-guides"]], "Contribute to the project": [[9, "contribute-to-the-project"]], "Issue or Discussion?": [[9, "issue-or-discussion"]], "Code Coverage": [[9, "code-coverage"]], "Developer Information": [[9, "developer-information"]], "How to Iterate a Spec": [[10, "how-to-iterate-a-spec"]], "If you only need the midpoints": [[10, "if-you-only-need-the-midpoints"]], "If you need to do a fly scan": [[10, "if-you-need-to-do-a-fly-scan"]], "If you want the most performant option": [[10, "if-you-want-the-most-performant-option"]], "If you need to know whether there is a gap between points": [[10, "if-you-need-to-know-whether-there-is-a-gap-between-points"]], "Run in a container": [[11, "run-in-a-container"]], "Starting the container": [[11, "starting-the-container"]], "How to Serialize and Deserialize a Spec": [[12, "how-to-serialize-and-deserialize-a-spec"]], "How to Serialize": [[12, "how-to-serialize"]], "How to Deserialize": [[12, "how-to-deserialize"]], "scanspec": [[13, "scanspec"], [15, "scanspec"]], "How the documentation is structured": [[13, "how-the-documentation-is-structured"]], "Reference": [[14, "reference"]], "API": [[15, "module-scanspec"]], "scanspec.core": [[15, "scanspec-core"]], "scanspec.specs": [[15, "scanspec-specs"]], "scanspec.regions": [[15, "scanspec-regions"]], "scanspec.plot": [[15, "scanspec-plot"]], "scanspec.service": [[15, "scanspec-service"]], "REST API": [[16, "rest-api"]], "Tutorials": [[17, "tutorials"]], "Creating a Scan Spec": [[18, "creating-a-scan-spec"]], "Line": [[18, "line"]], "Plotting from the commandline": [[18, "plotting-from-the-commandline"]], "Line with 2 axes": [[18, "line-with-2-axes"]], "Grid": [[18, "grid"]], "Snaked Grid": [[18, "snaked-grid"]], "Masking with Regions": [[18, "masking-with-regions"]], "Masking with Multiple Regions": [[18, "masking-with-multiple-regions"]], "Conclusion": [[18, "conclusion"]], "Installation": [[19, "installation"]], "Check your version of python": [[19, "check-your-version-of-python"]], "Create a virtual environment": [[19, "create-a-virtual-environment"]], "Installing the library": [[19, "installing-the-library"]], "Running a REST service for generating points": [[20, "running-a-rest-service-for-generating-points"]], "Running the server": [[20, "running-the-server"]], "Validating a Spec": [[20, "validating-a-spec"]], "Generating Midpoints": [[20, "generating-midpoints"]]}, "indexentries": {"axespoints (in module scanspec.core)": [[15, "scanspec.core.AxesPoints"]], "axis (class in scanspec.core)": [[15, "scanspec.core.Axis"]], "boundsresponse (class in scanspec.service)": [[15, "scanspec.service.BoundsResponse"]], "circle (class in scanspec.regions)": [[15, "scanspec.regions.Circle"]], "combinationof (class in scanspec.regions)": [[15, "scanspec.regions.CombinationOf"]], "concat (class in scanspec.specs)": [[15, "scanspec.specs.Concat"]], "duration (in module scanspec.specs)": [[15, "scanspec.specs.DURATION"]], "differenceof (class in scanspec.regions)": [[15, "scanspec.regions.DifferenceOf"]], "ellipse (class in scanspec.regions)": [[15, "scanspec.regions.Ellipse"]], "frames (class in scanspec.core)": [[15, "scanspec.core.Frames"]], "gapresponse (class in scanspec.service)": [[15, "scanspec.service.GapResponse"]], "generatedpointsresponse (class in scanspec.service)": [[15, "scanspec.service.GeneratedPointsResponse"]], "intersectionof (class in scanspec.regions)": [[15, "scanspec.regions.IntersectionOf"]], "line (class in scanspec.specs)": [[15, "scanspec.specs.Line"]], "mask (class in scanspec.specs)": [[15, "scanspec.specs.Mask"]], "midpoints (class in scanspec.core)": [[15, "scanspec.core.Midpoints"]], "midpointsresponse (class in scanspec.service)": [[15, "scanspec.service.MidpointsResponse"]], "path (class in scanspec.core)": [[15, "scanspec.core.Path"]], "points (in module scanspec.service)": [[15, "scanspec.service.Points"]], "pointsformat (class in scanspec.service)": [[15, "scanspec.service.PointsFormat"]], "pointsrequest (class in scanspec.service)": [[15, "scanspec.service.PointsRequest"]], "polygon (class in scanspec.regions)": [[15, "scanspec.regions.Polygon"]], "product (class in scanspec.specs)": [[15, "scanspec.specs.Product"]], "range (class in scanspec.regions)": [[15, "scanspec.regions.Range"]], "rectangle (class in scanspec.regions)": [[15, "scanspec.regions.Rectangle"]], "region (class in scanspec.regions)": [[15, "scanspec.regions.Region"]], "repeat (class in scanspec.specs)": [[15, "scanspec.specs.Repeat"]], "smalleststepresponse (class in scanspec.service)": [[15, "scanspec.service.SmallestStepResponse"]], "snake (class in scanspec.specs)": [[15, "scanspec.specs.Snake"]], "snakedframes (class in scanspec.core)": [[15, "scanspec.core.SnakedFrames"]], "spec (class in scanspec.specs)": [[15, "scanspec.specs.Spec"]], "spiral (class in scanspec.specs)": [[15, "scanspec.specs.Spiral"]], "squash (class in scanspec.specs)": [[15, "scanspec.specs.Squash"]], "static (class in scanspec.specs)": [[15, "scanspec.specs.Static"]], "strictconfig (class in scanspec.core)": [[15, "scanspec.core.StrictConfig"]], "symmetricdifferenceof (class in scanspec.regions)": [[15, "scanspec.regions.SymmetricDifferenceOf"]], "unionof (class in scanspec.regions)": [[15, "scanspec.regions.UnionOf"]], "validresponse (class in scanspec.service)": [[15, "scanspec.service.ValidResponse"]], "zip (class in scanspec.specs)": [[15, "scanspec.specs.Zip"]], "axes (scanspec.core.midpoints property)": [[15, "scanspec.core.Midpoints.axes"]], "axes() (scanspec.core.frames method)": [[15, "scanspec.core.Frames.axes"]], "axes() (scanspec.specs.spec method)": [[15, "scanspec.specs.Spec.axes"]], "axis_sets() (scanspec.regions.region method)": [[15, "scanspec.regions.Region.axis_sets"]], "bounded() (scanspec.specs.line class method)": [[15, "scanspec.specs.Line.bounded"]], "bounds() (in module scanspec.service)": [[15, "scanspec.service.bounds"]], "calculate() (scanspec.specs.spec method)": [[15, "scanspec.specs.Spec.calculate"]], "concat() (scanspec.core.frames method)": [[15, "scanspec.core.Frames.concat"]], "concat() (scanspec.specs.spec method)": [[15, "scanspec.specs.Spec.concat"]], "consume() (scanspec.core.path method)": [[15, "scanspec.core.Path.consume"]], "deserialize() (scanspec.specs.spec class method)": [[15, "scanspec.specs.Spec.deserialize"]], "discriminated_union_of_subclasses() (in module scanspec.core)": [[15, "scanspec.core.discriminated_union_of_subclasses"]], "duration() (scanspec.specs.static class method)": [[15, "scanspec.specs.Static.duration"]], "end_index (scanspec.core.path attribute)": [[15, "scanspec.core.Path.end_index"]], "extract() (scanspec.core.frames method)": [[15, "scanspec.core.Frames.extract"]], "extract() (scanspec.core.snakedframes method)": [[15, "scanspec.core.SnakedFrames.extract"]], "find_regions() (in module scanspec.regions)": [[15, "scanspec.regions.find_regions"]], "fly() (in module scanspec.specs)": [[15, "scanspec.specs.fly"]], "frames() (scanspec.specs.spec method)": [[15, "scanspec.specs.Spec.frames"]], "from_frames() (scanspec.core.snakedframes class method)": [[15, "scanspec.core.SnakedFrames.from_frames"]], "gap (scanspec.core.frames attribute)": [[15, "scanspec.core.Frames.gap"]], "gap() (in module scanspec.service)": [[15, "scanspec.service.gap"]], "gap_between_frames() (in module scanspec.core)": [[15, "scanspec.core.gap_between_frames"]], "get_mask() (in module scanspec.regions)": [[15, "scanspec.regions.get_mask"]], "if_instance_do() (in module scanspec.core)": [[15, "scanspec.core.if_instance_do"]], "index (scanspec.core.path attribute)": [[15, "scanspec.core.Path.index"]], "lengths (scanspec.core.path attribute)": [[15, "scanspec.core.Path.lengths"]], "lower (scanspec.core.frames attribute)": [[15, "scanspec.core.Frames.lower"]], "mask() (scanspec.regions.region method)": [[15, "scanspec.regions.Region.mask"]], "midpoints (scanspec.core.frames attribute)": [[15, "scanspec.core.Frames.midpoints"]], "midpoints() (in module scanspec.service)": [[15, "scanspec.service.midpoints"]], "midpoints() (scanspec.specs.spec method)": [[15, "scanspec.specs.Spec.midpoints"]], "module": [[15, "module-scanspec"], [15, "module-scanspec.core"], [15, "module-scanspec.plot"], [15, "module-scanspec.regions"], [15, "module-scanspec.service"], [15, "module-scanspec.specs"]], "plot_spec() (in module scanspec.plot)": [[15, "scanspec.plot.plot_spec"]], "run_app() (in module scanspec.service)": [[15, "scanspec.service.run_app"]], "scanspec": [[15, "module-scanspec"]], "scanspec.__version__ (in module scanspec)": [[15, "scanspec.scanspec.__version__"]], "scanspec.core": [[15, "module-scanspec.core"]], "scanspec.plot": [[15, "module-scanspec.plot"]], "scanspec.regions": [[15, "module-scanspec.regions"]], "scanspec.service": [[15, "module-scanspec.service"]], "scanspec.specs": [[15, "module-scanspec.specs"]], "scanspec_schema_text() (in module scanspec.service)": [[15, "scanspec.service.scanspec_schema_text"]], "serialize() (scanspec.specs.spec method)": [[15, "scanspec.specs.Spec.serialize"]], "shape() (scanspec.specs.spec method)": [[15, "scanspec.specs.Spec.shape"]], "smallest_step() (in module scanspec.service)": [[15, "scanspec.service.smallest_step"]], "spaced() (scanspec.specs.spiral class method)": [[15, "scanspec.specs.Spiral.spaced"]], "squash_frames() (in module scanspec.core)": [[15, "scanspec.core.squash_frames"]], "stack (scanspec.core.midpoints attribute)": [[15, "scanspec.core.Midpoints.stack"]], "stack (scanspec.core.path attribute)": [[15, "scanspec.core.Path.stack"]], "step() (in module scanspec.specs)": [[15, "scanspec.specs.step"]], "upper (scanspec.core.frames attribute)": [[15, "scanspec.core.Frames.upper"]], "valid() (in module scanspec.service)": [[15, "scanspec.service.valid"]], "zip() (scanspec.core.frames method)": [[15, "scanspec.core.Frames.zip"]], "zip() (scanspec.specs.spec method)": [[15, "scanspec.specs.Spec.zip"]]}}) \ No newline at end of file diff --git a/main/tutorials.html b/main/tutorials.html index 04229d80..66754d8d 100644 --- a/main/tutorials.html +++ b/main/tutorials.html @@ -8,7 +8,7 @@ - Tutorials — scanspec 0.6.5 documentation + Tutorials — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -39,7 +39,7 @@ - + @@ -49,7 +49,7 @@ @@ -178,13 +178,6 @@ - - - @@ -346,13 +339,6 @@ - - - @@ -547,7 +533,7 @@

    Tutorials - + diff --git a/main/tutorials/creating-a-spec.html b/main/tutorials/creating-a-spec.html index e5ef874d..1cf4148b 100644 --- a/main/tutorials/creating-a-spec.html +++ b/main/tutorials/creating-a-spec.html @@ -8,7 +8,7 @@ - Creating a Scan Spec — scanspec 0.6.5 documentation + Creating a Scan Spec — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -39,7 +39,7 @@ - + @@ -49,7 +49,7 @@ @@ -178,13 +178,6 @@ - - - @@ -346,13 +339,6 @@ - - - @@ -701,7 +687,7 @@

    Conclusion - + diff --git a/main/tutorials/installation.html b/main/tutorials/installation.html index 20e52cec..d8647756 100644 --- a/main/tutorials/installation.html +++ b/main/tutorials/installation.html @@ -8,7 +8,7 @@ - Installation — scanspec 0.6.5 documentation + Installation — scanspec 0.6.6.dev6+g11e1e20 documentation @@ -39,7 +39,7 @@ - + @@ -49,7 +49,7 @@ @@ -178,13 +178,6 @@ - - - @@ -346,13 +339,6 @@ - - - @@ -517,13 +503,13 @@

    Create a virtual environment

    Installing the library#

    -

    You can now use pip to install the library:

    -
    python3 -m pip install scanspec
    +

    You can now use pip to install the library and its dependencies:

    +
    $ python3 -m pip install scanspec
     

    If you require a feature that is not currently released you can also install from github:

    -
    python3 -m pip install git+git://github.com/dls-controls/scanspec.git
    +
    $ python3 -m pip install git+https://github.com/dls-controls/scanspec.git
     

    If you need to do any plotting (recommended), you should install the plotting extra:

    @@ -537,7 +523,7 @@

    Installing the library

    The library should now be installed and the commandline interface on your path. You can check the version that has been installed by typing:

    -
    @@ -665,7 +651,7 @@

    Generating Midpoints - + diff --git a/make_switcher.py b/make_switcher.py index 39c12772..e2c8e6f6 100755 --- a/make_switcher.py +++ b/make_switcher.py @@ -24,7 +24,7 @@ def get_sorted_tags_list() -> List[str]: return report_output(stdout, "Tags list") -def get_versions(ref: str, add: Optional[str], remove: Optional[str]) -> List[str]: +def get_versions(ref: str, add: Optional[str]) -> List[str]: """Generate the file containing the list of all GitHub Pages builds.""" # Get the directories (i.e. builds) from the GitHub Pages branch try: @@ -36,9 +36,6 @@ def get_versions(ref: str, add: Optional[str], remove: Optional[str]) -> List[st # Add and remove from the list of builds if add: builds.add(add) - if remove: - assert remove in builds, f"Build '{remove}' not in {sorted(builds)}" - builds.remove(remove) # Get a sorted list of tags tags = get_sorted_tags_list() @@ -59,26 +56,22 @@ def get_versions(ref: str, add: Optional[str], remove: Optional[str]) -> List[st def write_json(path: Path, repository: str, versions: str): org, repo_name = repository.split("/") struct = [ - dict(version=version, url=f"https://{org}.github.io/{repo_name}/{version}/") + {"version": version, "url": f"https://{org}.github.io/{repo_name}/{version}/"} for version in versions ] text = json.dumps(struct, indent=2) print(f"JSON switcher:\n{text}") - path.write_text(text) + path.write_text(text, encoding="utf-8") def main(args=None): parser = ArgumentParser( - description="Make a versions.txt file from gh-pages directories" + description="Make a versions.json file from gh-pages directories" ) parser.add_argument( "--add", help="Add this directory to the list of existing directories", ) - parser.add_argument( - "--remove", - help="Remove this directory from the list of existing directories", - ) parser.add_argument( "repository", help="The GitHub org and repository name: ORG/REPO", @@ -91,7 +84,7 @@ def main(args=None): args = parser.parse_args(args) # Write the versions file - versions = get_versions("origin/gh-pages", args.add, args.remove) + versions = get_versions("origin/gh-pages", args.add) write_json(args.output, args.repository, versions) diff --git a/switcher.json b/switcher.json index 0f840226..3ce0695d 100644 --- a/switcher.json +++ b/switcher.json @@ -1,8 +1,4 @@ [ - { - "version": "master", - "url": "https://dls-controls.github.io/scanspec/master/" - }, { "version": "main", "url": "https://dls-controls.github.io/scanspec/main/"