From d268343c6177147fb21c5ddd8083343c49a09a93 Mon Sep 17 00:00:00 2001 From: Teresia Olsson Date: Fri, 11 Sep 2026 23:59:35 +0200 Subject: [PATCH 1/9] Add docs about how to use the metaconfigurator. --- .../_static/metaconfigurator_frontpage.png | Bin 0 -> 165251 bytes .../_static/metaconfigurator_gui_view.png | Bin 0 -> 78289 bytes .../configuration/generate-json-schema.ipynb | 641 ++++++++++++++++++ .../configuration/use-schema-registry.ipynb | 499 -------------- docs/source/how-to/index.md | 2 + 5 files changed, 643 insertions(+), 499 deletions(-) create mode 100644 docs/source/_static/metaconfigurator_frontpage.png create mode 100644 docs/source/_static/metaconfigurator_gui_view.png create mode 100644 docs/source/how-to/configuration/generate-json-schema.ipynb diff --git a/docs/source/_static/metaconfigurator_frontpage.png b/docs/source/_static/metaconfigurator_frontpage.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb20084b95a3d8d38ba99b9d347e111824391a8 GIT binary patch literal 165251 zcmc$`WmH|kmNiNsK!5-V1a}X?-8sP>g1fuBy95dD4hb4KxVyUtcRjef!?$z$b$|DE z_qgx47?hJ zfnRSO1tpZ;0nO{3Q7G^p$4NxZNzvBC$yMLM7|PVf*4miP(a^!z*v8S!*69?cogcX9 z%ioKH9E|my%x!ImmCUV;p+p^snV5(bjqQk;8JXFMnHafQnYo#{h=oKHm9E9QlAxf7 zp(KO_l-x3oR$Sebj9*^PZ>4cbf<9S53+E;KsePV=75?y1_@jtZFT?ydRT1sE+T*4d zml@?xB0oYy-ywb$$&*N2l_IYB0F6MM7n3Djkg-Pem3%NS4sNylaINWG92g zH0#k_I#?e&^xrk{MkZC~H>Cfr&Eb7_6A}J5Z75Z+<==Hcx-Ctj^YP!bScifS<^Oh+ zT#BKp|7HZjc^T9_H2-c43S*x(G5*aEK2n>OQDoXJD;8m>hiJhUcx@=pP=qGXpmHP^ z(+m7>xBenvq=g72gL|iBPw|gCJMjGx|Nmfz*u!r|T9P)=cEBIa(PW|EuU&dI0^u&sSLZMS62s67TTKI}KHdJOP!v5Jp1KCO*9^7kQm&n7(45p)LZ0=cL zWiY0>xw*2E`XHP2V#3wc6>s#4^PKj30`7!o zh<_Gdp6d-A%r zNSvQ!oSGIQA5SlPx^t(&oi_DbfN?A=il=rxZ;l2JX23=2)h7E`^uYam1yPtcNjbeB zZ~Mt|!hS@NJv_lGuv8BY)x}t|+1cNAOjX0NwOS~a3&7yQvXk%i?Kr)&>5TLtOeyw2 zmlP+_q2@q5AG#L(Ywp+snce20_?Qe?VJC%?HD~YEv-6uCa4`JI+! z6d2zDT^OQcVtx8Z&`h z(MYpDIk1^Lt_8B0+{PL=yNb-5b{#64`#jDL+xG~@cuX9?{#a>tMaRSxRZ{u{>=J{= zo8t@~R}?=4bjq_{EZqe21z_42rt8FH51-RHtc{=RK15}Ycj+WKfd?_NMd|jJpIzXt z8WV4>i(P-J{x1{!7#}m#csbb7duF4@rwi*UA`D4OFswx<$j-pqu~u43_G_vIH+=c0 zDSa%WpT-pVqVV-ARApu5dqUn63>uY$B?mGxf|kef8in!Oan}~}<#{a|=VkBPl@hJS zI6ptAoZQ@D>qcO(4y^+u^hQYG$tC*78^Tq?Op_MOo@j2045AU(;_b6-4T(!}!_k(? zSj51^K$}q%bnvk8@C$Z(5RM?Q&I+xj7VF|mZ;kd zV*;I9rV41>sqBpDj2vuH&wtV5)aZ`wZG5)8d+HGNd4DpT8;zWQikvlLVWjh)!6MHO zIF_M%g{Ni@z{4vh}O56Iv}V-|r21f=As?|7^gI)M+ysjhBB7r$R`I~;mz;E!+a

M${n15I|@{p+2ZvD)@qw{orKV`!50k@ankc4O~^ ze1$n}?Ejnwc{DJMyoC2q(1-Ub_G~~u7+V)y^wboAR^d&lfNlO;Yve|WyLla0Tg@0< ztX@#E@w%0SOEqO@*(V}m_CAF@Qda2~K|KGDqc2W~HCg2so_p5R+^F;)eRr>nQn<3N z4)5~+w|;@Q)JS-L+Q&DqUrV=?RAzcz%Z-dO_3x>OF3$VZ9EvMY{_l`$BCMdiTKK>X zXu#V2aK6`aycc6qt=M~sMqkFT{@D$ZhazS6L#rw8)V>a?$* zQD-FqRw-4hvr<3VVq#*#=kuufBKc`B(YWyrV+I^7_8$(il0N&8KKt=sVnW_kflRt+ ze-r^zs%J1=%LE?5^VQ*Hd|}s^Y`~}oZ|w1zJ-UMYWMZ! ze>`HL*J}7Sv#mlBctsZOX1i#!c{D@Q;hC!6-Z55Ab-8`=sW?aQAEuHd=3CM08=*x* zqt7Z!el{SX$oJ6E5}!%qv?smX871T5N^Nx9z39WURdSY4_&zx`mCEnUt=;Tmyxd^_ z_U&6JM&B2&U{oSmH8pH1xh$jk3Vm9&3MfC|WCJcuESX+A1-L#nHC4G0;eyJzcHxbk zt7FloBrw}Av)hg<+m6})<^TV_NEj>AZg$&AHGPMGKz*hqF8*$u?-sw=<+wOt=&yx_ zOlFFe|ArzU7&6*#3bR|ye>F2R%X*V(U|_)M0C{&fSH254z@D|WZ24T#O8xHOFC{G& zoSUwU?iaSg5T(+5


moywynMOYd*v4oq;s9 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 z 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%0Dh-c)448YwI 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 Be<=U} literal 0 HcmV?d00001 diff --git a/docs/source/_static/metaconfigurator_gui_view.png b/docs/source/_static/metaconfigurator_gui_view.png new file mode 100644 index 0000000000000000000000000000000000000000..2b6f8fc1ea254a0222720b82dc381f2c239e163f GIT binary patch literal 78289 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 Date: Sat, 12 Sep 2026 00:01:40 +0200 Subject: [PATCH 2/9] Updates to generate Json schema docs. --- .../how-to/configuration/generate-json-schema.ipynb | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/source/how-to/configuration/generate-json-schema.ipynb b/docs/source/how-to/configuration/generate-json-schema.ipynb index 76a70dd..341e900 100644 --- a/docs/source/how-to/configuration/generate-json-schema.ipynb +++ b/docs/source/how-to/configuration/generate-json-schema.ipynb @@ -17,7 +17,9 @@ "source": [ "## Create the Registry\n", "\n", - "First create the registry and register the classes you want included in the schema." + "First create the registry and register the classes you want included in the schema.\n", + "\n", + "Here the discovery function is used to register all classes in `pyaml` and other packages which define entry points." ] }, { @@ -124,14 +126,14 @@ "source": [ "## Generate JSON Schema\n", "\n", - "The registry can also be used together with the `SchemaGenerator` to generate JSON Schema to use with external tools.\n", + "Use the `SchemaGenerator` to generate a JSON Schema to use with external tools.\n", "\n", "If a base schema has registered concrete or virtual subclasses, the generated JSON Schema includes those alternatives. This allows editors and other JSON Schema tools to offer the appropriate fields for each configuration type." ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 2, "id": "dfb96bb7", "metadata": {}, "outputs": [ @@ -597,7 +599,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 3, "id": "12610af9", "metadata": {}, "outputs": [ @@ -607,7 +609,7 @@ "PosixPath('quadrupole-schema.json')" ] }, - "execution_count": 18, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } From 6c9eb03c14e99ef6750c824374172c7dd71cb965 Mon Sep 17 00:00:00 2001 From: Teresia Olsson Date: Sun, 13 Sep 2026 17:31:18 +0200 Subject: [PATCH 3/9] Add how to for metaconfigurator. --- docs/requirements.txt | 4 ++ .../configuration/use-meta-configurator.md | 60 +++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 docs/requirements.txt create mode 100644 docs/source/how-to/configuration/use-meta-configurator.md diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000..1b92caa --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,4 @@ +pyaml-test-lattice +pyaml +pyaml-cs-oa[tango,epics] +tango-pyaml \ No newline at end of file diff --git a/docs/source/how-to/configuration/use-meta-configurator.md b/docs/source/how-to/configuration/use-meta-configurator.md new file mode 100644 index 0000000..6b448ed --- /dev/null +++ b/docs/source/how-to/configuration/use-meta-configurator.md @@ -0,0 +1,60 @@ +# Use the MetaConfigurator for Writing Configuration + +[MetaConfigurator](https://github.com/MetaConfigurator/meta-configurator) is a browser-based editor that can generate an editing form from a [JSON Schema](https://json-schema.org/). It can be used for writing and editing pyAML configuration files without having to remember every available field and its expected type. + +## Prepare a JSON Schema + +Pre-generated schemas are available in [pyaml-schemas](https://github.com/python-accelerator-middle-layer/pyaml-schemas). These include the classes that are part of the pyAML ecosystem. + +If you have facility specific classes that you want to include in your configuration, you can use the `SchemaRegistry` to generate a JSON Schema including them. See [Generate JSON Schemas](../configuration/generate-json-schema) for details. + +The schema must describe the document you want to create. For example, a schema for a quadrupole is suitable for editing a quadrupole object, but not for editing a complete accelerator containing controls, simulators, and devices. + +## Overview of MetaConfigurator + +Open the [MetaConfigurator](https://metaconfigurator.github.io/meta-configurator/data) in a browser. In this guide we use the experimental version to benefit from the latest bug fixes. + +```{figure} /_static/metaconfigurator_frontpage.png +:alt: Frontpage for the MetaConfigurator +:width: 80% + +Frontpage of the MetaConfigurator. +``` + +The editor has two different pages: data and schema. The menu in the top left corner shows which page you are currently on. When loading the site from start it normally opens on the data page. The pages have different purposes: + +- **Data**: edit and validate data against a schema +- **Schema**: edit or generate a schema + +In this guide we will focus on the data page but there is also a lot of other functionality to explore. See the [MetaConfigurator Documentation](https://github.com/MetaConfigurator/meta-configurator/tree/develop/documentation_user) for this. + +On the data page, the editor has two areas: + +- **Text view** (on the left): shows and edits the json or yaml document. +- **GUI view** (on the right): presents the document as a form generated from the loaded schema. Here you can add values and choose options in a menu. + +The GUI View is convenient for knowing which fields exist and their required types. The Text View is useful for checking the final structure and for switching between supported formats. + +## Load the Schema + +1. Use the schema menu to load the JSON Schema. This menu normally shows directly when loading the page. If not, you need to switch to the schema page to load it. You can load the schema from a file or an URL. +2. Switch back to the data page. In the GUI view you should now see a form with fields. Above this view there is an option to choose the format for the text view. + +```{figure} /_static/metaconfigurator_gui_view.png +:alt: GUI View after loading the accelerator schema +:width: 80% + +GUI view after loading the accelerator schema. +``` + +## Create the Configuration + +Start with the top-level object expected by the schema. Set the `class` field to the fully qualified path to the Python class that pyAML should build when loading the configuration. The available options will be shown in a drop down menu. + +The exact fields depend on the schema and the class being configured. Use the GUI view to add properties and enter values, then inspect the generated document in the text view. + +There is also an option to use AI prompts to modify the data but this might require configuring your own backend connection for frequent use. See the [AI Assistance Documentation](https://github.com/MetaConfigurator/meta-configurator/tree/develop/documentation_user/examples/ai_assistance). + +## Export the Result + +When the document is complete, use the menu in the text view to download the file. It can then be used in pyAML. From 051dcc57b25a19caeb747ac26b8a60cabfcda942 Mon Sep 17 00:00:00 2001 From: Teresia Olsson Date: Sun, 13 Sep 2026 18:33:11 +0200 Subject: [PATCH 4/9] Add instructions how to use JSON schema in VS Code. --- .../_static/vscode-json-schema-json.png | Bin 0 -> 33398 bytes .../_static/vscode-json-schema-yaml.png | Bin 0 -> 31401 bytes .../configuration/use-vscode-json-schema.md | 61 ++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 docs/source/_static/vscode-json-schema-json.png create mode 100644 docs/source/_static/vscode-json-schema-yaml.png create mode 100644 docs/source/how-to/configuration/use-vscode-json-schema.md diff --git a/docs/source/_static/vscode-json-schema-json.png b/docs/source/_static/vscode-json-schema-json.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0815cde45663d1956b31429710a3f6c89976df GIT binary patch literal 33398 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 literal 0 HcmV?d00001 diff --git a/docs/source/how-to/configuration/use-vscode-json-schema.md b/docs/source/how-to/configuration/use-vscode-json-schema.md new file mode 100644 index 0000000..e18b3c0 --- /dev/null +++ b/docs/source/how-to/configuration/use-vscode-json-schema.md @@ -0,0 +1,61 @@ +# Use JSON Schema in VS Code + +[VS Code](https://code.visualstudio.com/) can use a JSON Schema to help writing and editing JSON and YAML files. The schema provides completion, property descriptions, and diagnostics for invalid values. + +This guide shows how to associate a JSON Schema with JSON and YAML files and use it to write pyAML configuration files. + +## Required Extensions + +- **JSON**: JSON support is built into VS Code. JSON files are recognized automatically when their names end in `.json`. + +- **YAML**: For YAML you need to install an extension. Open the `Extensions` view, search for `YAML`, and install the extension published by Red Hat. + +## Enable Remote Schema Downloads + +To be able to use schemas that are hosted online (for example on GitHub), VS Code must be allowed to download the schema. Open File -> Preferences -> Settings and search for **JSON: Schema Download: Enable** and enable it. + +You also need to add the source to trusted domains. Search for **JSON: Schema Download: Trusted Domains** and add the domain you want to download from there. For GitHub that should be `https://raw.githubusercontent.com/`. + +## Add the JSON Schema + +You can associate a JSON Schema with a file in two ways, directly in the file or in the VS Code settings for a more permanent setup. The examples here show the option to do it directly in the file. See the [VS Code Documentation](https://code.visualstudio.com/docs/languages/json#_mapping-in-the-user-settings) for details how to do it in settings. + +The examples use the accelerator schema published in [pyaml-schemas](https://github.com/python-accelerator-middle-layer/pyaml-schemas) but it is also possible to use a local file. Place this as the first sentence in the file: + +**JSON**: + +```JSON +{ + "$schema": "https://raw.githubusercontent.com/python-accelerator-middle-layer/pyaml-schemas/main/schemas/accelerator.schema.json", +} +``` + +**YAML**: + +```YAML +# yaml-language-server: $schema=https://raw.githubusercontent.com/python-accelerator-middle-layer/pyaml-schemas/main/schemas/accelerator.schema.json +``` + +## Edit the file + +VS Code should now provide code completion when you type a property name. Hover over a property to see its description and red or yellow squiggles show when a value does not match the schema. + +The way the completion looks and works is slightly different between JSON and YAML. + +**JSON**: + +```{figure} /_static/vscode-json-schema-json.png +:alt: Hints for the JSON Schema in VS Code when writing JSON +:width: 80% + +Hints for the JSON Schema in VS Code when writing JSON. +``` + +**YAML**: + +```{figure} /_static/vscode-json-schema-yaml.png +:alt: Hints for the JSON Schema in VS Code +:width: 80% + +Hints for the JSON Schema in VS Code when writing YAML. +``` From 8ebfa1aba47acaa7505ed9c77e4acf9af48e7536 Mon Sep 17 00:00:00 2001 From: Teresia Olsson Date: Sun, 13 Sep 2026 18:33:44 +0200 Subject: [PATCH 5/9] Update title how how-to about metaconfigurator. --- docs/source/how-to/configuration/use-meta-configurator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/how-to/configuration/use-meta-configurator.md b/docs/source/how-to/configuration/use-meta-configurator.md index 6b448ed..8367a1b 100644 --- a/docs/source/how-to/configuration/use-meta-configurator.md +++ b/docs/source/how-to/configuration/use-meta-configurator.md @@ -1,4 +1,4 @@ -# Use the MetaConfigurator for Writing Configuration +# Use the MetaConfigurator [MetaConfigurator](https://github.com/MetaConfigurator/meta-configurator) is a browser-based editor that can generate an editing form from a [JSON Schema](https://json-schema.org/). It can be used for writing and editing pyAML configuration files without having to remember every available field and its expected type. From 86c181e905630c95dae2e8f36deaebd942c86c2d Mon Sep 17 00:00:00 2001 From: Teresia Olsson Date: Sun, 13 Sep 2026 18:43:13 +0200 Subject: [PATCH 6/9] Update schema registry content. --- .../configuration/use-schema-registry.ipynb | 193 ++++++------------ .../validate-configuration.ipynb | 161 +++++++++++++++ docs/source/how-to/index.md | 2 + 3 files changed, 222 insertions(+), 134 deletions(-) create mode 100644 docs/source/how-to/configuration/validate-configuration.ipynb diff --git a/docs/source/how-to/configuration/use-schema-registry.ipynb b/docs/source/how-to/configuration/use-schema-registry.ipynb index 9334851..9b62b72 100644 --- a/docs/source/how-to/configuration/use-schema-registry.ipynb +++ b/docs/source/how-to/configuration/use-schema-registry.ipynb @@ -7,7 +7,9 @@ "source": [ "# Use the Schema Registry\n", "\n", - "This guide shows how to register configuration schemas and use the `SchemaRegistry` to validate configuration and generate JSON Schemas." + "This guide shows how to register configuration schemas in the `SchemaRegistry` and how to explore the contents of the registry.\n", + "\n", + "The registry can be used to [validate configuration](./validate-configuration) or [generate JSON Schema](./generate-json-schema)." ] }, { @@ -211,7 +213,7 @@ "output_type": "stream", "text": [ "SchemaRegistry(\n", - " 'abc.ABC': abc.ABCConfigurationSchema,\n", + " 'pyaml.accelerator.Accelerator': pyaml.accelerator.AcceleratorConfigurationSchema,\n", " 'pyaml.arrays.array.ArrayConfig': pyaml.arrays.array.ArrayConfigConfigurationSchema,\n", " 'pyaml.arrays.bpm.BPM': pyaml.arrays.bpm.BPMConfigurationSchema,\n", " 'pyaml.arrays.cfm_magnet.CombinedFunctionMagnet': pyaml.arrays.cfm_magnet.CombinedFunctionMagnetConfigurationSchema,\n", @@ -221,6 +223,8 @@ " 'pyaml.bpm.bpm.BPM': pyaml.bpm.bpm.BPMConfigurationSchema,\n", " 'pyaml.common.element.Element': pyaml.common.element.ElementConfigurationSchema,\n", " 'pyaml.common.holders.element_holder.ElementHolder': pyaml.common.holders.element_holder.ElementHolderConfigurationSchema,\n", + " 'pyaml.control.controlsystem.ControlSystem': pyaml.control.controlsystem.ControlSystemConfigurationSchema,\n", + " 'pyaml.control.deviceaccess.DeviceAccess': pyaml.control.deviceaccess.DeviceAccessConfigurationSchema,\n", " 'pyaml.diagnostics.atune_monitor.ABetatronTuneMonitor': pyaml.diagnostics.atune_monitor.ABetatronTuneMonitorConfigurationSchema,\n", " 'pyaml.diagnostics.tune_monitor.BetatronTuneMonitor': pyaml.diagnostics.tune_monitor.BetatronTuneMonitorConfigurationSchema,\n", " 'pyaml.lattice.attribute_linker.PyAtAttributeElementsLinker': pyaml.lattice.attribute_linker.PyAtAttributeElementsLinkerConfigurationSchema,\n", @@ -268,7 +272,21 @@ " 'pyaml.tuning_tools.tune_response_matrix.TuneResponseMatrix': pyaml.tuning_tools.tune_response_matrix.TuneResponseMatrixConfigurationSchema,\n", " 'pyaml.tuning_tools.tuning_tool.TuningTool': pyaml.tuning_tools.tuning_tool.TuningToolConfigurationSchema,\n", " 'pyaml.validation.validation_models.DynamicValidation': pyaml.validation.validation_models.DynamicValidationConfigurationSchema,\n", - " 'typing.Any': typing.AnyConfigurationSchema,\n", + " 'pyaml_cs_oa.catalog.Catalog': pyaml_cs_oa.catalog.CatalogConfigurationSchema,\n", + " 'pyaml_cs_oa.controlsystem.OphydAsyncControlSystem': pyaml_cs_oa.controlsystem.OphydAsyncControlSystemConfigurationSchema,\n", + " 'pyaml_cs_oa.dynamic_catalog.DynamicCatalog': pyaml_cs_oa.dynamic_catalog.DynamicCatalogConfigurationSchema,\n", + " 'pyaml_cs_oa.epicsR.EpicsR': pyaml_cs_oa.epicsR.EpicsRConfigurationSchema,\n", + " 'pyaml_cs_oa.epicsRW.EpicsRW': pyaml_cs_oa.epicsRW.EpicsRWConfigurationSchema,\n", + " 'pyaml_cs_oa.epicsW.EpicsW': pyaml_cs_oa.epicsW.EpicsWConfigurationSchema,\n", + " 'pyaml_cs_oa.float_signal.FloatSignalContainer': pyaml_cs_oa.float_signal.FloatSignalContainerConfigurationSchema,\n", + " 'pyaml_cs_oa.signal.OASignal': pyaml_cs_oa.signal.OASignalConfigurationSchema,\n", + " 'pyaml_cs_oa.static_catalog.StaticCatalog': pyaml_cs_oa.static_catalog.StaticCatalogConfigurationSchema,\n", + " 'pyaml_cs_oa.static_catalog_entry.StaticCatalogEntry': pyaml_cs_oa.static_catalog_entry.StaticCatalogEntryConfigurationSchema,\n", + " 'pyaml_cs_oa.tangoAtt.TangoAtt': pyaml_cs_oa.tangoAtt.TangoAttConfigurationSchema,\n", + " 'pyaml_cs_oa.types.EpicsConfigR': pyaml_cs_oa.types.EpicsConfigRConfigurationSchema,\n", + " 'pyaml_cs_oa.types.EpicsConfigRW': pyaml_cs_oa.types.EpicsConfigRWConfigurationSchema,\n", + " 'pyaml_cs_oa.types.EpicsConfigW': pyaml_cs_oa.types.EpicsConfigWConfigurationSchema,\n", + " 'pyaml_cs_oa.types.TangoConfigAtt': pyaml_cs_oa.types.TangoConfigAttConfigurationSchema,\n", ")\n" ] } @@ -377,7 +395,6 @@ "- pyaml.magnet.skewquad.SkewQuad\n", "- pyaml.magnet.skewsext.SkewSext\n", "- pyaml.magnet.vcorrector.VCorrector\n", - "- typing.Any\n", "- pyaml.magnet.cfm_magnet.CombinedFunctionMagnet\n", "- pyaml.magnet.serialized_magnet.SerializedMagnets\n", "- pyaml.diagnostics.tune_monitor.BetatronTuneMonitor\n", @@ -388,10 +405,11 @@ "- pyaml.tuning_tools.measurement_tool.MeasurementTool\n", "- pyaml.arrays.array.ArrayConfig\n", "- pyaml.lattice.lattice_elements_linker.LinkerConfigModel\n", - "- abc.ABC\n", "- pyaml.lattice.lattice_elements_linker.LatticeElementsLinker\n", "- pyaml.lattice.simulator.Simulator\n", "- pyaml.common.holders.element_holder.ElementHolder\n", + "- pyaml.control.controlsystem.ControlSystem\n", + "- pyaml.accelerator.Accelerator\n", "- pyaml.arrays.bpm.BPM\n", "- pyaml.arrays.cfm_magnet.CombinedFunctionMagnet\n", "- pyaml.arrays.element.Element\n", @@ -422,6 +440,22 @@ "- pyaml.tuning_tools.orbit_response_matrix.OrbitResponseMatrix\n", "- pyaml.tuning_tools.tune.Tune\n", "- pyaml.tuning_tools.tune_response_matrix.TuneResponseMatrix\n", + "- pyaml_cs_oa.epicsR.EpicsR\n", + "- pyaml_cs_oa.types.EpicsConfigR\n", + "- pyaml_cs_oa.types.EpicsConfigW\n", + "- pyaml_cs_oa.types.EpicsConfigRW\n", + "- pyaml_cs_oa.types.TangoConfigAtt\n", + "- pyaml_cs_oa.float_signal.FloatSignalContainer\n", + "- pyaml_cs_oa.signal.OASignal\n", + "- pyaml.control.deviceaccess.DeviceAccess\n", + "- pyaml_cs_oa.epicsRW.EpicsRW\n", + "- pyaml_cs_oa.epicsW.EpicsW\n", + "- pyaml_cs_oa.tangoAtt.TangoAtt\n", + "- pyaml_cs_oa.catalog.Catalog\n", + "- pyaml_cs_oa.controlsystem.OphydAsyncControlSystem\n", + "- pyaml_cs_oa.dynamic_catalog.DynamicCatalog\n", + "- pyaml_cs_oa.static_catalog_entry.StaticCatalogEntry\n", + "- pyaml_cs_oa.static_catalog.StaticCatalog\n", "\n", " Registered schema classes:\n", "- BPMConfigurationSchema\n", @@ -437,7 +471,6 @@ "- SkewQuadConfigurationSchema\n", "- SkewSextConfigurationSchema\n", "- VCorrectorConfigurationSchema\n", - "- AnyConfigurationSchema\n", "- CombinedFunctionMagnetConfigurationSchema\n", "- SerializedMagnetsConfigurationSchema\n", "- BetatronTuneMonitorConfigurationSchema\n", @@ -448,10 +481,11 @@ "- MeasurementToolConfigurationSchema\n", "- ArrayConfigConfigurationSchema\n", "- LinkerConfigModelConfigurationSchema\n", - "- ABCConfigurationSchema\n", "- LatticeElementsLinkerConfigurationSchema\n", "- SimulatorConfigurationSchema\n", "- ElementHolderConfigurationSchema\n", + "- ControlSystemConfigurationSchema\n", + "- AcceleratorConfigurationSchema\n", "- BPMConfigurationSchema\n", "- CombinedFunctionMagnetConfigurationSchema\n", "- ElementConfigurationSchema\n", @@ -481,7 +515,23 @@ "- OrbitConfigurationSchema\n", "- OrbitResponseMatrixConfigurationSchema\n", "- TuneConfigurationSchema\n", - "- TuneResponseMatrixConfigurationSchema\n" + "- TuneResponseMatrixConfigurationSchema\n", + "- EpicsRConfigurationSchema\n", + "- EpicsConfigRConfigurationSchema\n", + "- EpicsConfigWConfigurationSchema\n", + "- EpicsConfigRWConfigurationSchema\n", + "- TangoConfigAttConfigurationSchema\n", + "- FloatSignalContainerConfigurationSchema\n", + "- OASignalConfigurationSchema\n", + "- DeviceAccessConfigurationSchema\n", + "- EpicsRWConfigurationSchema\n", + "- EpicsWConfigurationSchema\n", + "- TangoAttConfigurationSchema\n", + "- CatalogConfigurationSchema\n", + "- OphydAsyncControlSystemConfigurationSchema\n", + "- DynamicCatalogConfigurationSchema\n", + "- StaticCatalogEntryConfigurationSchema\n", + "- StaticCatalogConfigurationSchema\n" ] } ], @@ -508,7 +558,7 @@ "output_type": "stream", "text": [ "\n", - "Number of registered schemas: 58\n" + "Number of registered schemas: 74\n" ] } ], @@ -516,131 +566,6 @@ "# Print the number of schemas in the registry\n", "print(f\"\\nNumber of registered schemas: {len(registry)}\")" ] - }, - { - "cell_type": "markdown", - "id": "f693c376", - "metadata": {}, - "source": [ - "## Validate Configuration\n", - "\n", - "Configuration data can be validated using the `SchemaValidator`. It makes use of the schema registry to extract which schema to validate against for a specific class.\n", - "\n", - "For validation to be possible the class must be registered in the schema registry. If the class is not registered, validation will be skipped, a warning given and the data kept unchanged. Beware that this can lead to unexpected errors." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "73114262", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "model_path = \"pyaml.magnet.identity_model.IdentityMagnetModel\"\n", - "print(registry.get(model_path))" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "b2523c34", - "metadata": {}, - "outputs": [], - "source": [ - "from pyaml.validation import SchemaRegistry, SchemaValidator\n", - "\n", - "registry = SchemaRegistry()\n", - "registry.discover()\n", - "\n", - "configuration = {\n", - " \"class_path\": \"pyaml.magnet.quadrupole.Quadrupole\",\n", - " \"name\": \"QF1\",\n", - " \"description\": \"This is the QF1 quadrupole magnet.\"\n", - "}\n", - "validated = SchemaValidator.validate(configuration)" - ] - }, - { - "cell_type": "markdown", - "id": "365329b2", - "metadata": {}, - "source": [ - "Validation also handles nested configuration data." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "2e5df599", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "class_path='pyaml.magnet.quadrupole.Quadrupole' name='QF1' model=IdentityMagnetModelConfigurationSchema(class_path='pyaml.magnet.identity_model.IdentityMagnetModel', powerconverter=None, physics='', unit='1/m') lattice_names=None description='This is the QF1 quadrupole magnet.'\n" - ] - } - ], - "source": [ - "configuration = {\n", - " \"class_path\": \"pyaml.magnet.quadrupole.Quadrupole\",\n", - " \"name\": \"QF1\",\n", - " \"model\": {\n", - " \"class_path\": \"pyaml.magnet.identity_model.IdentityMagnetModel\",\n", - " \"unit\": \"1/m\",\n", - " \"physics\": \"\"\n", - " },\n", - " \"description\": \"This is the QF1 quadrupole magnet.\"\n", - "}\n", - "\n", - "validated = SchemaValidator.validate(configuration)\n", - "print(validated)" - ] - }, - { - "cell_type": "markdown", - "id": "aa814612", - "metadata": {}, - "source": [ - "The validated result can also be returned as a dictionary." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "3308aba1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'class_path': 'pyaml.magnet.quadrupole.Quadrupole',\n", - " 'description': 'This is the QF1 quadrupole magnet.',\n", - " 'lattice_names': None,\n", - " 'model': {'class_path': 'pyaml.magnet.identity_model.IdentityMagnetModel',\n", - " 'physics': '',\n", - " 'powerconverter': None,\n", - " 'unit': '1/m'},\n", - " 'name': 'QF1'}\n" - ] - } - ], - "source": [ - "from pprint import pprint\n", - "\n", - "validated_dict = SchemaValidator.validate_to_dict(configuration)\n", - "pprint(validated_dict )" - ] } ], "metadata": { diff --git a/docs/source/how-to/configuration/validate-configuration.ipynb b/docs/source/how-to/configuration/validate-configuration.ipynb new file mode 100644 index 0000000..bca97a6 --- /dev/null +++ b/docs/source/how-to/configuration/validate-configuration.ipynb @@ -0,0 +1,161 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f693c376", + "metadata": {}, + "source": [ + "# Validate Configuration\n", + "\n", + "The configuration can be validated using the `SchemaValidator`. It makes use of the schema registry to extract which schema to validate against for a specific class.\n", + "\n", + "For validation to be possible the class must be registered in the schema registry. If the class is not registered, validation will be skipped, a warning given and the data kept unchanged. Beware that this can lead to unexpected errors." + ] + }, + { + "cell_type": "markdown", + "id": "f2865e86", + "metadata": {}, + "source": [ + "## Create the Registry\n", + "\n", + "First create the registry and register the classes you want included in the schema.\n", + "\n", + "Here the discovery function is used to register all classes in `pyaml` and other packages which define entry points." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fbbf800f", + "metadata": {}, + "outputs": [], + "source": [ + "from pyaml.validation import SchemaRegistry\n", + "\n", + "registry = SchemaRegistry()\n", + "registry.discover()" + ] + }, + { + "cell_type": "markdown", + "id": "671f48ba", + "metadata": {}, + "source": [ + "## Validate Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b2523c34", + "metadata": {}, + "outputs": [], + "source": [ + "from pyaml.validation import SchemaValidator\n", + "\n", + "configuration = {\n", + " \"class_path\": \"pyaml.magnet.quadrupole.Quadrupole\",\n", + " \"name\": \"QF1\",\n", + " \"description\": \"This is the QF1 quadrupole magnet.\"\n", + "}\n", + "validated = SchemaValidator.validate(configuration)" + ] + }, + { + "cell_type": "markdown", + "id": "365329b2", + "metadata": {}, + "source": [ + "Validation also handles nested configuration data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e5df599", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "class_path='pyaml.magnet.quadrupole.Quadrupole' name='QF1' model=IdentityMagnetModelConfigurationSchema(class_path='pyaml.magnet.identity_model.IdentityMagnetModel', powerconverter=None, physics='', unit='1/m') lattice_names=None description='This is the QF1 quadrupole magnet.'\n" + ] + } + ], + "source": [ + "configuration = {\n", + " \"class_path\": \"pyaml.magnet.quadrupole.Quadrupole\",\n", + " \"name\": \"QF1\",\n", + " \"model\": {\n", + " \"class_path\": \"pyaml.magnet.identity_model.IdentityMagnetModel\",\n", + " \"unit\": \"1/m\",\n", + " \"physics\": \"\"\n", + " },\n", + " \"description\": \"This is the QF1 quadrupole magnet.\"\n", + "}\n", + "\n", + "validated = SchemaValidator.validate(configuration)\n", + "print(validated)" + ] + }, + { + "cell_type": "markdown", + "id": "aa814612", + "metadata": {}, + "source": [ + "The validated result can also be returned as a dictionary." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3308aba1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'class_path': 'pyaml.magnet.quadrupole.Quadrupole',\n", + " 'description': 'This is the QF1 quadrupole magnet.',\n", + " 'lattice_names': None,\n", + " 'model': {'class_path': 'pyaml.magnet.identity_model.IdentityMagnetModel',\n", + " 'physics': '',\n", + " 'powerconverter': None,\n", + " 'unit': '1/m'},\n", + " 'name': 'QF1'}\n" + ] + } + ], + "source": [ + "from pprint import pprint\n", + "\n", + "validated_dict = SchemaValidator.validate_to_dict(configuration)\n", + "pprint(validated_dict )" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pyaml-documentation", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/source/how-to/index.md b/docs/source/how-to/index.md index 8827cef..43c7c02 100644 --- a/docs/source/how-to/index.md +++ b/docs/source/how-to/index.md @@ -23,8 +23,10 @@ installation/developer-installation configuration/create-configuration configuration/use-schema-registry +configuration/validate-configuration configuration/generate-json-schema configuration/use-meta-configurator +configuration/use-vscode-json-schema ``` From 7311af03c1c0d1d7133828ba02b7cad1e11875cb Mon Sep 17 00:00:00 2001 From: Teresia Olsson Date: Sun, 13 Sep 2026 20:40:03 +0200 Subject: [PATCH 7/9] Add explanation for configuration. --- docs/source/explanation/configuration.md | 90 ++++++++++++++++++++++++ docs/source/explanation/index.md | 3 +- 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 docs/source/explanation/configuration.md diff --git a/docs/source/explanation/configuration.md b/docs/source/explanation/configuration.md new file mode 100644 index 0000000..839e256 --- /dev/null +++ b/docs/source/explanation/configuration.md @@ -0,0 +1,90 @@ +# Principles and Syntax of the Configuration + +By creating a configuration it is possible to have pyAML build devices and applications automatically for several control modes. + +The configuration is normally written and loaded on the level of an `Accelerator`. This allows to define parameters and metadata which are common for all objects in the accelerator in addition to control modes, arrays and devices. For example: + +```yaml +class: pyaml.accelerator.Accelerator +facility: pyAML_facility +machine: storage_ring +data_folder: '' +energy: 1e6 +controls: +simulators: +arrays: +devices: +``` + +The configuration is organised as a description of a nested Python object tree. It contains the information needed to construct the objects. + +The syntax has been chosen to allow configuration and construction of objects for both pyAML classes and third party classes. This is to allow integration of facility specific implementation in pyAML, but also to simplify future development where it might be desirable to replace old classes with newer versions without breaking compatibility. + +## Configuration Items + +Each configurable item is represented by a mapping which describes the attributes and values needed to construct one Python object. The field `class` or `class_path` identifies the type to construct. It should be written as a fully qualified Python class path, consisting of the module and class name. For example: + +```yaml +class: pyaml.magnet.quadrupole.Quadrupole +``` + +When pyAML reads the configuration, it uses this path to select the class and passes the remaining configuration fields to the constructor of the class. + +An object can contain other configurable objects. The nested objects follow the same principle: each has its own `class` field and the values needed to construct it. For example: + +```yaml +class: pyaml.magnet.quadrupole.Quadrupole +name: QF_001 +model: + class: pyaml.magnet.identity_model.IdentityMagnetModel + unit: 1/m + physics: AN01-AR/EM-QP/QF.01/magnetic_strength +``` + +## Separation between Configuration and Source Code + +The configuration describes what should be constructed; it does not contain executable Python code. This keeps configuration readable, reviewable, and usable by tools such as JSON Schema editors. + +The configuration is possible to maintain separately to pyAML, for example in a separate Git repository or in a database. + +## Supported Formats + +The configuration can be written and loaded in different formats: + +**File**: It can be written as a text file and loaded using `Accelerator.load()`. Both `YAML` and `JSON` are supported but `YAML` is considered the default option. + +**Dictionary**: It can also be written as a nested dictionary and loaded using `Accelerator.from_dict()`. + +## Configuration Root + +The configuration root is the directory used to resolve relative configuration paths. It applies to the file passed to `Accelerator.load()`, paths used by resolvers, and automatic file includes. Relative paths are resolved against this directory. + +By default, the root is the current working directory when pyAML is imported. It can be changed before loading a configuration with `ROOT.set()`: + +```python +from pyaml.configuration import ROOT + +ROOT.set("/path/to/configuration") +``` + +After setting the root, `devices/quadrupole.yaml` refers to `/path/to/configuration/devices/quadrupole.yaml`. Absolute paths are normalized and used directly. Setting the root makes it possible to keep a configuration and its included files in a portable directory tree while selecting that tree at runtime. + +## Resolvers + +Resolvers let a configuration value refer to information that is supplied when the configuration is loaded, such as an environment variable or another configuration file. A resolver expression has the following form: + +```yaml +${resolver:payload} +``` + +The part before the first colon selects the resolver whereas the part after is passed to that resolver. Expressions are expanded recursively in mappings and lists. + +The following built-in resolvers are available: + +| Resolver | Type | Description | +| --- | --- | --- | +| `env` | Environment variable | The value of the named environment variable. An error is raised if it is not set. | +| `path` | A file or directory path | The absolute, normalized path, resolved relative to pyAML's configuration root. The target is not loaded as part of loading the configuration. | +| `file` | A YAML, YML, or JSON file path | The path to a file which should be loaded and expanded into the configuration as part of loading the configuration. Relative paths use the configuration root. + +Configuration files can also be included without an explicit `file` expression. A string ending in `.yaml`, `.yml`, or `.json` is loaded automatically for convenience if one wishes to split the configuration into several files. diff --git a/docs/source/explanation/index.md b/docs/source/explanation/index.md index e46e5e7..ed5850c 100644 --- a/docs/source/explanation/index.md +++ b/docs/source/explanation/index.md @@ -5,7 +5,8 @@ Here you can find explanations of the concepts, design decisions, and underlying ```{toctree} :maxdepth: 1 -schema_and_validation +configuration +schema_and_validation catalog ``` From f5511024fba980a61f0f13bb4a02cb4980e70ddd Mon Sep 17 00:00:00 2001 From: Teresia Olsson Date: Sun, 13 Sep 2026 20:42:17 +0200 Subject: [PATCH 8/9] Update info about how to create configuration. --- .../configuration/create-configuration.md | 31 +- .../configuration/generate-json-schema.ipynb | 88 +--- .../use-configuration-schema.ipynb | 387 ++++++++++++++++++ .../validate-configuration.ipynb | 8 +- docs/source/how-to/index.md | 1 + 5 files changed, 408 insertions(+), 107 deletions(-) create mode 100644 docs/source/how-to/configuration/use-configuration-schema.ipynb diff --git a/docs/source/how-to/configuration/create-configuration.md b/docs/source/how-to/configuration/create-configuration.md index 8ec5a1d..a8f24ee 100644 --- a/docs/source/how-to/configuration/create-configuration.md +++ b/docs/source/how-to/configuration/create-configuration.md @@ -1,27 +1,24 @@ -# Create Configuration +# Create and Load Configuration -By creating a configuration it is possible to have pyAML create devices and applications automatically for several control modes. +The principles and syntax of the configuration are explained in more detail in [Principles and Syntax of the Configuration](../../explanation/configuration). This guide focuses on the different ways to create it. -There are different ways to create a configuration and different formats are supported. -These are explained in this guide. +There are several ways to create a configuration. It is recommended to test the different options and see which one you prefer: -## Principle +- Create `ConfigurationSchema` objects and export as a dictionary or text file -The configuration is done on the level of an `Accelerator`. This allows not only to create devices and applications for different control modes but also to define parameters and metadata which are common for the accelerator. +- Use a JSON Schema in the [MetaConfigurator](./use-meta-configurator.md) -The syntax supports configuration of both pyAML classes and third party classes to allow the use of pyAML implementations as well as facility specific implementation in the same accelerator. This is done by for each item in the configuration define the field `class` or `class_path` to say which class to build an object of. +- Use a [JSON Schema in VS Code](./use-vscode-json-schema.md) -## Format Options +## Load the Configuration -A configuration can be created and loaded using different formats: +The configuration can be loaded into the `Accelerator` in several ways: -1. File +| Type| Command | Description | +| --- | --- | --- | +| File | `Accelerator.load()` | A text file in JSON on YAML format. +| Dictionary | `Accelerator.from_dict()` | A nested dictionary. - The configuration can be written as a text file and loaded using `Accelerator.load()`. Both `YAML` and `JSON` are supported but `YAML` is considered the default option. +## Validation -2. Dictionary - - The configuration can be written as a nested dictionary and loaded using `Accelerator.from_dict()`. - - -To be continued with details about the different tools to help write it... +The configuration is validated when loading it into the `Accelerator` but it can also be validated without having to load it. This is useful if you want to be able to maintain it separately from pyAML. See [Validate Configuration](./validate-configuration) for details. \ No newline at end of file diff --git a/docs/source/how-to/configuration/generate-json-schema.ipynb b/docs/source/how-to/configuration/generate-json-schema.ipynb index 341e900..3e74178 100644 --- a/docs/source/how-to/configuration/generate-json-schema.ipynb +++ b/docs/source/how-to/configuration/generate-json-schema.ipynb @@ -27,96 +27,12 @@ "execution_count": 1, "id": "3ee0074c", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SchemaRegistry(\n", - " 'pyaml.accelerator.Accelerator': pyaml.accelerator.AcceleratorConfigurationSchema,\n", - " 'pyaml.arrays.array.ArrayConfig': pyaml.arrays.array.ArrayConfigConfigurationSchema,\n", - " 'pyaml.arrays.bpm.BPM': pyaml.arrays.bpm.BPMConfigurationSchema,\n", - " 'pyaml.arrays.cfm_magnet.CombinedFunctionMagnet': pyaml.arrays.cfm_magnet.CombinedFunctionMagnetConfigurationSchema,\n", - " 'pyaml.arrays.element.Element': pyaml.arrays.element.ElementConfigurationSchema,\n", - " 'pyaml.arrays.magnet.Magnet': pyaml.arrays.magnet.MagnetConfigurationSchema,\n", - " 'pyaml.arrays.serialized_magnet.SerializedMagnets': pyaml.arrays.serialized_magnet.SerializedMagnetsConfigurationSchema,\n", - " 'pyaml.bpm.bpm.BPM': pyaml.bpm.bpm.BPMConfigurationSchema,\n", - " 'pyaml.common.element.Element': pyaml.common.element.ElementConfigurationSchema,\n", - " 'pyaml.common.holders.element_holder.ElementHolder': pyaml.common.holders.element_holder.ElementHolderConfigurationSchema,\n", - " 'pyaml.control.controlsystem.ControlSystem': pyaml.control.controlsystem.ControlSystemConfigurationSchema,\n", - " 'pyaml.control.deviceaccess.DeviceAccess': pyaml.control.deviceaccess.DeviceAccessConfigurationSchema,\n", - " 'pyaml.diagnostics.atune_monitor.ABetatronTuneMonitor': pyaml.diagnostics.atune_monitor.ABetatronTuneMonitorConfigurationSchema,\n", - " 'pyaml.diagnostics.tune_monitor.BetatronTuneMonitor': pyaml.diagnostics.tune_monitor.BetatronTuneMonitorConfigurationSchema,\n", - " 'pyaml.lattice.attribute_linker.PyAtAttributeElementsLinker': pyaml.lattice.attribute_linker.PyAtAttributeElementsLinkerConfigurationSchema,\n", - " 'pyaml.lattice.lattice_elements_linker.LatticeElementsLinker': pyaml.lattice.lattice_elements_linker.LatticeElementsLinkerConfigurationSchema,\n", - " 'pyaml.lattice.lattice_elements_linker.LinkerConfigModel': pyaml.lattice.lattice_elements_linker.LinkerConfigModelConfigurationSchema,\n", - " 'pyaml.lattice.simulator.Simulator': pyaml.lattice.simulator.SimulatorConfigurationSchema,\n", - " 'pyaml.magnet.cfm_magnet.CombinedFunctionMagnet': pyaml.magnet.cfm_magnet.CombinedFunctionMagnetConfigurationSchema,\n", - " 'pyaml.magnet.csvcurve.CSVCurve': pyaml.magnet.csvcurve.CSVCurveConfigurationSchema,\n", - " 'pyaml.magnet.csvmatrix.CSVMatrix': pyaml.magnet.csvmatrix.CSVMatrixConfigurationSchema,\n", - " 'pyaml.magnet.curve.Curve': pyaml.magnet.curve.CurveConfigurationSchema,\n", - " 'pyaml.magnet.hcorrector.HCorrector': pyaml.magnet.hcorrector.HCorrectorConfigurationSchema,\n", - " 'pyaml.magnet.identity_cfm_model.IdentityCFMagnetModel': pyaml.magnet.identity_cfm_model.IdentityCFMagnetModelConfigurationSchema,\n", - " 'pyaml.magnet.identity_model.IdentityMagnetModel': pyaml.magnet.identity_model.IdentityMagnetModelConfigurationSchema,\n", - " 'pyaml.magnet.inline_curve.InlineCurve': pyaml.magnet.inline_curve.InlineCurveConfigurationSchema,\n", - " 'pyaml.magnet.inline_matrix.InlineMatrix': pyaml.magnet.inline_matrix.InlineMatrixConfigurationSchema,\n", - " 'pyaml.magnet.linear_cfm_model.LinearCFMagnetModel': pyaml.magnet.linear_cfm_model.LinearCFMagnetModelConfigurationSchema,\n", - " 'pyaml.magnet.linear_model.LinearMagnetModel': pyaml.magnet.linear_model.LinearMagnetModelConfigurationSchema,\n", - " 'pyaml.magnet.linear_serialized_model.LinearSerializedMagnetModel': pyaml.magnet.linear_serialized_model.LinearSerializedMagnetModelConfigurationSchema,\n", - " 'pyaml.magnet.magnet.Magnet': pyaml.magnet.magnet.MagnetConfigurationSchema,\n", - " 'pyaml.magnet.matrix.Matrix': pyaml.magnet.matrix.MatrixConfigurationSchema,\n", - " 'pyaml.magnet.model.MagnetModel': pyaml.magnet.model.MagnetModelConfigurationSchema,\n", - " 'pyaml.magnet.octupole.Octupole': pyaml.magnet.octupole.OctupoleConfigurationSchema,\n", - " 'pyaml.magnet.quadrupole.Quadrupole': pyaml.magnet.quadrupole.QuadrupoleConfigurationSchema,\n", - " 'pyaml.magnet.serialized_magnet.SerializedMagnets': pyaml.magnet.serialized_magnet.SerializedMagnetsConfigurationSchema,\n", - " 'pyaml.magnet.sextupole.Sextupole': pyaml.magnet.sextupole.SextupoleConfigurationSchema,\n", - " 'pyaml.magnet.skewoctu.SkewOctu': pyaml.magnet.skewoctu.SkewOctuConfigurationSchema,\n", - " 'pyaml.magnet.skewquad.SkewQuad': pyaml.magnet.skewquad.SkewQuadConfigurationSchema,\n", - " 'pyaml.magnet.skewsext.SkewSext': pyaml.magnet.skewsext.SkewSextConfigurationSchema,\n", - " 'pyaml.magnet.spline_model.SplineMagnetModel': pyaml.magnet.spline_model.SplineMagnetModelConfigurationSchema,\n", - " 'pyaml.magnet.vcorrector.VCorrector': pyaml.magnet.vcorrector.VCorrectorConfigurationSchema,\n", - " 'pyaml.rf.rf_plant.RFPlant': pyaml.rf.rf_plant.RFPlantConfigurationSchema,\n", - " 'pyaml.rf.rf_transmitter.RFTransmitter': pyaml.rf.rf_transmitter.RFTransmitterConfigurationSchema,\n", - " 'pyaml.tuning_tools.bba.BBA': pyaml.tuning_tools.bba.BBAConfigurationSchema,\n", - " 'pyaml.tuning_tools.bba2.BBA2': pyaml.tuning_tools.bba2.BBA2ConfigurationSchema,\n", - " 'pyaml.tuning_tools.chromaticity.Chromaticity': pyaml.tuning_tools.chromaticity.ChromaticityConfigurationSchema,\n", - " 'pyaml.tuning_tools.chromaticity_monitor.ChromaticityMonitor': pyaml.tuning_tools.chromaticity_monitor.ChromaticityMonitorConfigurationSchema,\n", - " 'pyaml.tuning_tools.chromaticity_response_matrix.ChromaticityResponseMatrix': pyaml.tuning_tools.chromaticity_response_matrix.ChromaticityResponseMatrixConfigurationSchema,\n", - " 'pyaml.tuning_tools.dispersion.Dispersion': pyaml.tuning_tools.dispersion.DispersionConfigurationSchema,\n", - " 'pyaml.tuning_tools.measurement_tool.MeasurementTool': pyaml.tuning_tools.measurement_tool.MeasurementToolConfigurationSchema,\n", - " 'pyaml.tuning_tools.orbit.Orbit': pyaml.tuning_tools.orbit.OrbitConfigurationSchema,\n", - " 'pyaml.tuning_tools.orbit_response_matrix.OrbitResponseMatrix': pyaml.tuning_tools.orbit_response_matrix.OrbitResponseMatrixConfigurationSchema,\n", - " 'pyaml.tuning_tools.orbit_response_matrix_data.OrbitResponseMatrixData': pyaml.tuning_tools.orbit_response_matrix_data.OrbitResponseMatrixDataConfigurationSchema,\n", - " 'pyaml.tuning_tools.response_matrix_data.ResponseMatrixData': pyaml.tuning_tools.response_matrix_data.ResponseMatrixDataConfigurationSchema,\n", - " 'pyaml.tuning_tools.tune.Tune': pyaml.tuning_tools.tune.TuneConfigurationSchema,\n", - " 'pyaml.tuning_tools.tune_response_matrix.TuneResponseMatrix': pyaml.tuning_tools.tune_response_matrix.TuneResponseMatrixConfigurationSchema,\n", - " 'pyaml.tuning_tools.tuning_tool.TuningTool': pyaml.tuning_tools.tuning_tool.TuningToolConfigurationSchema,\n", - " 'pyaml.validation.validation_models.DynamicValidation': pyaml.validation.validation_models.DynamicValidationConfigurationSchema,\n", - " 'pyaml_cs_oa.catalog.Catalog': pyaml_cs_oa.catalog.CatalogConfigurationSchema,\n", - " 'pyaml_cs_oa.controlsystem.OphydAsyncControlSystem': pyaml_cs_oa.controlsystem.OphydAsyncControlSystemConfigurationSchema,\n", - " 'pyaml_cs_oa.dynamic_catalog.DynamicCatalog': pyaml_cs_oa.dynamic_catalog.DynamicCatalogConfigurationSchema,\n", - " 'pyaml_cs_oa.epicsR.EpicsR': pyaml_cs_oa.epicsR.EpicsRConfigurationSchema,\n", - " 'pyaml_cs_oa.epicsRW.EpicsRW': pyaml_cs_oa.epicsRW.EpicsRWConfigurationSchema,\n", - " 'pyaml_cs_oa.epicsW.EpicsW': pyaml_cs_oa.epicsW.EpicsWConfigurationSchema,\n", - " 'pyaml_cs_oa.float_signal.FloatSignalContainer': pyaml_cs_oa.float_signal.FloatSignalContainerConfigurationSchema,\n", - " 'pyaml_cs_oa.signal.OASignal': pyaml_cs_oa.signal.OASignalConfigurationSchema,\n", - " 'pyaml_cs_oa.static_catalog.StaticCatalog': pyaml_cs_oa.static_catalog.StaticCatalogConfigurationSchema,\n", - " 'pyaml_cs_oa.static_catalog_entry.StaticCatalogEntry': pyaml_cs_oa.static_catalog_entry.StaticCatalogEntryConfigurationSchema,\n", - " 'pyaml_cs_oa.tangoAtt.TangoAtt': pyaml_cs_oa.tangoAtt.TangoAttConfigurationSchema,\n", - " 'pyaml_cs_oa.types.EpicsConfigR': pyaml_cs_oa.types.EpicsConfigRConfigurationSchema,\n", - " 'pyaml_cs_oa.types.EpicsConfigRW': pyaml_cs_oa.types.EpicsConfigRWConfigurationSchema,\n", - " 'pyaml_cs_oa.types.EpicsConfigW': pyaml_cs_oa.types.EpicsConfigWConfigurationSchema,\n", - " 'pyaml_cs_oa.types.TangoConfigAtt': pyaml_cs_oa.types.TangoConfigAttConfigurationSchema,\n", - ")\n" - ] - } - ], + "outputs": [], "source": [ "from pyaml.validation import SchemaRegistry\n", "\n", "registry = SchemaRegistry()\n", - "registry.discover()\n", - "print(registry)" + "registry.discover()" ] }, { diff --git a/docs/source/how-to/configuration/use-configuration-schema.ipynb b/docs/source/how-to/configuration/use-configuration-schema.ipynb new file mode 100644 index 0000000..d13606b --- /dev/null +++ b/docs/source/how-to/configuration/use-configuration-schema.ipynb @@ -0,0 +1,387 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "33dda6ae", + "metadata": {}, + "source": [ + "# Generate Configuration Using Configuration Schemas\n", + "\n", + "This guide shows how to use `ConfigurationSchema` to create a configuration." + ] + }, + { + "cell_type": "markdown", + "id": "2eaa8240", + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "source": [ + "## Discover Schemas\n", + "\n", + "First create the registry and discover available schemas for the configuration." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e37b2c3b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SchemaRegistry(\n", + " 'pyaml.accelerator.Accelerator': pyaml.accelerator.AcceleratorConfigurationSchema,\n", + " 'pyaml.arrays.array.ArrayConfig': pyaml.arrays.array.ArrayConfigConfigurationSchema,\n", + " 'pyaml.arrays.bpm.BPM': pyaml.arrays.bpm.BPMConfigurationSchema,\n", + " 'pyaml.arrays.cfm_magnet.CombinedFunctionMagnet': pyaml.arrays.cfm_magnet.CombinedFunctionMagnetConfigurationSchema,\n", + " 'pyaml.arrays.element.Element': pyaml.arrays.element.ElementConfigurationSchema,\n", + " 'pyaml.arrays.magnet.Magnet': pyaml.arrays.magnet.MagnetConfigurationSchema,\n", + " 'pyaml.arrays.serialized_magnet.SerializedMagnets': pyaml.arrays.serialized_magnet.SerializedMagnetsConfigurationSchema,\n", + " 'pyaml.bpm.bpm.BPM': pyaml.bpm.bpm.BPMConfigurationSchema,\n", + " 'pyaml.common.element.Element': pyaml.common.element.ElementConfigurationSchema,\n", + " 'pyaml.common.holders.element_holder.ElementHolder': pyaml.common.holders.element_holder.ElementHolderConfigurationSchema,\n", + " 'pyaml.control.controlsystem.ControlSystem': pyaml.control.controlsystem.ControlSystemConfigurationSchema,\n", + " 'pyaml.control.deviceaccess.DeviceAccess': pyaml.control.deviceaccess.DeviceAccessConfigurationSchema,\n", + " 'pyaml.control.deviceaccesslist.DeviceAccessList': pyaml.control.deviceaccesslist.DeviceAccessListConfigurationSchema,\n", + " 'pyaml.diagnostics.atune_monitor.ABetatronTuneMonitor': pyaml.diagnostics.atune_monitor.ABetatronTuneMonitorConfigurationSchema,\n", + " 'pyaml.diagnostics.tune_monitor.BetatronTuneMonitor': pyaml.diagnostics.tune_monitor.BetatronTuneMonitorConfigurationSchema,\n", + " 'pyaml.lattice.attribute_linker.PyAtAttributeElementsLinker': pyaml.lattice.attribute_linker.PyAtAttributeElementsLinkerConfigurationSchema,\n", + " 'pyaml.lattice.lattice_elements_linker.LatticeElementsLinker': pyaml.lattice.lattice_elements_linker.LatticeElementsLinkerConfigurationSchema,\n", + " 'pyaml.lattice.lattice_elements_linker.LinkerConfigModel': pyaml.lattice.lattice_elements_linker.LinkerConfigModelConfigurationSchema,\n", + " 'pyaml.lattice.simulator.Simulator': pyaml.lattice.simulator.SimulatorConfigurationSchema,\n", + " 'pyaml.magnet.cfm_magnet.CombinedFunctionMagnet': pyaml.magnet.cfm_magnet.CombinedFunctionMagnetConfigurationSchema,\n", + " 'pyaml.magnet.csvcurve.CSVCurve': pyaml.magnet.csvcurve.CSVCurveConfigurationSchema,\n", + " 'pyaml.magnet.csvmatrix.CSVMatrix': pyaml.magnet.csvmatrix.CSVMatrixConfigurationSchema,\n", + " 'pyaml.magnet.curve.Curve': pyaml.magnet.curve.CurveConfigurationSchema,\n", + " 'pyaml.magnet.hcorrector.HCorrector': pyaml.magnet.hcorrector.HCorrectorConfigurationSchema,\n", + " 'pyaml.magnet.identity_cfm_model.IdentityCFMagnetModel': pyaml.magnet.identity_cfm_model.IdentityCFMagnetModelConfigurationSchema,\n", + " 'pyaml.magnet.identity_model.IdentityMagnetModel': pyaml.magnet.identity_model.IdentityMagnetModelConfigurationSchema,\n", + " 'pyaml.magnet.inline_curve.InlineCurve': pyaml.magnet.inline_curve.InlineCurveConfigurationSchema,\n", + " 'pyaml.magnet.inline_matrix.InlineMatrix': pyaml.magnet.inline_matrix.InlineMatrixConfigurationSchema,\n", + " 'pyaml.magnet.linear_cfm_model.LinearCFMagnetModel': pyaml.magnet.linear_cfm_model.LinearCFMagnetModelConfigurationSchema,\n", + " 'pyaml.magnet.linear_model.LinearMagnetModel': pyaml.magnet.linear_model.LinearMagnetModelConfigurationSchema,\n", + " 'pyaml.magnet.linear_serialized_model.LinearSerializedMagnetModel': pyaml.magnet.linear_serialized_model.LinearSerializedMagnetModelConfigurationSchema,\n", + " 'pyaml.magnet.magnet.Magnet': pyaml.magnet.magnet.MagnetConfigurationSchema,\n", + " 'pyaml.magnet.matrix.Matrix': pyaml.magnet.matrix.MatrixConfigurationSchema,\n", + " 'pyaml.magnet.model.MagnetModel': pyaml.magnet.model.MagnetModelConfigurationSchema,\n", + " 'pyaml.magnet.octupole.Octupole': pyaml.magnet.octupole.OctupoleConfigurationSchema,\n", + " 'pyaml.magnet.quadrupole.Quadrupole': pyaml.magnet.quadrupole.QuadrupoleConfigurationSchema,\n", + " 'pyaml.magnet.serialized_magnet.SerializedMagnets': pyaml.magnet.serialized_magnet.SerializedMagnetsConfigurationSchema,\n", + " 'pyaml.magnet.sextupole.Sextupole': pyaml.magnet.sextupole.SextupoleConfigurationSchema,\n", + " 'pyaml.magnet.skewoctu.SkewOctu': pyaml.magnet.skewoctu.SkewOctuConfigurationSchema,\n", + " 'pyaml.magnet.skewquad.SkewQuad': pyaml.magnet.skewquad.SkewQuadConfigurationSchema,\n", + " 'pyaml.magnet.skewsext.SkewSext': pyaml.magnet.skewsext.SkewSextConfigurationSchema,\n", + " 'pyaml.magnet.spline_model.SplineMagnetModel': pyaml.magnet.spline_model.SplineMagnetModelConfigurationSchema,\n", + " 'pyaml.magnet.vcorrector.VCorrector': pyaml.magnet.vcorrector.VCorrectorConfigurationSchema,\n", + " 'pyaml.rf.rf_plant.RFPlant': pyaml.rf.rf_plant.RFPlantConfigurationSchema,\n", + " 'pyaml.rf.rf_transmitter.RFTransmitter': pyaml.rf.rf_transmitter.RFTransmitterConfigurationSchema,\n", + " 'pyaml.tuning_tools.bba.BBA': pyaml.tuning_tools.bba.BBAConfigurationSchema,\n", + " 'pyaml.tuning_tools.bba2.BBA2': pyaml.tuning_tools.bba2.BBA2ConfigurationSchema,\n", + " 'pyaml.tuning_tools.chromaticity.Chromaticity': pyaml.tuning_tools.chromaticity.ChromaticityConfigurationSchema,\n", + " 'pyaml.tuning_tools.chromaticity_monitor.ChromaticityMonitor': pyaml.tuning_tools.chromaticity_monitor.ChromaticityMonitorConfigurationSchema,\n", + " 'pyaml.tuning_tools.chromaticity_response_matrix.ChromaticityResponseMatrix': pyaml.tuning_tools.chromaticity_response_matrix.ChromaticityResponseMatrixConfigurationSchema,\n", + " 'pyaml.tuning_tools.dispersion.Dispersion': pyaml.tuning_tools.dispersion.DispersionConfigurationSchema,\n", + " 'pyaml.tuning_tools.measurement_tool.MeasurementTool': pyaml.tuning_tools.measurement_tool.MeasurementToolConfigurationSchema,\n", + " 'pyaml.tuning_tools.orbit.Orbit': pyaml.tuning_tools.orbit.OrbitConfigurationSchema,\n", + " 'pyaml.tuning_tools.orbit_response_matrix.OrbitResponseMatrix': pyaml.tuning_tools.orbit_response_matrix.OrbitResponseMatrixConfigurationSchema,\n", + " 'pyaml.tuning_tools.orbit_response_matrix_data.OrbitResponseMatrixData': pyaml.tuning_tools.orbit_response_matrix_data.OrbitResponseMatrixDataConfigurationSchema,\n", + " 'pyaml.tuning_tools.response_matrix_data.ResponseMatrixData': pyaml.tuning_tools.response_matrix_data.ResponseMatrixDataConfigurationSchema,\n", + " 'pyaml.tuning_tools.tune.Tune': pyaml.tuning_tools.tune.TuneConfigurationSchema,\n", + " 'pyaml.tuning_tools.tune_response_matrix.TuneResponseMatrix': pyaml.tuning_tools.tune_response_matrix.TuneResponseMatrixConfigurationSchema,\n", + " 'pyaml.tuning_tools.tuning_tool.TuningTool': pyaml.tuning_tools.tuning_tool.TuningToolConfigurationSchema,\n", + " 'pyaml.validation.validation_models.DynamicValidation': pyaml.validation.validation_models.DynamicValidationConfigurationSchema,\n", + " 'pyaml_cs_oa.catalog.Catalog': pyaml_cs_oa.catalog.CatalogConfigurationSchema,\n", + " 'pyaml_cs_oa.controlsystem.OphydAsyncControlSystem': pyaml_cs_oa.controlsystem.OphydAsyncControlSystemConfigurationSchema,\n", + " 'pyaml_cs_oa.dynamic_catalog.DynamicCatalog': pyaml_cs_oa.dynamic_catalog.DynamicCatalogConfigurationSchema,\n", + " 'pyaml_cs_oa.epicsR.EpicsR': pyaml_cs_oa.epicsR.EpicsRConfigurationSchema,\n", + " 'pyaml_cs_oa.epicsRW.EpicsRW': pyaml_cs_oa.epicsRW.EpicsRWConfigurationSchema,\n", + " 'pyaml_cs_oa.epicsW.EpicsW': pyaml_cs_oa.epicsW.EpicsWConfigurationSchema,\n", + " 'pyaml_cs_oa.float_signal.FloatSignalContainer': pyaml_cs_oa.float_signal.FloatSignalContainerConfigurationSchema,\n", + " 'pyaml_cs_oa.signal.OASignal': pyaml_cs_oa.signal.OASignalConfigurationSchema,\n", + " 'pyaml_cs_oa.static_catalog.StaticCatalog': pyaml_cs_oa.static_catalog.StaticCatalogConfigurationSchema,\n", + " 'pyaml_cs_oa.static_catalog_entry.StaticCatalogEntry': pyaml_cs_oa.static_catalog_entry.StaticCatalogEntryConfigurationSchema,\n", + " 'pyaml_cs_oa.tangoAtt.TangoAtt': pyaml_cs_oa.tangoAtt.TangoAttConfigurationSchema,\n", + " 'pyaml_cs_oa.types.EpicsConfigR': pyaml_cs_oa.types.EpicsConfigRConfigurationSchema,\n", + " 'pyaml_cs_oa.types.EpicsConfigRW': pyaml_cs_oa.types.EpicsConfigRWConfigurationSchema,\n", + " 'pyaml_cs_oa.types.EpicsConfigW': pyaml_cs_oa.types.EpicsConfigWConfigurationSchema,\n", + " 'pyaml_cs_oa.types.TangoConfigAtt': pyaml_cs_oa.types.TangoConfigAttConfigurationSchema,\n", + " 'tango.pyaml.attribute.Attribute': tango.pyaml.attribute.AttributeConfigurationSchema,\n", + " 'tango.pyaml.attribute_list.AttributeList': tango.pyaml.attribute_list.AttributeListConfigurationSchema,\n", + " 'tango.pyaml.attribute_list_read_only.AttributeListReadOnly': tango.pyaml.attribute_list_read_only.AttributeListReadOnlyConfigurationSchema,\n", + " 'tango.pyaml.attribute_read_only.AttributeReadOnly': tango.pyaml.attribute_read_only.AttributeReadOnlyConfigurationSchema,\n", + " 'tango.pyaml.catalog.Catalog': tango.pyaml.catalog.CatalogConfigurationSchema,\n", + " 'tango.pyaml.controlsystem.TangoControlSystem': tango.pyaml.controlsystem.TangoControlSystemConfigurationSchema,\n", + " 'tango.pyaml.initializable_element.InitializableElement': tango.pyaml.initializable_element.InitializableElementConfigurationSchema,\n", + " 'tango.pyaml.multi_attribute.MultiAttribute': tango.pyaml.multi_attribute.MultiAttributeConfigurationSchema,\n", + " 'tango.pyaml.static_catalog.StaticCatalog': tango.pyaml.static_catalog.StaticCatalogConfigurationSchema,\n", + " 'tango.pyaml.static_catalog_entry.StaticCatalogEntry': tango.pyaml.static_catalog_entry.StaticCatalogEntryConfigurationSchema,\n", + " 'tango.pyaml.tango_catalog.TangoCatalog': tango.pyaml.tango_catalog.TangoCatalogConfigurationSchema,\n", + ")\n" + ] + } + ], + "source": [ + "from pyaml.validation import SchemaRegistry\n", + "\n", + "registry = SchemaRegistry()\n", + "registry.discover()\n", + "print(registry)" + ] + }, + { + "cell_type": "markdown", + "id": "b3926886", + "metadata": {}, + "source": [ + "## Create Configuration for Accelerator\n", + "\n", + "To create a configuration for an accelerator start by extracting the schema for it from the registry. You can see the required fields and their description using `describe()`.\n", + "\n", + "Unfortunately static type checking does not work if the schema is generated dynamically." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c3d02b59", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AcceleratorConfigurationSchema(\n", + " class_path: str — Fully qualified class path.\n", + " facility: str\n", + " machine: str\n", + " energy: float\n", + " alphac: float | None\n", + " harmonic_number: int | None\n", + " controls: list[pyaml.control.controlsystem.ControlSystemConfigurationSchema] | None\n", + " simulators: list[pyaml.lattice.simulator.SimulatorConfigurationSchema] | None\n", + " arrays: list[pyaml.arrays.array.ArrayConfigConfigurationSchema] | None\n", + " devices: list[pyaml.common.element.ElementConfigurationSchema] | None\n", + " data_folder: str | None\n", + " description: str | None\n", + ")\n" + ] + } + ], + "source": [ + "accelerator_schema = registry[\"pyaml.accelerator.Accelerator\"]\n", + "print(accelerator_schema.describe())" + ] + }, + { + "cell_type": "markdown", + "id": "a5a1ae55", + "metadata": {}, + "source": [ + "For the subschemas, you can list available subclasses that are available in the registry." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "0c2c9f7e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pyaml_cs_oa.controlsystem.OphydAsyncControlSystem → OphydAsyncControlSystemConfigurationSchema\n", + "tango.pyaml.controlsystem.TangoControlSystem → TangoControlSystemConfigurationSchema\n" + ] + } + ], + "source": [ + "control_system_schema = registry[\"pyaml.control.controlsystem.ControlSystem\"]\n", + "\n", + "control_system_options = {\n", + " class_path: schema\n", + " for class_path, schema in registry.items()\n", + " if schema is not control_system_schema\n", + " and (\n", + " issubclass(schema, control_system_schema)\n", + " or schema.is_virtual_subclass_of(control_system_schema)\n", + " )\n", + "}\n", + "\n", + "for class_path, schema in sorted(control_system_options.items()):\n", + " print(class_path, \"→\", schema.__name__)" + ] + }, + { + "cell_type": "markdown", + "id": "bcb2ce91", + "metadata": {}, + "source": [ + "You can list the required fields for them in the same way as before." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "a16219eb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TangoControlSystemConfigurationSchema(\n", + " class_path: str — Fully qualified class path.\n", + " name: str\n", + " tango_host: str | None\n", + " catalog: tango.pyaml.catalog.CatalogConfigurationSchema | None\n", + " debug_level: str | int | None\n", + " lazy_devices: bool\n", + " timeout_ms: int\n", + ")\n" + ] + } + ], + "source": [ + "tango_schema = registry[\"tango.pyaml.controlsystem.TangoControlSystem\"]\n", + "print(tango_schema.describe())" + ] + }, + { + "cell_type": "markdown", + "id": "6a8e0a65", + "metadata": {}, + "source": [ + "In this way you can program the configuration. Since `ConfigurationSchema` inherits from Pydantic `BaseModel` the configuration is validated for each object you create." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "f09e04bf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "class_path='tango.pyaml.controlsystem.TangoControlSystem' name='live' tango_host=None catalog=None debug_level=None lazy_devices=True timeout_ms=3000\n" + ] + } + ], + "source": [ + "live_mode = tango_schema(\n", + " class_path = \"tango.pyaml.controlsystem.TangoControlSystem\",\n", + " name = \"live\",\n", + " )\n", + "\n", + "print(type(live_mode))\n", + "print(live_mode)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "13fb5578", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "class_path='pyaml.accelerator.Accelerator' facility='pyaml_facility' machine='storage_ring' energy=1000000.0 alphac=None harmonic_number=None controls=[TangoControlSystemConfigurationSchema(class_path='tango.pyaml.controlsystem.TangoControlSystem', name='live', tango_host=None, catalog=None, debug_level=None, lazy_devices=True, timeout_ms=3000)] simulators=None arrays=None devices=None data_folder=None description=None\n" + ] + } + ], + "source": [ + "accelerator = accelerator_schema(\n", + " class_path='pyaml.accelerator.Accelerator',\n", + " facility = 'pyaml_facility',\n", + " machine = 'storage_ring',\n", + " energy = 1e6,\n", + " controls = [live_mode]\n", + " )\n", + "\n", + "print(type(accelerator))\n", + "print(accelerator)" + ] + }, + { + "cell_type": "markdown", + "id": "cfde8f36", + "metadata": {}, + "source": [ + "You have now created a Pydantic BaseModel which describes the configuration and can dump it to JSON using Pydantic functionality." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "ad78da2c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"class_path\": \"pyaml.accelerator.Accelerator\",\n", + " \"facility\": \"pyaml_facility\",\n", + " \"machine\": \"storage_ring\",\n", + " \"energy\": 1000000.0,\n", + " \"alphac\": null,\n", + " \"harmonic_number\": null,\n", + " \"controls\": [\n", + " {\n", + " \"class_path\": \"tango.pyaml.controlsystem.TangoControlSystem\",\n", + " \"name\": \"live\",\n", + " \"tango_host\": null,\n", + " \"catalog\": null,\n", + " \"debug_level\": null,\n", + " \"lazy_devices\": true,\n", + " \"timeout_ms\": 3000\n", + " }\n", + " ],\n", + " \"simulators\": null,\n", + " \"arrays\": null,\n", + " \"devices\": null,\n", + " \"data_folder\": null,\n", + " \"description\": null\n", + "}\n" + ] + } + ], + "source": [ + "print(accelerator.model_dump_json(indent=2))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pyaml-documentation", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/source/how-to/configuration/validate-configuration.ipynb b/docs/source/how-to/configuration/validate-configuration.ipynb index bca97a6..593f2f1 100644 --- a/docs/source/how-to/configuration/validate-configuration.ipynb +++ b/docs/source/how-to/configuration/validate-configuration.ipynb @@ -26,7 +26,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "fbbf800f", "metadata": {}, "outputs": [], @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "b2523c34", "metadata": {}, "outputs": [], @@ -72,7 +72,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "2e5df599", "metadata": {}, "outputs": [ @@ -110,7 +110,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "3308aba1", "metadata": {}, "outputs": [ diff --git a/docs/source/how-to/index.md b/docs/source/how-to/index.md index 43c7c02..b0ac3fd 100644 --- a/docs/source/how-to/index.md +++ b/docs/source/how-to/index.md @@ -25,6 +25,7 @@ configuration/create-configuration configuration/use-schema-registry configuration/validate-configuration configuration/generate-json-schema +configuration/use-configuration-schemas configuration/use-meta-configurator configuration/use-vscode-json-schema From f421e66c28376dc7de9d0cf18acbb8a6010a0b9a Mon Sep 17 00:00:00 2001 From: Teresia Olsson Date: Sun, 13 Sep 2026 20:47:33 +0200 Subject: [PATCH 9/9] Updated config creation docs. --- .../configuration/create-configuration.md | 2 +- .../use-configuration-schema.ipynb | 30 +++++++++++++++++-- docs/source/how-to/index.md | 2 +- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/docs/source/how-to/configuration/create-configuration.md b/docs/source/how-to/configuration/create-configuration.md index a8f24ee..00de849 100644 --- a/docs/source/how-to/configuration/create-configuration.md +++ b/docs/source/how-to/configuration/create-configuration.md @@ -4,7 +4,7 @@ The principles and syntax of the configuration are explained in more detail in [ There are several ways to create a configuration. It is recommended to test the different options and see which one you prefer: -- Create `ConfigurationSchema` objects and export as a dictionary or text file +- [Use ConfigurationSchema](./use-configuration-schema.ipynb) objects and export as a dictionary or text file - Use a JSON Schema in the [MetaConfigurator](./use-meta-configurator.md) diff --git a/docs/source/how-to/configuration/use-configuration-schema.ipynb b/docs/source/how-to/configuration/use-configuration-schema.ipynb index d13606b..277730a 100644 --- a/docs/source/how-to/configuration/use-configuration-schema.ipynb +++ b/docs/source/how-to/configuration/use-configuration-schema.ipynb @@ -318,14 +318,32 @@ "id": "cfde8f36", "metadata": {}, "source": [ - "You have now created a Pydantic BaseModel which describes the configuration and can dump it to JSON using Pydantic functionality." + "You have now created a Pydantic BaseModel which describes the configuration and can dump it to a dictionary or JSON using Pydantic functionality depending on what you prefer." ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "id": "ad78da2c", "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'class_path': 'pyaml.accelerator.Accelerator', 'facility': 'pyaml_facility', 'machine': 'storage_ring', 'energy': 1000000.0, 'alphac': None, 'harmonic_number': None, 'controls': [{'class_path': 'tango.pyaml.controlsystem.TangoControlSystem', 'name': 'live', 'tango_host': None, 'catalog': None, 'debug_level': None, 'lazy_devices': True, 'timeout_ms': 3000}], 'simulators': None, 'arrays': None, 'devices': None, 'data_folder': None, 'description': None}\n" + ] + } + ], + "source": [ + "print(accelerator.model_dump())" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "7e48e0e6", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -361,6 +379,14 @@ "source": [ "print(accelerator.model_dump_json(indent=2))" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3be782be", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/docs/source/how-to/index.md b/docs/source/how-to/index.md index b0ac3fd..7a075ab 100644 --- a/docs/source/how-to/index.md +++ b/docs/source/how-to/index.md @@ -25,7 +25,7 @@ configuration/create-configuration configuration/use-schema-registry configuration/validate-configuration configuration/generate-json-schema -configuration/use-configuration-schemas +configuration/use-configuration-schema configuration/use-meta-configurator configuration/use-vscode-json-schema